diff --git a/.github/workflows/backport-trigger.yml b/.github/workflows/backport-trigger.yml new file mode 100644 index 0000000..15dec70 --- /dev/null +++ b/.github/workflows/backport-trigger.yml @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2025 Upbound Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +name: Backport comment trigger + +on: issue_comment + +jobs: + backport: + runs-on: ubuntu-latest + if: github.event.issue.pull_request && startsWith(github.event.comment.body, '/backport') + steps: + - name: Extract Command + id: command + uses: xt0rted/slash-command-action@bf51f8f5f4ea3d58abc7eca58f77104182b23e88 # v2.0.0 + with: + command: backport + reaction: "true" + reaction-type: "eyes" + allow-edits: "false" + permission-level: write + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + + - name: Open Backport PR + uses: zeebe-io/backport-action@be567af183754f6a5d831ae90f648954763f17f5 # v3.1.0 diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index 65dfa60..2c2fd01 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Upbound Inc. +# +# SPDX-License-Identifier: Apache-2.0 + name: Backport on: @@ -8,8 +12,17 @@ on: # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ pull_request_target: types: [closed] - # See also commands.yml for the /backport triggered variant of this workflow. + # See also backport-trigger.yml for the /backport triggered variant of this workflow. jobs: - - backport: - - uses: upbound/uptest/.github/workflows/provider-backport.yml@main + open-pr: + runs-on: ubuntu-latest + if: github.event.pull_request.merged + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + + - name: Open Backport PR + uses: zeebe-io/backport-action@be567af183754f6a5d831ae90f648954763f17f5 # v3.1.0 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 91ba986..efb5156 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2025 Upbound Inc. +# +# SPDX-License-Identifier: Apache-2.0 + name: CI on: @@ -9,152 +13,154 @@ on: workflow_dispatch: {} env: - # Common versions - 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. - UPBOUND_MARKETPLACE_PUSH_ROBOT_USR: ${{ secrets.UPBOUND_MARKETPLACE_PUSH_ROBOT_USR }} + GO_VERSION: "1.23" + DOCKER_BUILDX_VERSION: 'v0.8.2' jobs: detect-noop: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest outputs: noop: ${{ steps.noop.outputs.should_skip }} steps: - name: Detect No-op Changes id: noop - uses: fkirc/skip-duplicate-actions@v5.3.0 + uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1 with: - github_token: ${{ secrets.GITHUB_TOKEN }} paths_ignore: '["**.md", "**.png", "**.jpg"]' do_not_skip: '["workflow_dispatch", "schedule", "push"]' report-breaking-changes: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' steps: - name: Checkout - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true - name: Get modified CRDs id: modified-crds - uses: tj-actions/changed-files@039afcd1024c210363c9d3fc8fd07e1f3fcf2867 # v35.9.3 + uses: tj-actions/changed-files@b2d17f51244a144849c6b37a3a6791b98a51d86f # v35.9.2 (breaks the 'Report native schema version changes' step on newer versions) with: files: | package/crds/** + - name: Report breaking CRD OpenAPI v3 schema changes if: steps.modified-crds.outputs.any_changed == 'true' env: MODIFIED_CRD_LIST: ${{ steps.modified-crds.outputs.all_changed_files }} run: | make crddiff - - name: Report native schema version changes - if: ${{ inputs.upjet-based-provider }} - run: | - make schema-version-diff lint: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' - steps: + - name: Cleanup Disk + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + large-packages: false + swap-storage: false + - name: Checkout - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true - name: Setup Go - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version: ${{ env.GO_VERSION }} - - name: Find the Go Build Cache - id: go - run: echo "cache=$(make go.cachedir)" >> $GITHUB_OUTPUT - - - name: Cache the Go Build Cache - uses: actions/cache@v3 - with: - path: ${{ steps.go.outputs.cache }} - key: ${{ runner.os }}-build-lint-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-build-lint- + - name: Find the Analysis Cache + id: analysis_cache + run: | + echo "analysis_cache=$HOME/.cache/golangci-lint" >> $GITHUB_OUTPUT && \ + echo "analysis_cache_key=$(make go.lint.analysiskey)" >> $GITHUB_OUTPUT && \ + echo "analysis_cache_key_int=$(make go.lint.analysiskey-interval)" >> $GITHUB_OUTPUT - - name: Cache Go Dependencies - uses: actions/cache@v3 + - name: Cache Linter Analysis + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4 + id: cache-analysis with: - path: .work/pkg - key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-pkg- + path: ${{ steps.analysis_cache.outputs.analysis_cache }} + key: ${{ steps.analysis_cache.outputs.analysis_cache_key }} + restore-keys: | + ${{ steps.analysis_cache.outputs.analysis_cache_key_int }} - name: Vendor Dependencies run: make vendor vendor.check - # We could run 'make lint' but we prefer this action because it leaves - # 'annotations' (i.e. it comments on PRs to point out linter violations). - name: Lint - uses: golangci/golangci-lint-action@v3 - with: - version: ${{ env.GOLANGCI_VERSION }} + env: + GOLANGCI_LINT_CACHE: ${{ steps.go_cache.outputs.analysis_cache }} + SKIP_LINTER_ANALYSIS: false + RUN_BUILDTAGGER: true + GOGC: "50" + run: make lint check-diff: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' - steps: + - name: Cleanup Disk + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + large-packages: false + swap-storage: false + - name: Checkout - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true - name: Setup Go - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version: ${{ env.GO_VERSION }} - name: Install goimports run: go install golang.org/x/tools/cmd/goimports - - name: Find the Go Build Cache - id: go - run: echo "cache=$(make go.cachedir)" >> $GITHUB_OUTPUT - - - name: Cache the Go Build Cache - uses: actions/cache@v3 - with: - path: ${{ steps.go.outputs.cache }} - key: ${{ runner.os }}-build-check-diff-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-build-check-diff- - - - name: Cache Go Dependencies - uses: actions/cache@v3 - with: - path: .work/pkg - key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-pkg- - - name: Vendor Dependencies run: make vendor vendor.check - name: Check Diff - run: make check-diff + id: check-diff + run: | + mkdir _output + make check-diff + env: + # check-diff depends on the generate Make target, and we would like + # to save a skipped resource list + SKIPPED_RESOURCES_CSV: ../_output/skipped_resources.csv + + - name: Show diff + if: failure() && steps.check-diff.outcome == 'failure' + run: git diff + + - name: Publish skipped resources CSV to Github + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + with: + name: skipped_resources + path: _output/skipped_resources.csv unit-tests: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' - steps: + - name: Cleanup Disk + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + large-packages: false + swap-storage: false + - name: Checkout - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true @@ -162,48 +168,29 @@ jobs: run: git fetch --prune --unshallow - name: Setup Go - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version: ${{ env.GO_VERSION }} - - name: Find the Go Build Cache - id: go - run: echo "cache=$(make go.cachedir)" >> $GITHUB_OUTPUT - - - name: Cache the Go Build Cache - uses: actions/cache@v3 - with: - path: ${{ steps.go.outputs.cache }} - key: ${{ runner.os }}-build-unit-tests-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-build-unit-tests- - - - name: Cache Go Dependencies - uses: actions/cache@v3 - with: - path: .work/pkg - key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-pkg- - - name: Vendor Dependencies run: make vendor vendor.check - name: Run Unit Tests run: make -j2 test - - name: Publish Unit Test Coverage - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3 - with: - flags: unittests - file: _output/tests/linux_amd64/coverage.txt - local-deploy: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: detect-noop if: needs.detect-noop.outputs.noop != 'true' - steps: + - name: Cleanup Disk + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + large-packages: false + swap-storage: false + - name: Checkout - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: submodules: true @@ -211,28 +198,10 @@ jobs: run: git fetch --prune --unshallow - name: Setup Go - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3 + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 with: go-version: ${{ env.GO_VERSION }} - - name: Find the Go Build Cache - id: go - run: echo "cache=$(make go.cachedir)" >> $GITHUB_OUTPUT - - - name: Cache the Go Build Cache - uses: actions/cache@v3 - with: - path: ${{ steps.go.outputs.cache }} - key: ${{ runner.os }}-build-unit-tests-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-build-unit-tests- - - - name: Cache Go Dependencies - uses: actions/cache@v3 - with: - path: .work/pkg - key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-pkg- - - name: Vendor Dependencies run: make vendor vendor.check @@ -240,24 +209,30 @@ jobs: run: make local-deploy publish-artifacts: - runs-on: ubuntu-22.04 - needs: detect-noop + runs-on: ubuntu-24.04 + needs: + - detect-noop + - report-breaking-changes + - lint + - check-diff + - unit-tests + - local-deploy if: needs.detect-noop.outputs.noop != 'true' steps: - name: Setup QEMU - uses: docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # v2 + uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3 with: platforms: all - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 with: version: ${{ env.DOCKER_BUILDX_VERSION }} install: true - name: Login to Upbound - uses: docker/login-action@v2 + uses: docker/login-action@v3 if: env.UPBOUND_MARKETPLACE_PUSH_ROBOT_USR != '' with: registry: xpkg.upbound.io @@ -265,7 +240,7 @@ jobs: password: ${{ secrets.UPBOUND_MARKETPLACE_PUSH_ROBOT_PSW }} - name: Checkout - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 #v3 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 with: submodules: true @@ -273,7 +248,7 @@ jobs: run: git fetch --prune --unshallow - name: Setup Go - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3 + uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5 with: go-version: ${{ env.GO_VERSION }} @@ -282,14 +257,14 @@ jobs: run: echo "cache=$(make go.cachedir)" >> $GITHUB_OUTPUT - name: Cache the Go Build Cache - uses: actions/cache@v3 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4 with: path: ${{ steps.go.outputs.cache }} key: ${{ runner.os }}-build-publish-artifacts-${{ hashFiles('**/go.sum') }} restore-keys: ${{ runner.os }}-build-publish-artifacts- - name: Cache Go Dependencies - uses: actions/cache@v3 + uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4 with: path: .work/pkg key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} @@ -306,10 +281,11 @@ jobs: BUILD_ARGS: "--load" - name: Upload Artifacts to GitHub - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 with: name: output path: _output/** - name: Publish Artifacts + if: env.UPBOUND_MARKETPLACE_PUSH_ROBOT_USR != '' run: make publish BRANCH_NAME=${GITHUB_REF##*/} diff --git a/.github/workflows/commands.yml b/.github/workflows/commands.yml deleted file mode 100644 index cbbd0db..0000000 --- a/.github/workflows/commands.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: Comment Commands - -on: issue_comment - -jobs: - comment-commands: - uses: upbound/uptest/.github/workflows/provider-commands.yml@main diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml deleted file mode 100644 index 64799ef..0000000 --- a/.github/workflows/e2e.yaml +++ /dev/null @@ -1,14 +0,0 @@ -name: End to End Testing - -on: - issue_comment: - types: [created] - -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/.github/workflows/tag.yaml b/.github/workflows/tag.yaml index 2a93895..631b5e3 100644 --- a/.github/workflows/tag.yaml +++ b/.github/workflows/tag.yaml @@ -1,7 +1,11 @@ +# SPDX-FileCopyrightText: 2025 Upbound Inc. +# +# SPDX-License-Identifier: Apache-2.0 + name: Tag on: - workflow_dispatch: + workflow_dispatch: inputs: version: description: 'Release version (e.g. v0.1.0)' @@ -11,8 +15,16 @@ on: required: true jobs: - tag: - uses: upbound/uptest/.github/workflows/provider-tag.yml@main - with: - version: ${{ github.event.inputs.version }} - message: ${{ github.event.inputs.message }} + create-tag: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Create Tag + uses: negz/create-tag@39bae1e0932567a58c20dea5a1a0d18358503320 # v1 + with: + version: ${{ github.event.inputs.version }} + message: ${{ github.event.inputs.message }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/uptest-trigger.yaml b/.github/workflows/uptest-trigger.yaml new file mode 100644 index 0000000..56d015e --- /dev/null +++ b/.github/workflows/uptest-trigger.yaml @@ -0,0 +1,180 @@ +# SPDX-FileCopyrightText: 2025 Upbound Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +name: End to End Testing + +on: + issue_comment: + types: [created] + +env: + GO_VERSION: "1.23" + +jobs: + debug: + runs-on: ubuntu-latest + steps: + - name: Debug + run: | + echo "Trigger keyword: '/test-examples'" + echo "Go version: ${{ env.GO_VERSION }}" + echo "github.event.comment.author_association: ${{ github.event.comment.author_association }}" + + get-example-list: + if: ${{ (github.event.comment.author_association == 'OWNER' || github.event.comment.author_association == 'MEMBER') && + github.event.issue.pull_request && + contains(github.event.comment.body, '/test-examples' ) }} + runs-on: ubuntu-latest + outputs: + example_list: ${{ steps.get-example-list-name.outputs.example-list }} + example_hash: ${{ steps.get-example-list-name.outputs.example-hash }} + + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + submodules: true + + - name: Checkout PR + id: checkout-pr + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr checkout ${{ github.event.issue.number }} + git submodule update --init --recursive + OUTPUT=$(git log -1 --format='%H') + echo "commit-sha=$OUTPUT" >> $GITHUB_OUTPUT + + - name: Prepare The Example List + env: + COMMENT: ${{ github.event.comment.body }} + id: get-example-list-name + run: | + PATHS=$(echo $COMMENT | sed 's/^.*\/test-examples="//g' | cut -d '"' -f 1 | sed 's/,/ /g') + EXAMPLE_LIST="" + for P in $PATHS; do EXAMPLE_LIST="${EXAMPLE_LIST},$(find $P -name '*.yaml' | tr '\n' ',')"; done + + sudo apt-get -y install coreutils + COUNT=$(echo ${EXAMPLE_LIST:1} | grep -o ".yaml" | wc -l) + if [ $COUNT -gt 1 ]; then EXAMPLE_HASH=$(echo ${EXAMPLE_LIST} | md5sum | cut -f1 -d" "); else EXAMPLE_HASH=$(echo ${EXAMPLE_LIST:1} | sed 's/.$//'); fi + + echo "Examples: ${EXAMPLE_LIST:1}" + echo "Example Hash: ${EXAMPLE_HASH}" + + echo "example-list=${EXAMPLE_LIST:1}" >> $GITHUB_OUTPUT + echo "example-hash=${EXAMPLE_HASH}" >> $GITHUB_OUTPUT + + - name: Create Pending Status Check + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh api \ + --method POST \ + -H "Accept: application/vnd.github+json" \ + /repos/${{ github.repository }}/statuses/${{ steps.checkout-pr.outputs.commit-sha }} \ + -f state='pending' \ + -f target_url='https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' \ + -f description='Running...' \ + -f context="Uptest-${{ steps.get-example-list-name.outputs.example-hash }}" + + uptest: + if: ${{ (github.event.comment.author_association == 'OWNER' || github.event.comment.author_association == 'MEMBER') && + github.event.issue.pull_request && + contains(github.event.comment.body, '/test-examples' ) }} + runs-on: ubuntu-latest + needs: get-example-list + + steps: + - name: Cleanup Disk + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + large-packages: false + swap-storage: false + + - name: Setup QEMU + uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 + with: + platforms: all + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + submodules: true + + - name: Setup Go + uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # v5.1.0 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Checkout PR + id: checkout-pr + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr checkout ${{ github.event.issue.number }} + git submodule update --init --recursive + OUTPUT=$(git log -1 --format='%H') + echo "commit-sha=$OUTPUT" >> $GITHUB_OUTPUT + + - name: Vendor Dependencies + run: make vendor vendor.check + + - name: Run Uptest + id: run-uptest + env: + UPTEST_CLOUD_CREDENTIALS: ${{ secrets.UPTEST_CLOUD_CREDENTIALS }} + UPTEST_EXAMPLE_LIST: ${{ needs.get-example-list.outputs.example_list }} + UPTEST_TEST_DIR: ./_output/controlplane-dump + UPTEST_DATASOURCE_PATH: .work/uptest-datasource.yaml + UPTEST_UPDATE_PARAMETER: "" + run: | + mkdir -p .work && echo "${{ secrets.UPTEST_DATASOURCE }}" > .work/uptest-datasource.yaml + make e2e + + - name: Create Successful Status Check + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + EXAMPLE_HASH: ${{ needs.get-example-list.outputs.example_hash }} + run: | + gh api \ + --method POST \ + -H "Accept: application/vnd.github+json" \ + /repos/${{ github.repository }}/statuses/${{ steps.checkout-pr.outputs.commit-sha }} \ + -f state='success' \ + -f target_url='https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' \ + -f description='Passed' \ + -f context="Uptest-${EXAMPLE_HASH}" + + - name: Collect Cluster Dump + if: always() + run: | + make controlplane.dump + + - name: Upload Cluster Dump + if: always() + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + with: + name: controlplane-dump + path: ./_output/controlplane-dump + + - name: Cleanup + if: always() + run: | + eval $(make --no-print-directory build.vars) + ${KUBECTL} delete managed --all || true + + - name: Create Unsuccessful Status Check + if: failure() + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + EXAMPLE_HASH: ${{ needs.get-example-list.outputs.example_hash }} + run: | + gh api \ + --method POST \ + -H "Accept: application/vnd.github+json" \ + /repos/${{ github.repository }}/statuses/${{ steps.checkout-pr.outputs.commit-sha }} \ + -f state='failure' \ + -f target_url='https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}' \ + -f description='Failed' \ + -f context="Uptest-${EXAMPLE_HASH}" diff --git a/.golangci.yml b/.golangci.yml index b3bf8a9..ddc9039 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,12 +1,14 @@ +# SPDX-FileCopyrightText: 2025 Upbound Inc. +# +# SPDX-License-Identifier: Apache-2.0 + run: timeout: 10m - skip-files: - - "zz_generated\\..+\\.go$" - output: # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" - format: colored-line-number + formats: + - format: colored-line-number linters-settings: errcheck: @@ -18,33 +20,31 @@ linters-settings: # default is false: such cases aren't reported by default. check-blank: false - # [deprecated] comma-separated list of pairs of the form pkg:regex - # the regex is used to ignore names within pkg. (default "fmt:.*"). - # see https://github.com/kisielk/errcheck#the-deprecated-method for details - ignore: fmt:.*,io/ioutil:^Read.* + exclude-functions: + - io/ioutil.ReadFile + - io/ioutil.ReadDir + - io/ioutil.ReadAll govet: # report about shadowed variables check-shadowing: false + revive: + # confidence for issues, default is 0.8 + confidence: 0.8 + gofmt: # simplify code: gofmt with `-s` option, true by default simplify: true -# gci: -# custom-order: true -# sections: -# - standard -# - default -# - prefix(github.com/upbound/provider-datadog) + goimports: + # put imports beginning with prefix after 3rd-party packages; + # it's a comma-separated list of prefixes + local-prefixes: github.com/upbound/provider-datadog gocyclo: # minimal code complexity to report, 30 by default (but we recommend 10-20) - min-complexity: 20 - - maligned: - # print struct with more effective memory layout or not, false by default - suggest-new: true + min-complexity: 10 dupl: # tokens count to trigger issue, 150 by default @@ -60,13 +60,6 @@ linters-settings: # tab width in spaces. Default to 1. tab-width: 1 - unused: - # treat code as a program (not a library) and report unused exported identifiers; default is false. - # XXX: if you enable this setting, unused will report a lot of false-positives in text editors: - # if it's called for subdir of a project it can't find funcs usages. All text editor integrations - # with golangci-lint call it on a directory with the changed file. - check-exported: false - unparam: # Inspect exported functions, default is false. Set to true if no external program/library imports your code. # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: @@ -100,48 +93,31 @@ 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 - goconst - # - gci + - goimports - gofmt # We enable this as well as goimports for its simplify mode. + - gosimple - prealloc - revive + - staticcheck - unconvert + - unused - 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 - unused fast: false - issues: + exclude-files: + - "zz_\\..+\\.go$" # Excluding configuration per-path and per-linter exclude-rules: # Exclude some linters from running on tests files. @@ -165,36 +141,31 @@ issues: # rather than using a pointer. - text: "(hugeParam|rangeValCopy):" linters: - - gocritic + - gocritic # This "TestMain should call os.Exit to set exit code" warning is not clever # enough to notice that we call a helper method that calls os.Exit. - text: "SA3000:" linters: - - staticcheck + - staticcheck - text: "k8s.io/api/core/v1" linters: - - goimports + - goimports # This is a "potential hardcoded credentials" warning. It's triggered by # any variable with 'secret' in the same, and thus hits a lot of false # positives in Kubernetes land where a Secret is an object type. - text: "G101:" linters: - - gosec - - gas + - gosec + - gas # This is an 'errors unhandled' warning that duplicates errcheck. - text: "G104:" linters: - - gosec - - gas - - # Some k8s dependencies do not have JSON tags on all fields in structs. - - path: k8s.io/ - linters: - - musttag + - gosec + - gas # Independently from option `exclude` we use default exclude patterns, # it can be disabled by this option. To list all diff --git a/Makefile b/Makefile index b282192..6413ac5 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,26 @@ # ==================================================================================== # Setup Project -PROJECT_NAME ?= provider-datadog +PROVIDER_NAME := datadog +PROJECT_NAME ?= provider-$(PROVIDER_NAME) PROJECT_REPO ?= github.com/upbound/$(PROJECT_NAME) export TERRAFORM_VERSION ?= 1.5.5 +# Do not allow a version of terraform greater than 1.5.x, due to versions 1.6+ being +# licensed under BSL, which is not permitted. +TERRAFORM_VERSION_VALID := $(shell [ "$(TERRAFORM_VERSION)" = "`printf "$(TERRAFORM_VERSION)\n1.6" | sort -V | head -n1`" ] && echo 1 || echo 0) + +export TERRAFORM_PROVIDER_VERSION ?= 3.66.0 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-datadog_v3.37.0 export TERRAFORM_DOCS_PATH ?= docs/resources +export PROVIDER_NAME PLATFORMS ?= linux_amd64 linux_arm64 +export PROJECT_NAME := $(PROJECT_NAME) + # -include will silently skip missing files, which allows us # to load those files with a target in the Makefile. If only # "include" was used, the make command would fail and refuse @@ -39,8 +44,10 @@ NPROCS ?= 1 # to half the number of CPU cores. GO_TEST_PARALLEL := $(shell echo $$(( $(NPROCS) / 2 ))) -GO_REQUIRED_VERSION ?= 1.21.2 -GOLANGCILINT_VERSION ?= 1.54.2 +GO_REQUIRED_VERSION ?= 1.23 +# GOLANGCILINT_VERSION is inherited from build submodule by default. +# Uncomment below if you need to override the version. +# GOLANGCILINT_VERSION ?= 1.54.0 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 @@ -49,10 +56,12 @@ GO_SUBDIRS += cmd internal apis # ==================================================================================== # Setup Kubernetes tools -KIND_VERSION = v0.20.0 -UP_VERSION = v0.37.0 +KIND_VERSION = v0.25.0 +UP_VERSION = v0.28.0 UP_CHANNEL = stable -UPTEST_VERSION = v0.13.0 +UPTEST_VERSION = v1.1.2 +CRDDIFF_VERSION = v0.12.1 + -include build/makelib/k8s_tools.mk # ==================================================================================== @@ -139,6 +148,16 @@ generate.init: $(TERRAFORM_PROVIDER_SCHEMA) pull-docs go.cachedir: @go env GOCACHE +go.mod.cachedir: + @go env GOMODCACHE + +go.lint.analysiskey-interval: + @# cache is invalidated at least every 7 days + @echo -n golangci-lint.cache-$$(( $$(date +%s) / (7 * 86400) ))- + +go.lint.analysiskey: + @echo $$(make go.lint.analysiskey-interval)$$(sha1sum go.sum | cut -d' ' -f1) + # Generate a coverage report for cobertura applying exclusions on # - generated file cobertura: @@ -168,21 +187,11 @@ 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. -# - 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] -# aws_access_key_id = REDACTED -# aws_secret_access_key = REDACTED' -# PEER='[default] -# aws_access_key_id = REDACTED -# aws_secret_access_key = REDACTED' -# The associated `ProviderConfig`s will be named as `default` and `peer`. -# - UPTEST_DATASOURCE_PATH (optional), see https://github.com/upbound/uptest#injecting-dynamic-values-and-datasource -uptest: $(UPTEST) $(KUBECTL) $(KUTTL) +# - UPTEST_CLOUD_CREDENTIALS (optional), cloud credentials for the provider being tested +# - UPTEST_DATASOURCE_PATH (optional), see https://github.com/crossplane/uptest#injecting-dynamic-values-and-datasource +uptest: $(UPTEST) $(KUBECTL) $(CHAINSAW) $(CROSSPLANE_CLI) @$(INFO) running automated tests - @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) + @KUBECTL=$(KUBECTL) CHAINSAW=$(CHAINSAW) CROSSPLANE_CLI=$(CROSSPLANE_CLI) 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) diff --git a/apis/datadog/v1alpha1/zz_apikey_terraformed.go b/apis/access/v1beta1/zz_apikey_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_apikey_terraformed.go rename to apis/access/v1beta1/zz_apikey_terraformed.go index 327aac8..d5dd6c8 100755 --- a/apis/datadog/v1alpha1/zz_apikey_terraformed.go +++ b/apis/access/v1beta1/zz_apikey_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_apikey_types.go b/apis/access/v1beta1/zz_apikey_types.go similarity index 76% rename from apis/datadog/v1alpha1/zz_apikey_types.go rename to apis/access/v1beta1/zz_apikey_types.go index 77af9e9..ec853ee 100755 --- a/apis/datadog/v1alpha1/zz_apikey_types.go +++ b/apis/access/v1beta1/zz_apikey_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -22,6 +18,10 @@ type APIKeyInitParameters struct { // (String) Name for API Key. // Name for API Key. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // settings/remote-config. + // Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`. + RemoteConfigReadEnabled *bool `json:"remoteConfigReadEnabled,omitempty" tf:"remote_config_read_enabled,omitempty"` } type APIKeyObservation struct { @@ -32,6 +32,10 @@ type APIKeyObservation struct { // (String) Name for API Key. // Name for API Key. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // settings/remote-config. + // Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`. + RemoteConfigReadEnabled *bool `json:"remoteConfigReadEnabled,omitempty" tf:"remote_config_read_enabled,omitempty"` } type APIKeyParameters struct { @@ -40,6 +44,11 @@ type APIKeyParameters struct { // Name for API Key. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // settings/remote-config. + // Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`. + // +kubebuilder:validation:Optional + RemoteConfigReadEnabled *bool `json:"remoteConfigReadEnabled,omitempty" tf:"remote_config_read_enabled,omitempty"` } // APIKeySpec defines the desired state of APIKey @@ -69,9 +78,9 @@ type APIKeyStatus struct { // +kubebuilder:subresource:status // +kubebuilder:storageversion -// 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" +// 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. Import functionality for this resource is deprecated and will be removed in a future release with prior notice. Securely store your API keys using a secret management system or use this resource to create and manage new API keys. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_appkey_terraformed.go b/apis/access/v1beta1/zz_applicationkey_terraformed.go similarity index 69% rename from apis/datadog/v1alpha1/zz_appkey_terraformed.go rename to apis/access/v1beta1/zz_applicationkey_terraformed.go index ed2db93..f85cf09 100755 --- a/apis/datadog/v1alpha1/zz_appkey_terraformed.go +++ b/apis/access/v1beta1/zz_applicationkey_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this AppKey -func (mg *AppKey) GetTerraformResourceType() string { +// GetTerraformResourceType returns Terraform resource type for this ApplicationKey +func (mg *ApplicationKey) GetTerraformResourceType() string { return "datadog_application_key" } -// GetConnectionDetailsMapping for this AppKey -func (tr *AppKey) GetConnectionDetailsMapping() map[string]string { +// GetConnectionDetailsMapping for this ApplicationKey +func (tr *ApplicationKey) GetConnectionDetailsMapping() map[string]string { return map[string]string{"key": "status.atProvider.key"} } -// GetObservation of this AppKey -func (tr *AppKey) GetObservation() (map[string]any, error) { +// GetObservation of this ApplicationKey +func (tr *ApplicationKey) GetObservation() (map[string]any, error) { o, err := json.TFParser.Marshal(tr.Status.AtProvider) if err != nil { return nil, err @@ -38,8 +34,8 @@ func (tr *AppKey) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this AppKey -func (tr *AppKey) SetObservation(obs map[string]any) error { +// SetObservation for this ApplicationKey +func (tr *ApplicationKey) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *AppKey) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this AppKey -func (tr *AppKey) GetID() string { +// GetID returns ID of underlying Terraform resource of this ApplicationKey +func (tr *ApplicationKey) 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) { +// GetParameters of this ApplicationKey +func (tr *ApplicationKey) GetParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.ForProvider) if err != nil { return nil, err @@ -65,8 +61,8 @@ func (tr *AppKey) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this AppKey -func (tr *AppKey) SetParameters(params map[string]any) error { +// SetParameters for this ApplicationKey +func (tr *ApplicationKey) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *AppKey) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this AppKey -func (tr *AppKey) GetInitParameters() (map[string]any, error) { +// GetInitParameters of this ApplicationKey +func (tr *ApplicationKey) GetInitParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.InitProvider) if err != nil { return nil, err @@ -84,8 +80,8 @@ func (tr *AppKey) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this AppKey -func (tr *AppKey) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// GetInitParameters of this ApplicationKey +func (tr *ApplicationKey) 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()) @@ -114,10 +110,10 @@ func (tr *AppKey) GetMergedParameters(shouldMergeInitProvider bool) (map[string] return params, nil } -// LateInitialize this AppKey using its observed tfState. +// LateInitialize this ApplicationKey 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{} +func (tr *ApplicationKey) LateInitialize(attrs []byte) (bool, error) { + params := &ApplicationKeyParameters{} if err := json.TFParser.Unmarshal(attrs, params); err != nil { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } @@ -128,6 +124,6 @@ func (tr *AppKey) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AppKey) GetTerraformSchemaVersion() int { +func (tr *ApplicationKey) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/datadog/v1alpha1/zz_appkey_types.go b/apis/access/v1beta1/zz_applicationkey_types.go similarity index 50% rename from apis/datadog/v1alpha1/zz_appkey_types.go rename to apis/access/v1beta1/zz_applicationkey_types.go index cf3b1ec..23c5012 100755 --- a/apis/datadog/v1alpha1/zz_appkey_types.go +++ b/apis/access/v1beta1/zz_applicationkey_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,14 +13,19 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AppKeyInitParameters struct { +type ApplicationKeyInitParameters struct { // (String) Name for Application Key. // Name for Application Key. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // +listType=set + Scopes []*string `json:"scopes,omitempty" tf:"scopes,omitempty"` } -type AppKeyObservation struct { +type ApplicationKeyObservation struct { // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -32,20 +33,31 @@ type AppKeyObservation struct { // (String) Name for Application Key. // Name for Application Key. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // +listType=set + Scopes []*string `json:"scopes,omitempty" tf:"scopes,omitempty"` } -type AppKeyParameters struct { +type ApplicationKeyParameters struct { // (String) Name for Application Key. // Name for Application Key. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // +kubebuilder:validation:Optional + // +listType=set + Scopes []*string `json:"scopes,omitempty" tf:"scopes,omitempty"` } -// AppKeySpec defines the desired state of AppKey -type AppKeySpec struct { +// ApplicationKeySpec defines the desired state of ApplicationKey +type ApplicationKeySpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AppKeyParameters `json:"forProvider"` + ForProvider ApplicationKeyParameters `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 @@ -56,50 +68,50 @@ type AppKeySpec 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 AppKeyInitParameters `json:"initProvider,omitempty"` + InitProvider ApplicationKeyInitParameters `json:"initProvider,omitempty"` } -// AppKeyStatus defines the observed state of AppKey. -type AppKeyStatus struct { +// ApplicationKeyStatus defines the observed state of ApplicationKey. +type ApplicationKeyStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AppKeyObservation `json:"atProvider,omitempty"` + AtProvider ApplicationKeyObservation `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" +// ApplicationKey is the Schema for the ApplicationKeys API. Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys. Import functionality for this resource is deprecated and will be removed in a future release with prior notice. Securely store your application keys using a secret management system or use this resource to create and manage new application keys. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type ApplicationKey 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"` + Spec ApplicationKeySpec `json:"spec"` + Status ApplicationKeyStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AppKeyList contains a list of AppKeys -type AppKeyList struct { +// ApplicationKeyList contains a list of ApplicationKeys +type ApplicationKeyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AppKey `json:"items"` + Items []ApplicationKey `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) + ApplicationKey_Kind = "ApplicationKey" + ApplicationKey_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ApplicationKey_Kind}.String() + ApplicationKey_KindAPIVersion = ApplicationKey_Kind + "." + CRDGroupVersion.String() + ApplicationKey_GroupVersionKind = CRDGroupVersion.WithKind(ApplicationKey_Kind) ) func init() { - SchemeBuilder.Register(&AppKey{}, &AppKeyList{}) + SchemeBuilder.Register(&ApplicationKey{}, &ApplicationKeyList{}) } diff --git a/apis/access/v1beta1/zz_generated.conversion_hubs.go b/apis/access/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..2d22e69 --- /dev/null +++ b/apis/access/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,13 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *APIKey) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ApplicationKey) Hub() {} diff --git a/apis/access/v1beta1/zz_generated.deepcopy.go b/apis/access/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..5e5bee9 --- /dev/null +++ b/apis/access/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,379 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 + } + if in.RemoteConfigReadEnabled != nil { + in, out := &in.RemoteConfigReadEnabled, &out.RemoteConfigReadEnabled + *out = new(bool) + **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 + } + if in.RemoteConfigReadEnabled != nil { + in, out := &in.RemoteConfigReadEnabled, &out.RemoteConfigReadEnabled + *out = new(bool) + **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 + } + if in.RemoteConfigReadEnabled != nil { + in, out := &in.RemoteConfigReadEnabled, &out.RemoteConfigReadEnabled + *out = new(bool) + **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 *ApplicationKey) DeepCopyInto(out *ApplicationKey) { + *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 ApplicationKey. +func (in *ApplicationKey) DeepCopy() *ApplicationKey { + if in == nil { + return nil + } + out := new(ApplicationKey) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ApplicationKey) 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 *ApplicationKeyInitParameters) DeepCopyInto(out *ApplicationKeyInitParameters) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *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 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 *ApplicationKeyList) DeepCopyInto(out *ApplicationKeyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ApplicationKey, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationKeyList. +func (in *ApplicationKeyList) DeepCopy() *ApplicationKeyList { + if in == nil { + return nil + } + out := new(ApplicationKeyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ApplicationKeyList) 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 *ApplicationKeyObservation) DeepCopyInto(out *ApplicationKeyObservation) { + *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.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *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 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 + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *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 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 *ApplicationKeySpec) DeepCopyInto(out *ApplicationKeySpec) { + *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 ApplicationKeySpec. +func (in *ApplicationKeySpec) DeepCopy() *ApplicationKeySpec { + if in == nil { + return nil + } + out := new(ApplicationKeySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationKeyStatus) DeepCopyInto(out *ApplicationKeyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationKeyStatus. +func (in *ApplicationKeyStatus) DeepCopy() *ApplicationKeyStatus { + if in == nil { + return nil + } + out := new(ApplicationKeyStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/access/v1beta1/zz_generated.managed.go b/apis/access/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..2eb6c8d --- /dev/null +++ b/apis/access/v1beta1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +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 ApplicationKey. +func (mg *ApplicationKey) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ApplicationKey. +func (mg *ApplicationKey) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ApplicationKey. +func (mg *ApplicationKey) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ApplicationKey. +func (mg *ApplicationKey) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ApplicationKey. +func (mg *ApplicationKey) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ApplicationKey. +func (mg *ApplicationKey) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ApplicationKey. +func (mg *ApplicationKey) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ApplicationKey. +func (mg *ApplicationKey) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ApplicationKey. +func (mg *ApplicationKey) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ApplicationKey. +func (mg *ApplicationKey) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ApplicationKey. +func (mg *ApplicationKey) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ApplicationKey. +func (mg *ApplicationKey) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/cloud/v1alpha1/zz_generated.managedlist.go b/apis/access/v1beta1/zz_generated.managedlist.go similarity index 61% rename from apis/cloud/v1alpha1/zz_generated.managedlist.go rename to apis/access/v1beta1/zz_generated.managedlist.go index 9c12db3..c4adb66 100644 --- a/apis/cloud/v1alpha1/zz_generated.managedlist.go +++ b/apis/access/v1beta1/zz_generated.managedlist.go @@ -3,12 +3,12 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" -// GetItems of this ConfigurationRuleList. -func (l *ConfigurationRuleList) GetItems() []resource.Managed { +// 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] @@ -16,8 +16,8 @@ func (l *ConfigurationRuleList) GetItems() []resource.Managed { return items } -// GetItems of this WorkloadSecurityAgentRuleList. -func (l *WorkloadSecurityAgentRuleList) GetItems() []resource.Managed { +// GetItems of this ApplicationKeyList. +func (l *ApplicationKeyList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) for i := range l.Items { items[i] = &l.Items[i] diff --git a/apis/datadog/v1alpha1/zz_groupversion_info.go b/apis/access/v1beta1/zz_groupversion_info.go similarity index 72% rename from apis/datadog/v1alpha1/zz_groupversion_info.go rename to apis/access/v1beta1/zz_groupversion_info.go index 9b3459b..58f792d 100755 --- a/apis/datadog/v1alpha1/zz_groupversion_info.go +++ b/apis/access/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -9,9 +5,9 @@ Copyright 2022 Upbound Inc. // Code generated by upjet. DO NOT EDIT. // +kubebuilder:object:generate=true -// +groupName=datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +groupName=access.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -20,8 +16,8 @@ import ( // Package type metadata. const ( - CRDGroup = "datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDGroup = "access.datadog.upbound.io" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/apm/v1alpha1/zz_generated.conversion_hubs.go b/apis/apm/v1beta1/zz_generated.conversion_hubs.go similarity index 63% rename from apis/apm/v1alpha1/zz_generated.conversion_hubs.go rename to apis/apm/v1beta1/zz_generated.conversion_hubs.go index 24c1f67..a841a39 100755 --- a/apis/apm/v1alpha1/zz_generated.conversion_hubs.go +++ b/apis/apm/v1beta1/zz_generated.conversion_hubs.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 // Hub marks this type as a conversion hub. func (tr *RetentionFilter) Hub() {} diff --git a/apis/apm/v1alpha1/zz_generated.deepcopy.go b/apis/apm/v1beta1/zz_generated.deepcopy.go similarity index 92% rename from apis/apm/v1alpha1/zz_generated.deepcopy.go rename to apis/apm/v1beta1/zz_generated.deepcopy.go index 8a3e138..0b57ffb 100644 --- a/apis/apm/v1alpha1/zz_generated.deepcopy.go +++ b/apis/apm/v1beta1/zz_generated.deepcopy.go @@ -6,9 +6,10 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( + "github.com/crossplane/crossplane-runtime/apis/common/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -127,6 +128,11 @@ func (in *RetentionFilterInitParameters) DeepCopyInto(out *RetentionFilterInitPa *out = new(string) **out = **in } + if in.TraceRate != nil { + in, out := &in.TraceRate, &out.TraceRate + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterInitParameters. @@ -204,6 +210,11 @@ func (in *RetentionFilterObservation) DeepCopyInto(out *RetentionFilterObservati *out = new(string) **out = **in } + if in.TraceRate != nil { + in, out := &in.TraceRate, &out.TraceRate + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterObservation. @@ -257,6 +268,18 @@ func (in *RetentionFilterOrderInitParameters) DeepCopyInto(out *RetentionFilterO } } } + if in.FilterIdsRefs != nil { + in, out := &in.FilterIdsRefs, &out.FilterIdsRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.FilterIdsSelector != nil { + in, out := &in.FilterIdsSelector, &out.FilterIdsSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderInitParameters. @@ -346,6 +369,18 @@ func (in *RetentionFilterOrderParameters) DeepCopyInto(out *RetentionFilterOrder } } } + if in.FilterIdsRefs != nil { + in, out := &in.FilterIdsRefs, &out.FilterIdsRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.FilterIdsSelector != nil { + in, out := &in.FilterIdsSelector, &out.FilterIdsSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterOrderParameters. @@ -421,6 +456,11 @@ func (in *RetentionFilterParameters) DeepCopyInto(out *RetentionFilterParameters *out = new(string) **out = **in } + if in.TraceRate != nil { + in, out := &in.TraceRate, &out.TraceRate + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionFilterParameters. diff --git a/apis/apm/v1alpha1/zz_generated.managed.go b/apis/apm/v1beta1/zz_generated.managed.go similarity index 99% rename from apis/apm/v1alpha1/zz_generated.managed.go rename to apis/apm/v1beta1/zz_generated.managed.go index 0de8e59..47436af 100644 --- a/apis/apm/v1alpha1/zz_generated.managed.go +++ b/apis/apm/v1beta1/zz_generated.managed.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" diff --git a/apis/apm/v1alpha1/zz_generated.managedlist.go b/apis/apm/v1beta1/zz_generated.managedlist.go similarity index 97% rename from apis/apm/v1alpha1/zz_generated.managedlist.go rename to apis/apm/v1beta1/zz_generated.managedlist.go index a638153..eeade8e 100644 --- a/apis/apm/v1alpha1/zz_generated.managedlist.go +++ b/apis/apm/v1beta1/zz_generated.managedlist.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" diff --git a/apis/apm/v1beta1/zz_generated.resolvers.go b/apis/apm/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..4950140 --- /dev/null +++ b/apis/apm/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,55 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this RetentionFilterOrder. +func (mg *RetentionFilterOrder) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var mrsp reference.MultiResolutionResponse + var err error + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.FilterIds), + Extract: reference.ExternalName(), + References: mg.Spec.ForProvider.FilterIdsRefs, + Selector: mg.Spec.ForProvider.FilterIdsSelector, + To: reference.To{ + List: &RetentionFilterList{}, + Managed: &RetentionFilter{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.FilterIds") + } + mg.Spec.ForProvider.FilterIds = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.ForProvider.FilterIdsRefs = mrsp.ResolvedReferences + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.InitProvider.FilterIds), + Extract: reference.ExternalName(), + References: mg.Spec.InitProvider.FilterIdsRefs, + Selector: mg.Spec.InitProvider.FilterIdsSelector, + To: reference.To{ + List: &RetentionFilterList{}, + Managed: &RetentionFilter{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.FilterIds") + } + mg.Spec.InitProvider.FilterIds = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.InitProvider.FilterIdsRefs = mrsp.ResolvedReferences + + return nil +} diff --git a/apis/apm/v1alpha1/zz_groupversion_info.go b/apis/apm/v1beta1/zz_groupversion_info.go similarity index 79% rename from apis/apm/v1alpha1/zz_groupversion_info.go rename to apis/apm/v1beta1/zz_groupversion_info.go index c4fd18c..c5f6993 100755 --- a/apis/apm/v1alpha1/zz_groupversion_info.go +++ b/apis/apm/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=apm.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "apm.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/apm/v1alpha1/zz_retentionfilter_terraformed.go b/apis/apm/v1beta1/zz_retentionfilter_terraformed.go similarity index 96% rename from apis/apm/v1alpha1/zz_retentionfilter_terraformed.go rename to apis/apm/v1beta1/zz_retentionfilter_terraformed.go index 09374ca..b887f9b 100755 --- a/apis/apm/v1alpha1/zz_retentionfilter_terraformed.go +++ b/apis/apm/v1beta1/zz_retentionfilter_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/apm/v1alpha1/zz_retentionfilter_types.go b/apis/apm/v1beta1/zz_retentionfilter_types.go similarity index 73% rename from apis/apm/v1alpha1/zz_retentionfilter_types.go rename to apis/apm/v1beta1/zz_retentionfilter_types.go index e9943c9..c7effc7 100755 --- a/apis/apm/v1alpha1/zz_retentionfilter_types.go +++ b/apis/apm/v1beta1/zz_retentionfilter_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,22 +15,22 @@ import ( type FilterInitParameters struct { - // following the span search syntax. Defaults to "*". - // The search query - following the span search syntax. Defaults to `"*"`. + // follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + // The search query - follow the span search syntax, use `AND` between tags and `\` to escape special characters, use nanosecond for duration. 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 `"*"`. + // follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + // The search query - follow the span search syntax, use `AND` between tags and `\` to escape special characters, use nanosecond for duration. 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 `"*"`. + // follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + // The search query - follow the span search syntax, use `AND` between tags and `\` to escape special characters, use nanosecond for duration. Defaults to `"*"`. // +kubebuilder:validation:Optional Query *string `json:"query,omitempty" tf:"query,omitempty"` } @@ -57,9 +53,13 @@ type RetentionFilterInitParameters struct { // 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. + // (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. Value must be between 0.00 and 1.00. + // 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. Value must be between 0.00 and 1.00. Rate *string `json:"rate,omitempty" tf:"rate,omitempty"` + + // (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + // Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + TraceRate *string `json:"traceRate,omitempty" tf:"trace_rate,omitempty"` } type RetentionFilterObservation struct { @@ -83,9 +83,13 @@ type RetentionFilterObservation struct { // 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. + // (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. Value must be between 0.00 and 1.00. + // 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. Value must be between 0.00 and 1.00. Rate *string `json:"rate,omitempty" tf:"rate,omitempty"` + + // (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + // Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + TraceRate *string `json:"traceRate,omitempty" tf:"trace_rate,omitempty"` } type RetentionFilterParameters struct { @@ -110,10 +114,15 @@ type RetentionFilterParameters struct { // +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. + // (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. Value must be between 0.00 and 1.00. + // 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. Value must be between 0.00 and 1.00. // +kubebuilder:validation:Optional Rate *string `json:"rate,omitempty" tf:"rate,omitempty"` + + // (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + // Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + // +kubebuilder:validation:Optional + TraceRate *string `json:"traceRate,omitempty" tf:"trace_rate,omitempty"` } // RetentionFilterSpec defines the desired state of RetentionFilter @@ -144,8 +153,8 @@ type RetentionFilterStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/apm/v1alpha1/zz_retentionfilterorder_terraformed.go b/apis/apm/v1beta1/zz_retentionfilterorder_terraformed.go similarity index 96% rename from apis/apm/v1alpha1/zz_retentionfilterorder_terraformed.go rename to apis/apm/v1beta1/zz_retentionfilterorder_terraformed.go index a4940d9..f2fa16c 100755 --- a/apis/apm/v1alpha1/zz_retentionfilterorder_terraformed.go +++ b/apis/apm/v1beta1/zz_retentionfilterorder_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/apm/v1alpha1/zz_retentionfilterorder_types.go b/apis/apm/v1beta1/zz_retentionfilterorder_types.go similarity index 80% rename from apis/apm/v1alpha1/zz_retentionfilterorder_types.go rename to apis/apm/v1beta1/zz_retentionfilterorder_types.go index 158876f..20b6762 100755 --- a/apis/apm/v1alpha1/zz_retentionfilterorder_types.go +++ b/apis/apm/v1beta1/zz_retentionfilterorder_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -21,7 +17,16 @@ 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/apm/v1beta1.RetentionFilter FilterIds []*string `json:"filterIds,omitempty" tf:"filter_ids,omitempty"` + + // References to RetentionFilter in apm to populate filterIds. + // +kubebuilder:validation:Optional + FilterIdsRefs []v1.Reference `json:"filterIdsRefs,omitempty" tf:"-"` + + // Selector for a list of RetentionFilter in apm to populate filterIds. + // +kubebuilder:validation:Optional + FilterIdsSelector *v1.Selector `json:"filterIdsSelector,omitempty" tf:"-"` } type RetentionFilterOrderObservation struct { @@ -38,8 +43,17 @@ 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/apm/v1beta1.RetentionFilter // +kubebuilder:validation:Optional FilterIds []*string `json:"filterIds,omitempty" tf:"filter_ids,omitempty"` + + // References to RetentionFilter in apm to populate filterIds. + // +kubebuilder:validation:Optional + FilterIdsRefs []v1.Reference `json:"filterIdsRefs,omitempty" tf:"-"` + + // Selector for a list of RetentionFilter in apm to populate filterIds. + // +kubebuilder:validation:Optional + FilterIdsSelector *v1.Selector `json:"filterIdsSelector,omitempty" tf:"-"` } // RetentionFilterOrderSpec defines the desired state of RetentionFilterOrder @@ -70,17 +84,16 @@ type RetentionFilterOrderStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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"` + Spec RetentionFilterOrderSpec `json:"spec"` + Status RetentionFilterOrderStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true diff --git a/apis/datadog/v1alpha1/zz_authnmapping_terraformed.go b/apis/authentication/v1beta1/zz_authnmapping_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_authnmapping_terraformed.go rename to apis/authentication/v1beta1/zz_authnmapping_terraformed.go index 3e364a1..115814a 100755 --- a/apis/datadog/v1alpha1/zz_authnmapping_terraformed.go +++ b/apis/authentication/v1beta1/zz_authnmapping_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_authnmapping_types.go b/apis/authentication/v1beta1/zz_authnmapping_types.go similarity index 71% rename from apis/datadog/v1alpha1/zz_authnmapping_types.go rename to apis/authentication/v1beta1/zz_authnmapping_types.go index 97b20fd..cb10374 100755 --- a/apis/datadog/v1alpha1/zz_authnmapping_types.go +++ b/apis/authentication/v1beta1/zz_authnmapping_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -23,10 +19,23 @@ type AuthnMappingInitParameters struct { // 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. + // (String) The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with team. + // The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with `team`. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Role Role *string `json:"role,omitempty" tf:"role,omitempty"` + // Reference to a Role in iam to populate role. + // +kubebuilder:validation:Optional + RoleRef *v1.Reference `json:"roleRef,omitempty" tf:"-"` + + // Selector for a Role in iam to populate role. + // +kubebuilder:validation:Optional + RoleSelector *v1.Selector `json:"roleSelector,omitempty" tf:"-"` + + // (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. + // The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`. + Team *string `json:"team,omitempty" tf:"team,omitempty"` + // (String) Identity provider value. // Identity provider value. Value *string `json:"value,omitempty" tf:"value,omitempty"` @@ -41,10 +50,14 @@ type AuthnMappingObservation struct { // 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. + // (String) The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with team. + // The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with `team`. Role *string `json:"role,omitempty" tf:"role,omitempty"` + // (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. + // The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`. + Team *string `json:"team,omitempty" tf:"team,omitempty"` + // (String) Identity provider value. // Identity provider value. Value *string `json:"value,omitempty" tf:"value,omitempty"` @@ -57,11 +70,25 @@ type AuthnMappingParameters struct { // +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. + // (String) The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with team. + // The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with `team`. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Role // +kubebuilder:validation:Optional Role *string `json:"role,omitempty" tf:"role,omitempty"` + // Reference to a Role in iam to populate role. + // +kubebuilder:validation:Optional + RoleRef *v1.Reference `json:"roleRef,omitempty" tf:"-"` + + // Selector for a Role in iam to populate role. + // +kubebuilder:validation:Optional + RoleSelector *v1.Selector `json:"roleSelector,omitempty" tf:"-"` + + // (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. + // The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`. + // +kubebuilder:validation:Optional + Team *string `json:"team,omitempty" tf:"team,omitempty"` + // (String) Identity provider value. // Identity provider value. // +kubebuilder:validation:Optional @@ -96,8 +123,8 @@ type AuthnMappingStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} @@ -105,7 +132,6 @@ 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"` diff --git a/apis/authentication/v1beta1/zz_generated.conversion_hubs.go b/apis/authentication/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..eb45d31 --- /dev/null +++ b/apis/authentication/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *AuthnMapping) Hub() {} diff --git a/apis/authentication/v1beta1/zz_generated.deepcopy.go b/apis/authentication/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..2052b3d --- /dev/null +++ b/apis/authentication/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,238 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *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.RoleRef != nil { + in, out := &in.RoleRef, &out.RoleRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.RoleSelector != nil { + in, out := &in.RoleSelector, &out.RoleSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.Team != nil { + in, out := &in.Team, &out.Team + *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.Team != nil { + in, out := &in.Team, &out.Team + *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.RoleRef != nil { + in, out := &in.RoleRef, &out.RoleRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.RoleSelector != nil { + in, out := &in.RoleSelector, &out.RoleSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.Team != nil { + in, out := &in.Team, &out.Team + *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 +} diff --git a/apis/authentication/v1beta1/zz_generated.managed.go b/apis/authentication/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..746b4a4 --- /dev/null +++ b/apis/authentication/v1beta1/zz_generated.managed.go @@ -0,0 +1,68 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// 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 +} diff --git a/apis/authentication/v1beta1/zz_generated.managedlist.go b/apis/authentication/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..12674d6 --- /dev/null +++ b/apis/authentication/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,17 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// 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 +} diff --git a/apis/authentication/v1beta1/zz_generated.resolvers.go b/apis/authentication/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..a113a6b --- /dev/null +++ b/apis/authentication/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,56 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this AuthnMapping. +func (mg *AuthnMapping) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.Role), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.RoleRef, + Selector: mg.Spec.ForProvider.RoleSelector, + To: reference.To{ + List: &v1beta1.RoleList{}, + Managed: &v1beta1.Role{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Role") + } + mg.Spec.ForProvider.Role = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.RoleRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.Role), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.RoleRef, + Selector: mg.Spec.InitProvider.RoleSelector, + To: reference.To{ + List: &v1beta1.RoleList{}, + Managed: &v1beta1.Role{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.Role") + } + mg.Spec.InitProvider.Role = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.RoleRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/authentication/v1beta1/zz_groupversion_info.go b/apis/authentication/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..a6bc807 --- /dev/null +++ b/apis/authentication/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=authentication.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "authentication.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_generated.conversion_hubs.go b/apis/cloud/v1alpha1/zz_generated.conversion_hubs.go deleted file mode 100755 index cc467ba..0000000 --- a/apis/cloud/v1alpha1/zz_generated.conversion_hubs.go +++ /dev/null @@ -1,17 +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 - -// 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.managed.go b/apis/cloud/v1alpha1/zz_generated.managed.go deleted file mode 100644 index f16b4ca..0000000 --- a/apis/cloud/v1alpha1/zz_generated.managed.go +++ /dev/null @@ -1,128 +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 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_workloadsecurityagentrule_terraformed.go b/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_terraformed.go deleted file mode 100755 index 52d696c..0000000 --- a/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_terraformed.go +++ /dev/null @@ -1,133 +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 ( - "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 deleted file mode 100755 index 9df599e..0000000 --- a/apis/cloud/v1alpha1/zz_workloadsecurityagentrule_types.go +++ /dev/null @@ -1,145 +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 ( - 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/cloud/v1alpha1/zz_configurationrule_terraformed.go b/apis/cloud/v1beta1/zz_configurationrule_terraformed.go similarity index 96% rename from apis/cloud/v1alpha1/zz_configurationrule_terraformed.go rename to apis/cloud/v1beta1/zz_configurationrule_terraformed.go index 3ef7228..7b82ec9 100755 --- a/apis/cloud/v1alpha1/zz_configurationrule_terraformed.go +++ b/apis/cloud/v1beta1/zz_configurationrule_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/cloud/v1alpha1/zz_configurationrule_types.go b/apis/cloud/v1beta1/zz_configurationrule_types.go similarity index 87% rename from apis/cloud/v1alpha1/zz_configurationrule_types.go rename to apis/cloud/v1beta1/zz_configurationrule_types.go index d7e3638..34a1ea3 100755 --- a/apis/cloud/v1alpha1/zz_configurationrule_types.go +++ b/apis/cloud/v1beta1/zz_configurationrule_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -27,8 +23,8 @@ type ConfigurationRuleInitParameters struct { // 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. + // (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. + // Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) The message associated to the rule that will be shown in findings and signals. @@ -39,8 +35,8 @@ type ConfigurationRuleInitParameters struct { // 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. + // (List of String) This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. + // This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` // (String) Policy written in Rego format. @@ -74,8 +70,8 @@ type ConfigurationRuleObservation struct { // 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. + // (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. + // Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) The ID of this resource. @@ -89,8 +85,8 @@ type ConfigurationRuleObservation struct { // 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. + // (List of String) This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. + // This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` // (String) Policy written in Rego format. @@ -126,8 +122,8 @@ type ConfigurationRuleParameters struct { // +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. + // (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. + // Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. // +kubebuilder:validation:Optional GroupBy []*string `json:"groupBy,omitempty" tf:"group_by,omitempty"` @@ -141,8 +137,8 @@ type ConfigurationRuleParameters struct { // +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. + // (List of String) This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. + // This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. // +kubebuilder:validation:Optional Notifications []*string `json:"notifications,omitempty" tf:"notifications,omitempty"` @@ -235,8 +231,8 @@ type ConfigurationRuleStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/cloud/v1beta1/zz_generated.conversion_hubs.go b/apis/cloud/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..2d4c686 --- /dev/null +++ b/apis/cloud/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *ConfigurationRule) Hub() {} diff --git a/apis/cloud/v1alpha1/zz_generated.deepcopy.go b/apis/cloud/v1beta1/zz_generated.deepcopy.go similarity index 65% rename from apis/cloud/v1alpha1/zz_generated.deepcopy.go rename to apis/cloud/v1beta1/zz_generated.deepcopy.go index ab03d64..aaef591 100644 --- a/apis/cloud/v1alpha1/zz_generated.deepcopy.go +++ b/apis/cloud/v1beta1/zz_generated.deepcopy.go @@ -6,7 +6,7 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( runtime "k8s.io/apimachinery/pkg/runtime" @@ -473,207 +473,3 @@ func (in *FilterParameters) DeepCopy() *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/v1beta1/zz_generated.managed.go b/apis/cloud/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..6ab1108 --- /dev/null +++ b/apis/cloud/v1beta1/zz_generated.managed.go @@ -0,0 +1,68 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +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 +} diff --git a/apis/cloud/v1beta1/zz_generated.managedlist.go b/apis/cloud/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..5d706d1 --- /dev/null +++ b/apis/cloud/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,17 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +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 +} diff --git a/apis/cloud/v1alpha1/zz_groupversion_info.go b/apis/cloud/v1beta1/zz_groupversion_info.go similarity index 79% rename from apis/cloud/v1alpha1/zz_groupversion_info.go rename to apis/cloud/v1beta1/zz_groupversion_info.go index 577ecc8..e05517a 100755 --- a/apis/cloud/v1alpha1/zz_groupversion_info.go +++ b/apis/cloud/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=cloud.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "cloud.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/datadog/v1alpha1/zz_dashboardjson_terraformed.go b/apis/dashboard/v1beta1/zz_dashboardjson_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_dashboardjson_terraformed.go rename to apis/dashboard/v1beta1/zz_dashboardjson_terraformed.go index 9001e8a..b84a99d 100755 --- a/apis/datadog/v1alpha1/zz_dashboardjson_terraformed.go +++ b/apis/dashboard/v1beta1/zz_dashboardjson_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_dashboardjson_types.go b/apis/dashboard/v1beta1/zz_dashboardjson_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_dashboardjson_types.go rename to apis/dashboard/v1beta1/zz_dashboardjson_types.go index 6455a81..1f18102 100755 --- a/apis/datadog/v1alpha1/zz_dashboardjson_types.go +++ b/apis/dashboard/v1beta1/zz_dashboardjson_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -104,8 +100,8 @@ type DashboardJSONStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_dashboardlist_terraformed.go b/apis/dashboard/v1beta1/zz_dashboardlist_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_dashboardlist_terraformed.go rename to apis/dashboard/v1beta1/zz_dashboardlist_terraformed.go index 25a3134..2805b9f 100755 --- a/apis/datadog/v1alpha1/zz_dashboardlist_terraformed.go +++ b/apis/dashboard/v1beta1/zz_dashboardlist_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_dashboardlist_types.go b/apis/dashboard/v1beta1/zz_dashboardlist_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_dashboardlist_types.go rename to apis/dashboard/v1beta1/zz_dashboardlist_types.go index 6d981ad..4e68198 100755 --- a/apis/datadog/v1alpha1/zz_dashboardlist_types.go +++ b/apis/dashboard/v1beta1/zz_dashboardlist_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -118,8 +114,8 @@ type DashboardListStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/dashboard/v1beta1/zz_generated.conversion_hubs.go b/apis/dashboard/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..84ab12c --- /dev/null +++ b/apis/dashboard/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,16 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// 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 *Powerpack) Hub() {} diff --git a/apis/dashboard/v1beta1/zz_generated.deepcopy.go b/apis/dashboard/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..05fa5e1 --- /dev/null +++ b/apis/dashboard/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,962 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *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 *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 *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 = new(LayoutInitParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(LayoutObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(LayoutParameters) + (*in).DeepCopyInto(*out) + } + 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 *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 +} diff --git a/apis/dashboard/v1beta1/zz_generated.managed.go b/apis/dashboard/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..afebb90 --- /dev/null +++ b/apis/dashboard/v1beta1/zz_generated.managed.go @@ -0,0 +1,188 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// 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 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 +} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.managedlist.go b/apis/dashboard/v1beta1/zz_generated.managedlist.go similarity index 62% rename from apis/sensitivedatascanner/v1alpha1/zz_generated.managedlist.go rename to apis/dashboard/v1beta1/zz_generated.managedlist.go index 07aaaae..74eee72 100644 --- a/apis/sensitivedatascanner/v1alpha1/zz_generated.managedlist.go +++ b/apis/dashboard/v1beta1/zz_generated.managedlist.go @@ -3,12 +3,12 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" -// GetItems of this GroupList. -func (l *GroupList) GetItems() []resource.Managed { +// 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] @@ -16,8 +16,8 @@ func (l *GroupList) GetItems() []resource.Managed { return items } -// GetItems of this GroupOrderList. -func (l *GroupOrderList) GetItems() []resource.Managed { +// 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] @@ -25,8 +25,8 @@ func (l *GroupOrderList) GetItems() []resource.Managed { return items } -// GetItems of this RuleList. -func (l *RuleList) GetItems() []resource.Managed { +// 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] diff --git a/apis/dashboard/v1beta1/zz_groupversion_info.go b/apis/dashboard/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..6c69bdb --- /dev/null +++ b/apis/dashboard/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=dashboard.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "dashboard.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_powerpack_terraformed.go b/apis/dashboard/v1beta1/zz_powerpack_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_powerpack_terraformed.go rename to apis/dashboard/v1beta1/zz_powerpack_terraformed.go index 36663ac..373bd08 100755 --- a/apis/datadog/v1alpha1/zz_powerpack_terraformed.go +++ b/apis/dashboard/v1beta1/zz_powerpack_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_powerpack_types.go b/apis/dashboard/v1beta1/zz_powerpack_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_powerpack_types.go rename to apis/dashboard/v1beta1/zz_powerpack_types.go index cc36f63..aa3ebfb 100755 --- a/apis/datadog/v1alpha1/zz_powerpack_types.go +++ b/apis/dashboard/v1beta1/zz_powerpack_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -86,7 +82,7 @@ type PowerpackInitParameters struct { // 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"` + 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`. @@ -121,7 +117,7 @@ type PowerpackObservation struct { // 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"` + 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`. @@ -155,7 +151,7 @@ type PowerpackParameters struct { // 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"` + 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`. @@ -253,8 +249,8 @@ type PowerpackStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_generated.conversion_hubs.go b/apis/datadog/v1alpha1/zz_generated.conversion_hubs.go deleted file mode 100755 index 73243b3..0000000 --- a/apis/datadog/v1alpha1/zz_generated.conversion_hubs.go +++ /dev/null @@ -1,101 +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 - -// 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 deleted file mode 100644 index 5dbfcd3..0000000 --- a/apis/datadog/v1alpha1/zz_generated.deepcopy.go +++ /dev/null @@ -1,11023 +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 *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 deleted file mode 100644 index ba0af33..0000000 --- a/apis/datadog/v1alpha1/zz_generated.managed.go +++ /dev/null @@ -1,1808 +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 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 deleted file mode 100644 index b10f4df..0000000 --- a/apis/datadog/v1alpha1/zz_generated.managedlist.go +++ /dev/null @@ -1,278 +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 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_monitorconfigpolicy_terraformed.go b/apis/datadog/v1alpha1/zz_monitorconfigpolicy_terraformed.go deleted file mode 100755 index 5b205b3..0000000 --- a/apis/datadog/v1alpha1/zz_monitorconfigpolicy_terraformed.go +++ /dev/null @@ -1,133 +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 ( - "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_organizationsettings_terraformed.go b/apis/datadog/v1alpha1/zz_organizationsettings_terraformed.go deleted file mode 100755 index a2961ae..0000000 --- a/apis/datadog/v1alpha1/zz_organizationsettings_terraformed.go +++ /dev/null @@ -1,133 +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 ( - "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_servicedefinitionyaml_terraformed.go b/apis/datadog/v1alpha1/zz_servicedefinitionyaml_terraformed.go deleted file mode 100755 index ac7818f..0000000 --- a/apis/datadog/v1alpha1/zz_servicedefinitionyaml_terraformed.go +++ /dev/null @@ -1,133 +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 ( - "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_slocorrection_terraformed.go b/apis/datadog/v1alpha1/zz_slocorrection_terraformed.go deleted file mode 100755 index 0610432..0000000 --- a/apis/datadog/v1alpha1/zz_slocorrection_terraformed.go +++ /dev/null @@ -1,133 +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 ( - "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/iam/v1beta1/zz_generated.conversion_hubs.go b/apis/iam/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..3b2bcac --- /dev/null +++ b/apis/iam/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,34 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// 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 *ServiceAccount) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ServiceAccountApplicationKey) 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() {} diff --git a/apis/iam/v1beta1/zz_generated.deepcopy.go b/apis/iam/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..7faa841 --- /dev/null +++ b/apis/iam/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,2167 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *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 *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 *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.DefaultPermissionsOptOut != nil { + in, out := &in.DefaultPermissionsOptOut, &out.DefaultPermissionsOptOut + *out = new(bool) + **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.DefaultPermissionsOptOut != nil { + in, out := &in.DefaultPermissionsOptOut, &out.DefaultPermissionsOptOut + *out = new(bool) + **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.DefaultPermissionsOptOut != nil { + in, out := &in.DefaultPermissionsOptOut, &out.DefaultPermissionsOptOut + *out = new(bool) + **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 *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.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *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.ServiceAccountID != nil { + in, out := &in.ServiceAccountID, &out.ServiceAccountID + *out = new(string) + **out = **in + } + if in.ServiceAccountIDRef != nil { + in, out := &in.ServiceAccountIDRef, &out.ServiceAccountIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.ServiceAccountIDSelector != nil { + in, out := &in.ServiceAccountIDSelector, &out.ServiceAccountIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// 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.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *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.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.Scopes != nil { + in, out := &in.Scopes, &out.Scopes + *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.ServiceAccountID != nil { + in, out := &in.ServiceAccountID, &out.ServiceAccountID + *out = new(string) + **out = **in + } + if in.ServiceAccountIDRef != nil { + in, out := &in.ServiceAccountIDRef, &out.ServiceAccountIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.ServiceAccountIDSelector != nil { + in, out := &in.ServiceAccountIDSelector, &out.ServiceAccountIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// 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 + } + } + } + if in.RolesRefs != nil { + in, out := &in.RolesRefs, &out.RolesRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RolesSelector != nil { + in, out := &in.RolesSelector, &out.RolesSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// 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 + } + } + } + if in.RolesRefs != nil { + in, out := &in.RolesRefs, &out.RolesRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RolesSelector != nil { + in, out := &in.RolesSelector, &out.RolesSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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.TeamIDRef != nil { + in, out := &in.TeamIDRef, &out.TeamIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.TeamIDSelector != nil { + in, out := &in.TeamIDSelector, &out.TeamIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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.TeamIDRef != nil { + in, out := &in.TeamIDRef, &out.TeamIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.TeamIDSelector != nil { + in, out := &in.TeamIDSelector, &out.TeamIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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.TeamIDRef != nil { + in, out := &in.TeamIDRef, &out.TeamIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.TeamIDSelector != nil { + in, out := &in.TeamIDSelector, &out.TeamIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.UserID != nil { + in, out := &in.UserID, &out.UserID + *out = new(string) + **out = **in + } + if in.UserIDRef != nil { + in, out := &in.UserIDRef, &out.UserIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.UserIDSelector != nil { + in, out := &in.UserIDSelector, &out.UserIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// 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.TeamIDRef != nil { + in, out := &in.TeamIDRef, &out.TeamIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.TeamIDSelector != nil { + in, out := &in.TeamIDSelector, &out.TeamIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + if in.UserID != nil { + in, out := &in.UserID, &out.UserID + *out = new(string) + **out = **in + } + if in.UserIDRef != nil { + in, out := &in.UserIDRef, &out.UserIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.UserIDSelector != nil { + in, out := &in.UserIDSelector, &out.UserIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } +} + +// 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.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.TeamIDRef != nil { + in, out := &in.TeamIDRef, &out.TeamIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.TeamIDSelector != nil { + in, out := &in.TeamIDSelector, &out.TeamIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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 *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 + 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.RolesRefs != nil { + in, out := &in.RolesRefs, &out.RolesRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RolesSelector != nil { + in, out := &in.RolesSelector, &out.RolesSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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. +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 *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.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. +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 *UserParameters) DeepCopyInto(out *UserParameters) { + *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.RolesRefs != nil { + in, out := &in.RolesRefs, &out.RolesRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.RolesSelector != nil { + in, out := &in.RolesSelector, &out.RolesSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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. +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 *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 +} diff --git a/apis/iam/v1beta1/zz_generated.managed.go b/apis/iam/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..a9fcb9d --- /dev/null +++ b/apis/iam/v1beta1/zz_generated.managed.go @@ -0,0 +1,548 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// 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 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 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 +} diff --git a/apis/iam/v1beta1/zz_generated.managedlist.go b/apis/iam/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..95fe1bb --- /dev/null +++ b/apis/iam/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,89 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// 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 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 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 +} diff --git a/apis/iam/v1beta1/zz_generated.resolvers.go b/apis/iam/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..92dbfe4 --- /dev/null +++ b/apis/iam/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,281 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this ServiceAccount. +func (mg *ServiceAccount) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var mrsp reference.MultiResolutionResponse + var err error + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.Roles), + Extract: reference.ExternalName(), + References: mg.Spec.ForProvider.RolesRefs, + Selector: mg.Spec.ForProvider.RolesSelector, + To: reference.To{ + List: &RoleList{}, + Managed: &Role{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Roles") + } + mg.Spec.ForProvider.Roles = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.ForProvider.RolesRefs = mrsp.ResolvedReferences + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.InitProvider.Roles), + Extract: reference.ExternalName(), + References: mg.Spec.InitProvider.RolesRefs, + Selector: mg.Spec.InitProvider.RolesSelector, + To: reference.To{ + List: &RoleList{}, + Managed: &Role{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.Roles") + } + mg.Spec.InitProvider.Roles = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.InitProvider.RolesRefs = mrsp.ResolvedReferences + + return nil +} + +// ResolveReferences of this ServiceAccountApplicationKey. +func (mg *ServiceAccountApplicationKey) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.ServiceAccountID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.ServiceAccountIDRef, + Selector: mg.Spec.ForProvider.ServiceAccountIDSelector, + To: reference.To{ + List: &ServiceAccountList{}, + Managed: &ServiceAccount{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.ServiceAccountID") + } + mg.Spec.ForProvider.ServiceAccountID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.ServiceAccountIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.ServiceAccountID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.ServiceAccountIDRef, + Selector: mg.Spec.InitProvider.ServiceAccountIDSelector, + To: reference.To{ + List: &ServiceAccountList{}, + Managed: &ServiceAccount{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.ServiceAccountID") + } + mg.Spec.InitProvider.ServiceAccountID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.ServiceAccountIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this TeamLink. +func (mg *TeamLink) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.TeamID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.TeamIDRef, + Selector: mg.Spec.ForProvider.TeamIDSelector, + To: reference.To{ + List: &TeamList{}, + Managed: &Team{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.TeamID") + } + mg.Spec.ForProvider.TeamID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.TeamIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.TeamID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.TeamIDRef, + Selector: mg.Spec.InitProvider.TeamIDSelector, + To: reference.To{ + List: &TeamList{}, + Managed: &Team{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.TeamID") + } + mg.Spec.InitProvider.TeamID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.TeamIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this TeamMembership. +func (mg *TeamMembership) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.TeamID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.TeamIDRef, + Selector: mg.Spec.ForProvider.TeamIDSelector, + To: reference.To{ + List: &TeamList{}, + Managed: &Team{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.TeamID") + } + mg.Spec.ForProvider.TeamID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.TeamIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.UserID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.UserIDRef, + Selector: mg.Spec.ForProvider.UserIDSelector, + To: reference.To{ + List: &UserList{}, + Managed: &User{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.UserID") + } + mg.Spec.ForProvider.UserID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.UserIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.TeamID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.TeamIDRef, + Selector: mg.Spec.InitProvider.TeamIDSelector, + To: reference.To{ + List: &TeamList{}, + Managed: &Team{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.TeamID") + } + mg.Spec.InitProvider.TeamID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.TeamIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.UserID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.UserIDRef, + Selector: mg.Spec.InitProvider.UserIDSelector, + To: reference.To{ + List: &UserList{}, + Managed: &User{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.UserID") + } + mg.Spec.InitProvider.UserID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.UserIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this TeamPermissionSetting. +func (mg *TeamPermissionSetting) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.TeamID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.TeamIDRef, + Selector: mg.Spec.ForProvider.TeamIDSelector, + To: reference.To{ + List: &TeamList{}, + Managed: &Team{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.TeamID") + } + mg.Spec.ForProvider.TeamID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.TeamIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this User. +func (mg *User) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var mrsp reference.MultiResolutionResponse + var err error + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.Roles), + Extract: reference.ExternalName(), + References: mg.Spec.ForProvider.RolesRefs, + Selector: mg.Spec.ForProvider.RolesSelector, + To: reference.To{ + List: &RoleList{}, + Managed: &Role{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Roles") + } + mg.Spec.ForProvider.Roles = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.ForProvider.RolesRefs = mrsp.ResolvedReferences + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.InitProvider.Roles), + Extract: reference.ExternalName(), + References: mg.Spec.InitProvider.RolesRefs, + Selector: mg.Spec.InitProvider.RolesSelector, + To: reference.To{ + List: &RoleList{}, + Managed: &Role{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.Roles") + } + mg.Spec.InitProvider.Roles = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.InitProvider.RolesRefs = mrsp.ResolvedReferences + + return nil +} diff --git a/apis/iam/v1beta1/zz_groupversion_info.go b/apis/iam/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..1afb9e3 --- /dev/null +++ b/apis/iam/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=iam.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "iam.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_restrictionpolicy_terraformed.go b/apis/iam/v1beta1/zz_restrictionpolicy_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_restrictionpolicy_terraformed.go rename to apis/iam/v1beta1/zz_restrictionpolicy_terraformed.go index 0a76da8..a4705bd 100755 --- a/apis/datadog/v1alpha1/zz_restrictionpolicy_terraformed.go +++ b/apis/iam/v1beta1/zz_restrictionpolicy_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_restrictionpolicy_types.go b/apis/iam/v1beta1/zz_restrictionpolicy_types.go similarity index 76% rename from apis/datadog/v1alpha1/zz_restrictionpolicy_types.go rename to apis/iam/v1beta1/zz_restrictionpolicy_types.go index a5635e0..548823d 100755 --- a/apis/datadog/v1alpha1/zz_restrictionpolicy_types.go +++ b/apis/iam/v1beta1/zz_restrictionpolicy_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,8 +15,8 @@ import ( 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. + // (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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field. + // An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field. // +listType=set Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` @@ -31,8 +27,8 @@ type BindingsInitParameters struct { 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. + // (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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field. + // An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field. // +listType=set Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` @@ -43,8 +39,8 @@ type BindingsObservation struct { 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. + // (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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field. + // An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field. // +kubebuilder:validation:Optional // +listType=set Principals []*string `json:"principals" tf:"principals,omitempty"` @@ -63,7 +59,12 @@ type RestrictionPolicyInitParameters struct { // (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. + // Resources to define `resource_type` : + // * [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access) + // * [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources) + // + // Restrictions : + // * 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"` } @@ -78,7 +79,12 @@ type RestrictionPolicyObservation struct { // (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. + // Resources to define `resource_type` : + // * [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access) + // * [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources) + // + // Restrictions : + // * 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"` } @@ -91,7 +97,12 @@ type RestrictionPolicyParameters struct { // (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. + // Resources to define `resource_type` : + // * [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access) + // * [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources) + // + // Restrictions : + // * 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"` } @@ -124,8 +135,8 @@ type RestrictionPolicyStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_role_terraformed.go b/apis/iam/v1beta1/zz_role_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_role_terraformed.go rename to apis/iam/v1beta1/zz_role_terraformed.go index 8740a7e..a060e0f 100755 --- a/apis/datadog/v1alpha1/zz_role_terraformed.go +++ b/apis/iam/v1beta1/zz_role_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_role_types.go b/apis/iam/v1beta1/zz_role_types.go similarity index 84% rename from apis/datadog/v1alpha1/zz_role_types.go rename to apis/iam/v1beta1/zz_role_types.go index 3fb233c..950ad6f 100755 --- a/apis/datadog/v1alpha1/zz_role_types.go +++ b/apis/iam/v1beta1/zz_role_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -45,6 +41,10 @@ type PermissionParameters struct { type RoleInitParameters struct { + // (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. + // If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. + DefaultPermissionsOptOut *bool `json:"defaultPermissionsOptOut,omitempty" tf:"default_permissions_opt_out,omitempty"` + // (String) Name of the role. // Name of the role. Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -60,6 +60,10 @@ type RoleInitParameters struct { type RoleObservation struct { + // (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. + // If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. + DefaultPermissionsOptOut *bool `json:"defaultPermissionsOptOut,omitempty" tf:"default_permissions_opt_out,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -82,6 +86,11 @@ type RoleObservation struct { type RoleParameters struct { + // (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. + // If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. + // +kubebuilder:validation:Optional + DefaultPermissionsOptOut *bool `json:"defaultPermissionsOptOut,omitempty" tf:"default_permissions_opt_out,omitempty"` + // (String) Name of the role. // Name of the role. // +kubebuilder:validation:Optional @@ -126,8 +135,8 @@ type RoleStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_serviceaccount_terraformed.go b/apis/iam/v1beta1/zz_serviceaccount_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_serviceaccount_terraformed.go rename to apis/iam/v1beta1/zz_serviceaccount_terraformed.go index 14d6efe..8808434 100755 --- a/apis/datadog/v1alpha1/zz_serviceaccount_terraformed.go +++ b/apis/iam/v1beta1/zz_serviceaccount_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_serviceaccount_types.go b/apis/iam/v1beta1/zz_serviceaccount_types.go similarity index 81% rename from apis/datadog/v1alpha1/zz_serviceaccount_types.go rename to apis/iam/v1beta1/zz_serviceaccount_types.go index eb725d2..906f7c1 100755 --- a/apis/datadog/v1alpha1/zz_serviceaccount_types.go +++ b/apis/iam/v1beta1/zz_serviceaccount_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,10 +27,19 @@ type ServiceAccountInitParameters struct { // 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. + // (Set of String) A list of role IDs to assign to the service account. + // A list of role IDs to assign to the service account. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Role // +listType=set Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + + // References to Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesRefs []v1.Reference `json:"rolesRefs,omitempty" tf:"-"` + + // Selector for a list of Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesSelector *v1.Selector `json:"rolesSelector,omitempty" tf:"-"` } type ServiceAccountObservation struct { @@ -54,8 +59,8 @@ type ServiceAccountObservation struct { // 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. + // (Set of String) A list of role IDs to assign to the service account. + // A list of role IDs to assign to the service account. // +listType=set Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` } @@ -77,11 +82,20 @@ type ServiceAccountParameters struct { // +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. + // (Set of String) A list of role IDs to assign to the service account. + // A list of role IDs to assign to the service account. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Role // +kubebuilder:validation:Optional // +listType=set Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + + // References to Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesRefs []v1.Reference `json:"rolesRefs,omitempty" tf:"-"` + + // Selector for a list of Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesSelector *v1.Selector `json:"rolesSelector,omitempty" tf:"-"` } // ServiceAccountSpec defines the desired state of ServiceAccount @@ -112,8 +126,8 @@ type ServiceAccountStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_terraformed.go b/apis/iam/v1beta1/zz_serviceaccountapplicationkey_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_terraformed.go rename to apis/iam/v1beta1/zz_serviceaccountapplicationkey_terraformed.go index e6ddd7c..bd04de4 100755 --- a/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_terraformed.go +++ b/apis/iam/v1beta1/zz_serviceaccountapplicationkey_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_types.go b/apis/iam/v1beta1/zz_serviceaccountapplicationkey_types.go similarity index 73% rename from apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_types.go rename to apis/iam/v1beta1/zz_serviceaccountapplicationkey_types.go index 615abdb..8dc289a 100755 --- a/apis/datadog/v1alpha1/zz_serviceaccountapplicationkey_types.go +++ b/apis/iam/v1beta1/zz_serviceaccountapplicationkey_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -23,9 +19,23 @@ type ServiceAccountApplicationKeyInitParameters struct { // Name of the application key. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // +listType=set + Scopes []*string `json:"scopes,omitempty" tf:"scopes,omitempty"` + // (String) ID of the service account that owns this key. // ID of the service account that owns this key. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.ServiceAccount ServiceAccountID *string `json:"serviceAccountId,omitempty" tf:"service_account_id,omitempty"` + + // Reference to a ServiceAccount in iam to populate serviceAccountId. + // +kubebuilder:validation:Optional + ServiceAccountIDRef *v1.Reference `json:"serviceAccountIdRef,omitempty" tf:"-"` + + // Selector for a ServiceAccount in iam to populate serviceAccountId. + // +kubebuilder:validation:Optional + ServiceAccountIDSelector *v1.Selector `json:"serviceAccountIdSelector,omitempty" tf:"-"` } type ServiceAccountApplicationKeyObservation struct { @@ -45,6 +55,11 @@ type ServiceAccountApplicationKeyObservation struct { // Name of the application key. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // +listType=set + Scopes []*string `json:"scopes,omitempty" tf:"scopes,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"` @@ -57,10 +72,25 @@ type ServiceAccountApplicationKeyParameters struct { // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + // +kubebuilder:validation:Optional + // +listType=set + Scopes []*string `json:"scopes,omitempty" tf:"scopes,omitempty"` + // (String) ID of the service account that owns this key. // ID of the service account that owns this key. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.ServiceAccount // +kubebuilder:validation:Optional ServiceAccountID *string `json:"serviceAccountId,omitempty" tf:"service_account_id,omitempty"` + + // Reference to a ServiceAccount in iam to populate serviceAccountId. + // +kubebuilder:validation:Optional + ServiceAccountIDRef *v1.Reference `json:"serviceAccountIdRef,omitempty" tf:"-"` + + // Selector for a ServiceAccount in iam to populate serviceAccountId. + // +kubebuilder:validation:Optional + ServiceAccountIDSelector *v1.Selector `json:"serviceAccountIdSelector,omitempty" tf:"-"` } // ServiceAccountApplicationKeySpec defines the desired state of ServiceAccountApplicationKey @@ -91,8 +121,8 @@ type ServiceAccountApplicationKeyStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} @@ -100,7 +130,6 @@ 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"` } diff --git a/apis/datadog/v1alpha1/zz_team_terraformed.go b/apis/iam/v1beta1/zz_team_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_team_terraformed.go rename to apis/iam/v1beta1/zz_team_terraformed.go index d8bc31e..2badce7 100755 --- a/apis/datadog/v1alpha1/zz_team_terraformed.go +++ b/apis/iam/v1beta1/zz_team_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_team_types.go b/apis/iam/v1beta1/zz_team_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_team_types.go rename to apis/iam/v1beta1/zz_team_types.go index 473bd20..b0b0b78 100755 --- a/apis/datadog/v1alpha1/zz_team_types.go +++ b/apis/iam/v1beta1/zz_team_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -108,8 +104,8 @@ type TeamStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_teamlink_terraformed.go b/apis/iam/v1beta1/zz_teamlink_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_teamlink_terraformed.go rename to apis/iam/v1beta1/zz_teamlink_terraformed.go index fd313e3..a37a0fc 100755 --- a/apis/datadog/v1alpha1/zz_teamlink_terraformed.go +++ b/apis/iam/v1beta1/zz_teamlink_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_teamlink_types.go b/apis/iam/v1beta1/zz_teamlink_types.go similarity index 87% rename from apis/datadog/v1alpha1/zz_teamlink_types.go rename to apis/iam/v1beta1/zz_teamlink_types.go index 627b37f..e85b0db 100755 --- a/apis/datadog/v1alpha1/zz_teamlink_types.go +++ b/apis/iam/v1beta1/zz_teamlink_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -29,8 +25,17 @@ type TeamLinkInitParameters struct { // (String) ID of the team the link is associated with. // ID of the team the link is associated with. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Team TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // Reference to a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDRef *v1.Reference `json:"teamIdRef,omitempty" tf:"-"` + + // Selector for a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDSelector *v1.Selector `json:"teamIdSelector,omitempty" tf:"-"` + // (String) The URL for the link. // The URL for the link. URL *string `json:"url,omitempty" tf:"url,omitempty"` @@ -72,9 +77,18 @@ type TeamLinkParameters struct { // (String) ID of the team the link is associated with. // ID of the team the link is associated with. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Team // +kubebuilder:validation:Optional TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // Reference to a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDRef *v1.Reference `json:"teamIdRef,omitempty" tf:"-"` + + // Selector for a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDSelector *v1.Selector `json:"teamIdSelector,omitempty" tf:"-"` + // (String) The URL for the link. // The URL for the link. // +kubebuilder:validation:Optional @@ -109,8 +123,8 @@ type TeamLinkStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} @@ -118,7 +132,6 @@ 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"` diff --git a/apis/datadog/v1alpha1/zz_teammembership_terraformed.go b/apis/iam/v1beta1/zz_teammembership_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_teammembership_terraformed.go rename to apis/iam/v1beta1/zz_teammembership_terraformed.go index f9b76ba..58d3eb7 100755 --- a/apis/datadog/v1alpha1/zz_teammembership_terraformed.go +++ b/apis/iam/v1beta1/zz_teammembership_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_teammembership_types.go b/apis/iam/v1beta1/zz_teammembership_types.go similarity index 73% rename from apis/datadog/v1alpha1/zz_teammembership_types.go rename to apis/iam/v1beta1/zz_teammembership_types.go index 8fbb75e..d3d2c7a 100755 --- a/apis/datadog/v1alpha1/zz_teammembership_types.go +++ b/apis/iam/v1beta1/zz_teammembership_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -25,11 +21,29 @@ type TeamMembershipInitParameters struct { // (String) ID of the team the team membership is associated with. // ID of the team the team membership is associated with. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Team TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // Reference to a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDRef *v1.Reference `json:"teamIdRef,omitempty" tf:"-"` + + // Selector for a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDSelector *v1.Selector `json:"teamIdSelector,omitempty" tf:"-"` + // (String) The ID of the user. // The ID of the user. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.User UserID *string `json:"userId,omitempty" tf:"user_id,omitempty"` + + // Reference to a User in iam to populate userId. + // +kubebuilder:validation:Optional + UserIDRef *v1.Reference `json:"userIdRef,omitempty" tf:"-"` + + // Selector for a User in iam to populate userId. + // +kubebuilder:validation:Optional + UserIDSelector *v1.Selector `json:"userIdSelector,omitempty" tf:"-"` } type TeamMembershipObservation struct { @@ -59,13 +73,31 @@ type TeamMembershipParameters struct { // (String) ID of the team the team membership is associated with. // ID of the team the team membership is associated with. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Team // +kubebuilder:validation:Optional TeamID *string `json:"teamId,omitempty" tf:"team_id,omitempty"` + // Reference to a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDRef *v1.Reference `json:"teamIdRef,omitempty" tf:"-"` + + // Selector for a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDSelector *v1.Selector `json:"teamIdSelector,omitempty" tf:"-"` + // (String) The ID of the user. // The ID of the user. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.User // +kubebuilder:validation:Optional UserID *string `json:"userId,omitempty" tf:"user_id,omitempty"` + + // Reference to a User in iam to populate userId. + // +kubebuilder:validation:Optional + UserIDRef *v1.Reference `json:"userIdRef,omitempty" tf:"-"` + + // Selector for a User in iam to populate userId. + // +kubebuilder:validation:Optional + UserIDSelector *v1.Selector `json:"userIdSelector,omitempty" tf:"-"` } // TeamMembershipSpec defines the desired state of TeamMembership @@ -96,18 +128,16 @@ type TeamMembershipStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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"` + Spec TeamMembershipSpec `json:"spec"` + Status TeamMembershipStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true diff --git a/apis/datadog/v1alpha1/zz_teampermissionsetting_terraformed.go b/apis/iam/v1beta1/zz_teampermissionsetting_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_teampermissionsetting_terraformed.go rename to apis/iam/v1beta1/zz_teampermissionsetting_terraformed.go index c4f4142..4497d64 100755 --- a/apis/datadog/v1alpha1/zz_teampermissionsetting_terraformed.go +++ b/apis/iam/v1beta1/zz_teampermissionsetting_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_teampermissionsetting_types.go b/apis/iam/v1beta1/zz_teampermissionsetting_types.go similarity index 71% rename from apis/datadog/v1alpha1/zz_teampermissionsetting_types.go rename to apis/iam/v1beta1/zz_teampermissionsetting_types.go index e64cc62..6a0e453 100755 --- a/apis/datadog/v1alpha1/zz_teampermissionsetting_types.go +++ b/apis/iam/v1beta1/zz_teampermissionsetting_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,16 +15,8 @@ import ( 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`. + // (String) The action value. Valid values are dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. + // The action value. Valid values are dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values. Value *string `json:"value,omitempty" tf:"value,omitempty"` } @@ -45,8 +33,8 @@ type TeamPermissionSettingObservation struct { // 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`. + // (String) The action value. Valid values are dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. + // The action value. Valid values are dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values. Value *string `json:"value,omitempty" tf:"value,omitempty"` } @@ -54,16 +42,25 @@ 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"` + // +kubebuilder:validation:Required + Action *string `json:"action" 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Team // +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`. + // Reference to a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDRef *v1.Reference `json:"teamIdRef,omitempty" tf:"-"` + + // Selector for a Team in iam to populate teamId. + // +kubebuilder:validation:Optional + TeamIDSelector *v1.Selector `json:"teamIdSelector,omitempty" tf:"-"` + + // (String) The action value. Valid values are dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. + // The action value. Valid values are dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values. // +kubebuilder:validation:Optional Value *string `json:"value,omitempty" tf:"value,omitempty"` } @@ -95,17 +92,15 @@ type TeamPermissionSettingStatus struct { // +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" +// TeamPermissionSetting is the Schema for the TeamPermissionSettings API. Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog team_permission_setting. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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"` diff --git a/apis/datadog/v1alpha1/zz_user_terraformed.go b/apis/iam/v1beta1/zz_user_terraformed.go similarity index 95% rename from apis/datadog/v1alpha1/zz_user_terraformed.go rename to apis/iam/v1beta1/zz_user_terraformed.go index 14b9adb..30af4e8 100755 --- a/apis/datadog/v1alpha1/zz_user_terraformed.go +++ b/apis/iam/v1beta1/zz_user_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -117,7 +113,7 @@ func (tr *User) GetMergedParameters(shouldMergeInitProvider bool) (map[string]an // 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{} + params := &UserParameters{} if err := json.TFParser.Unmarshal(attrs, params); err != nil { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } diff --git a/apis/datadog/v1alpha1/zz_user_types.go b/apis/iam/v1beta1/zz_user_types.go similarity index 72% rename from apis/datadog/v1alpha1/zz_user_types.go rename to apis/iam/v1beta1/zz_user_types.go index ae5446e..2c8ae13 100755 --- a/apis/datadog/v1alpha1/zz_user_types.go +++ b/apis/iam/v1beta1/zz_user_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type UserInitParameters_2 struct { +type UserInitParameters struct { // (Boolean) Whether the user is disabled. Defaults to false. // Whether the user is disabled. Defaults to `false`. @@ -27,21 +23,30 @@ type UserInitParameters_2 struct { // Email address for user. Email *string `json:"email,omitempty" tf:"email,omitempty"` - // (String) Name for user. - // Name for user. + // (String) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + // User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. 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. + // (Set of String) A list of role IDs to assign to the user. + // A list of role IDs to assign to the user. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Role // +listType=set Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + // References to Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesRefs []v1.Reference `json:"rolesRefs,omitempty" tf:"-"` + + // Selector for a list of Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesSelector *v1.Selector `json:"rolesSelector,omitempty" tf:"-"` + // (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 { +type UserObservation struct { // (Boolean) Whether the user is disabled. Defaults to false. // Whether the user is disabled. Defaults to `false`. @@ -54,12 +59,12 @@ type UserObservation_2 struct { // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` - // (String) Name for user. - // Name for user. + // (String) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + // User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. 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. + // (Set of String) A list of role IDs to assign to the user. + // A list of role IDs to assign to the user. // +listType=set Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` @@ -76,7 +81,7 @@ type UserObservation_2 struct { Verified *bool `json:"verified,omitempty" tf:"verified,omitempty"` } -type UserParameters_2 struct { +type UserParameters struct { // (Boolean) Whether the user is disabled. Defaults to false. // Whether the user is disabled. Defaults to `false`. @@ -88,17 +93,26 @@ type UserParameters_2 struct { // +kubebuilder:validation:Optional Email *string `json:"email,omitempty" tf:"email,omitempty"` - // (String) Name for user. - // Name for user. + // (String) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + // User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. // +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. + // (Set of String) A list of role IDs to assign to the user. + // A list of role IDs to assign to the user. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/iam/v1beta1.Role // +kubebuilder:validation:Optional // +listType=set Roles []*string `json:"roles,omitempty" tf:"roles,omitempty"` + // References to Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesRefs []v1.Reference `json:"rolesRefs,omitempty" tf:"-"` + + // Selector for a list of Role in iam to populate roles. + // +kubebuilder:validation:Optional + RolesSelector *v1.Selector `json:"rolesSelector,omitempty" tf:"-"` + // (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 @@ -108,7 +122,7 @@ type UserParameters_2 struct { // UserSpec defines the desired state of User type UserSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider UserParameters_2 `json:"forProvider"` + ForProvider UserParameters `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 @@ -119,13 +133,13 @@ type UserSpec 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 UserInitParameters_2 `json:"initProvider,omitempty"` + InitProvider UserInitParameters `json:"initProvider,omitempty"` } // UserStatus defines the observed state of User. type UserStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider UserObservation_2 `json:"atProvider,omitempty"` + AtProvider UserObservation `json:"atProvider,omitempty"` } // +kubebuilder:object:root=true @@ -133,8 +147,8 @@ type UserStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_gcpsts_types.go b/apis/integration/v1alpha1/zz_gcpsts_types.go deleted file mode 100755 index 91004d3..0000000 --- a/apis/integration/v1alpha1/zz_gcpsts_types.go +++ /dev/null @@ -1,151 +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 ( - 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_aws_terraformed.go b/apis/integration/v1beta1/zz_aws_terraformed.go similarity index 68% rename from apis/integration/v1alpha1/zz_aws_terraformed.go rename to apis/integration/v1beta1/zz_aws_terraformed.go index af7eb34..cca34f2 100755 --- a/apis/integration/v1alpha1/zz_aws_terraformed.go +++ b/apis/integration/v1beta1/zz_aws_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this AWS -func (mg *AWS) GetTerraformResourceType() string { +// 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"} +// GetConnectionDetailsMapping for this Aws +func (tr *Aws) GetConnectionDetailsMapping() map[string]string { + return map[string]string{"secret_access_key": "secretAccessKeySecretRef"} } -// GetObservation of this AWS -func (tr *AWS) GetObservation() (map[string]any, error) { +// 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 @@ -38,8 +34,8 @@ func (tr *AWS) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this AWS -func (tr *AWS) SetObservation(obs map[string]any) error { +// SetObservation for this Aws +func (tr *Aws) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *AWS) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this AWS -func (tr *AWS) GetID() string { +// 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) { +// 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 @@ -65,8 +61,8 @@ func (tr *AWS) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this AWS -func (tr *AWS) SetParameters(params map[string]any) error { +// SetParameters for this Aws +func (tr *Aws) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *AWS) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this AWS -func (tr *AWS) GetInitParameters() (map[string]any, error) { +// 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 @@ -84,8 +80,8 @@ func (tr *AWS) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this AWS -func (tr *AWS) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// 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()) @@ -114,10 +110,10 @@ func (tr *AWS) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any return params, nil } -// LateInitialize this AWS using its observed tfState. +// 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{} +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") } @@ -128,6 +124,6 @@ func (tr *AWS) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AWS) GetTerraformSchemaVersion() int { +func (tr *Aws) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/integration/v1alpha1/zz_aws_types.go b/apis/integration/v1beta1/zz_aws_types.go similarity index 76% rename from apis/integration/v1alpha1/zz_aws_types.go rename to apis/integration/v1beta1/zz_aws_types.go index 5a47bba..ee7e481 100755 --- a/apis/integration/v1alpha1/zz_aws_types.go +++ b/apis/integration/v1beta1/zz_aws_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AWSInitParameters struct { +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. @@ -41,6 +37,10 @@ type AWSInitParameters struct { // +listType=set ExcludedRegions []*string `json:"excludedRegions,omitempty" tf:"excluded_regions,omitempty"` + // (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. + // Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`. + ExtendedResourceCollectionEnabled *string `json:"extendedResourceCollectionEnabled,omitempty" tf:"extended_resource_collection_enabled,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"` @@ -53,16 +53,20 @@ type AWSInitParameters struct { // 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. + // (String, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. + // Whether Datadog collects a standard set of resources from your AWS account. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`. 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"` + + // (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. + SecretAccessKeySecretRef *v1.SecretKeySelector `json:"secretAccessKeySecretRef,omitempty" tf:"-"` } -type AWSObservation struct { +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. @@ -86,6 +90,10 @@ type AWSObservation struct { // +listType=set ExcludedRegions []*string `json:"excludedRegions,omitempty" tf:"excluded_regions,omitempty"` + // (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. + // Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`. + ExtendedResourceCollectionEnabled *string `json:"extendedResourceCollectionEnabled,omitempty" tf:"extended_resource_collection_enabled,omitempty"` + // (String) AWS External ID. // AWS External ID. ExternalID *string `json:"externalId,omitempty" tf:"external_id,omitempty"` @@ -105,8 +113,8 @@ type AWSObservation struct { // 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. + // (String, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. + // Whether Datadog collects a standard set of resources from your AWS account. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`. ResourceCollectionEnabled *string `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` // (String) Your Datadog role delegation name. @@ -114,7 +122,7 @@ type AWSObservation struct { RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` } -type AWSParameters struct { +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. @@ -143,6 +151,11 @@ type AWSParameters struct { // +listType=set ExcludedRegions []*string `json:"excludedRegions,omitempty" tf:"excluded_regions,omitempty"` + // (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. + // Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`. + // +kubebuilder:validation:Optional + ExtendedResourceCollectionEnabled *string `json:"extendedResourceCollectionEnabled,omitempty" tf:"extended_resource_collection_enabled,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 @@ -158,8 +171,8 @@ type AWSParameters struct { // +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. + // (String, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. + // Whether Datadog collects a standard set of resources from your AWS account. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`. // +kubebuilder:validation:Optional ResourceCollectionEnabled *string `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` @@ -174,10 +187,10 @@ type AWSParameters struct { SecretAccessKeySecretRef *v1.SecretKeySelector `json:"secretAccessKeySecretRef,omitempty" tf:"-"` } -// AWSSpec defines the desired state of AWS -type AWSSpec struct { +// AwsSpec defines the desired state of Aws +type AwsSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AWSParameters `json:"forProvider"` + 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 @@ -188,49 +201,49 @@ type AWSSpec 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 AWSInitParameters `json:"initProvider,omitempty"` + InitProvider AwsInitParameters `json:"initProvider,omitempty"` } -// AWSStatus defines the observed state of AWS. -type AWSStatus struct { +// AwsStatus defines the observed state of Aws. +type AwsStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AWSObservation `json:"atProvider,omitempty"` + 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" +// Aws is the Schema for the Awss API. !>This resource is deprecated - use the datadog_integration_aws_account resource instead. Provides a Datadog - Amazon Web Services integration resource. This can be used to create and manage Datadog - Amazon Web Services integration. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type Aws struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec AWSSpec `json:"spec"` - Status AWSStatus `json:"status,omitempty"` + Spec AwsSpec `json:"spec"` + Status AwsStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AWSList contains a list of AWSs -type AWSList struct { +// AwsList contains a list of Awss +type AwsList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AWS `json:"items"` + 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) + 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{}) + SchemeBuilder.Register(&Aws{}, &AwsList{}) } diff --git a/apis/integration/v1alpha1/zz_awseventbridge_terraformed.go b/apis/integration/v1beta1/zz_awseventbridge_terraformed.go similarity index 68% rename from apis/integration/v1alpha1/zz_awseventbridge_terraformed.go rename to apis/integration/v1beta1/zz_awseventbridge_terraformed.go index 39c5026..e379eed 100755 --- a/apis/integration/v1alpha1/zz_awseventbridge_terraformed.go +++ b/apis/integration/v1beta1/zz_awseventbridge_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this AWSEventBridge -func (mg *AWSEventBridge) GetTerraformResourceType() string { +// 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 { +// 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) { +// 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 @@ -38,8 +34,8 @@ func (tr *AWSEventBridge) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this AWSEventBridge -func (tr *AWSEventBridge) SetObservation(obs map[string]any) error { +// SetObservation for this AwsEventBridge +func (tr *AwsEventBridge) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *AWSEventBridge) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this AWSEventBridge -func (tr *AWSEventBridge) GetID() string { +// 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) { +// 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 @@ -65,8 +61,8 @@ func (tr *AWSEventBridge) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this AWSEventBridge -func (tr *AWSEventBridge) SetParameters(params map[string]any) error { +// SetParameters for this AwsEventBridge +func (tr *AwsEventBridge) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *AWSEventBridge) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this AWSEventBridge -func (tr *AWSEventBridge) GetInitParameters() (map[string]any, error) { +// 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 @@ -84,8 +80,8 @@ func (tr *AWSEventBridge) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this AWSEventBridge -func (tr *AWSEventBridge) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// 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()) @@ -114,10 +110,10 @@ func (tr *AWSEventBridge) GetMergedParameters(shouldMergeInitProvider bool) (map return params, nil } -// LateInitialize this AWSEventBridge using its observed tfState. +// 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{} +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") } @@ -128,6 +124,6 @@ func (tr *AWSEventBridge) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AWSEventBridge) GetTerraformSchemaVersion() int { +func (tr *AwsEventBridge) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/integration/v1alpha1/zz_awseventbridge_types.go b/apis/integration/v1beta1/zz_awseventbridge_types.go similarity index 83% rename from apis/integration/v1alpha1/zz_awseventbridge_types.go rename to apis/integration/v1beta1/zz_awseventbridge_types.go index eb1dd8a..f5c9832 100755 --- a/apis/integration/v1alpha1/zz_awseventbridge_types.go +++ b/apis/integration/v1beta1/zz_awseventbridge_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AWSEventBridgeInitParameters struct { +type AwsEventBridgeInitParameters struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -36,7 +32,7 @@ type AWSEventBridgeInitParameters struct { Region *string `json:"region,omitempty" tf:"region,omitempty"` } -type AWSEventBridgeObservation struct { +type AwsEventBridgeObservation struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -58,7 +54,7 @@ type AWSEventBridgeObservation struct { Region *string `json:"region,omitempty" tf:"region,omitempty"` } -type AWSEventBridgeParameters struct { +type AwsEventBridgeParameters struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -81,10 +77,10 @@ type AWSEventBridgeParameters struct { Region *string `json:"region,omitempty" tf:"region,omitempty"` } -// AWSEventBridgeSpec defines the desired state of AWSEventBridge -type AWSEventBridgeSpec struct { +// AwsEventBridgeSpec defines the desired state of AwsEventBridge +type AwsEventBridgeSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AWSEventBridgeParameters `json:"forProvider"` + 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 @@ -95,52 +91,52 @@ type AWSEventBridgeSpec 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 AWSEventBridgeInitParameters `json:"initProvider,omitempty"` + InitProvider AwsEventBridgeInitParameters `json:"initProvider,omitempty"` } -// AWSEventBridgeStatus defines the observed state of AWSEventBridge. -type AWSEventBridgeStatus struct { +// AwsEventBridgeStatus defines the observed state of AwsEventBridge. +type AwsEventBridgeStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AWSEventBridgeObservation `json:"atProvider,omitempty"` + 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" +// 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="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +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"` + Spec AwsEventBridgeSpec `json:"spec"` + Status AwsEventBridgeStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AWSEventBridgeList contains a list of AWSEventBridges -type AWSEventBridgeList struct { +// AwsEventBridgeList contains a list of AwsEventBridges +type AwsEventBridgeList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AWSEventBridge `json:"items"` + 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) + 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{}) + SchemeBuilder.Register(&AwsEventBridge{}, &AwsEventBridgeList{}) } diff --git a/apis/integration/v1alpha1/zz_awslambdaarn_terraformed.go b/apis/integration/v1beta1/zz_awslambdaarn_terraformed.go similarity index 68% rename from apis/integration/v1alpha1/zz_awslambdaarn_terraformed.go rename to apis/integration/v1beta1/zz_awslambdaarn_terraformed.go index 0f81efb..b7e2996 100755 --- a/apis/integration/v1alpha1/zz_awslambdaarn_terraformed.go +++ b/apis/integration/v1beta1/zz_awslambdaarn_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this AWSLambdaARN -func (mg *AWSLambdaARN) GetTerraformResourceType() string { +// 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 { +// 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) { +// 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 @@ -38,8 +34,8 @@ func (tr *AWSLambdaARN) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this AWSLambdaARN -func (tr *AWSLambdaARN) SetObservation(obs map[string]any) error { +// SetObservation for this AwsLambdaArn +func (tr *AwsLambdaArn) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *AWSLambdaARN) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this AWSLambdaARN -func (tr *AWSLambdaARN) GetID() string { +// 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) { +// 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 @@ -65,8 +61,8 @@ func (tr *AWSLambdaARN) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this AWSLambdaARN -func (tr *AWSLambdaARN) SetParameters(params map[string]any) error { +// SetParameters for this AwsLambdaArn +func (tr *AwsLambdaArn) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *AWSLambdaARN) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this AWSLambdaARN -func (tr *AWSLambdaARN) GetInitParameters() (map[string]any, error) { +// 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 @@ -84,8 +80,8 @@ func (tr *AWSLambdaARN) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this AWSLambdaARN -func (tr *AWSLambdaARN) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// 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()) @@ -114,10 +110,10 @@ func (tr *AWSLambdaARN) GetMergedParameters(shouldMergeInitProvider bool) (map[s return params, nil } -// LateInitialize this AWSLambdaARN using its observed tfState. +// 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{} +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") } @@ -128,6 +124,6 @@ func (tr *AWSLambdaARN) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AWSLambdaARN) GetTerraformSchemaVersion() int { +func (tr *AwsLambdaArn) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/integration/v1alpha1/zz_awslambdaarn_types.go b/apis/integration/v1beta1/zz_awslambdaarn_types.go similarity index 67% rename from apis/integration/v1alpha1/zz_awslambdaarn_types.go rename to apis/integration/v1beta1/zz_awslambdaarn_types.go index c9e965e..6a9cbf3 100755 --- a/apis/integration/v1alpha1/zz_awslambdaarn_types.go +++ b/apis/integration/v1beta1/zz_awslambdaarn_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AWSLambdaARNInitParameters struct { +type AwsLambdaArnInitParameters struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -28,7 +24,7 @@ type AWSLambdaARNInitParameters struct { LambdaArn *string `json:"lambdaArn,omitempty" tf:"lambda_arn,omitempty"` } -type AWSLambdaARNObservation struct { +type AwsLambdaArnObservation struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -42,7 +38,7 @@ type AWSLambdaARNObservation struct { LambdaArn *string `json:"lambdaArn,omitempty" tf:"lambda_arn,omitempty"` } -type AWSLambdaARNParameters struct { +type AwsLambdaArnParameters struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -55,10 +51,10 @@ type AWSLambdaARNParameters struct { LambdaArn *string `json:"lambdaArn,omitempty" tf:"lambda_arn,omitempty"` } -// AWSLambdaARNSpec defines the desired state of AWSLambdaARN -type AWSLambdaARNSpec struct { +// AwsLambdaArnSpec defines the desired state of AwsLambdaArn +type AwsLambdaArnSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AWSLambdaARNParameters `json:"forProvider"` + 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 @@ -69,51 +65,51 @@ type AWSLambdaARNSpec 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 AWSLambdaARNInitParameters `json:"initProvider,omitempty"` + InitProvider AwsLambdaArnInitParameters `json:"initProvider,omitempty"` } -// AWSLambdaARNStatus defines the observed state of AWSLambdaARN. -type AWSLambdaARNStatus struct { +// AwsLambdaArnStatus defines the observed state of AwsLambdaArn. +type AwsLambdaArnStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AWSLambdaARNObservation `json:"atProvider,omitempty"` + 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" +// AwsLambdaArn is the Schema for the AwsLambdaArns API. !>This resource is deprecated - use the datadog_integration_aws_account resource instead. 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. Note: If you are using AWS GovCloud or the AWS China* region, update the lambda_arn parameter for your environment. *All use of Datadog Services in (or in connection with environments within) mainland China is subject to the disclaimer published in the Restricted Service Locations section on our website. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +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"` + Spec AwsLambdaArnSpec `json:"spec"` + Status AwsLambdaArnStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AWSLambdaARNList contains a list of AWSLambdaARNs -type AWSLambdaARNList struct { +// AwsLambdaArnList contains a list of AwsLambdaArns +type AwsLambdaArnList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AWSLambdaARN `json:"items"` + 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) + 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{}) + SchemeBuilder.Register(&AwsLambdaArn{}, &AwsLambdaArnList{}) } diff --git a/apis/integration/v1alpha1/zz_awslogcollection_terraformed.go b/apis/integration/v1beta1/zz_awslogcollection_terraformed.go similarity index 67% rename from apis/integration/v1alpha1/zz_awslogcollection_terraformed.go rename to apis/integration/v1beta1/zz_awslogcollection_terraformed.go index 6bf0676..caa4c69 100755 --- a/apis/integration/v1alpha1/zz_awslogcollection_terraformed.go +++ b/apis/integration/v1beta1/zz_awslogcollection_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this AWSLogCollection -func (mg *AWSLogCollection) GetTerraformResourceType() string { +// 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 { +// 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) { +// 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 @@ -38,8 +34,8 @@ func (tr *AWSLogCollection) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this AWSLogCollection -func (tr *AWSLogCollection) SetObservation(obs map[string]any) error { +// SetObservation for this AwsLogCollection +func (tr *AwsLogCollection) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *AWSLogCollection) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this AWSLogCollection -func (tr *AWSLogCollection) GetID() string { +// 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) { +// 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 @@ -65,8 +61,8 @@ func (tr *AWSLogCollection) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this AWSLogCollection -func (tr *AWSLogCollection) SetParameters(params map[string]any) error { +// SetParameters for this AwsLogCollection +func (tr *AwsLogCollection) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *AWSLogCollection) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this AWSLogCollection -func (tr *AWSLogCollection) GetInitParameters() (map[string]any, error) { +// 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 @@ -84,8 +80,8 @@ func (tr *AWSLogCollection) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this AWSLogCollection -func (tr *AWSLogCollection) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// 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()) @@ -114,10 +110,10 @@ func (tr *AWSLogCollection) GetMergedParameters(shouldMergeInitProvider bool) (m return params, nil } -// LateInitialize this AWSLogCollection using its observed tfState. +// 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{} +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") } @@ -128,6 +124,6 @@ func (tr *AWSLogCollection) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AWSLogCollection) GetTerraformSchemaVersion() int { +func (tr *AwsLogCollection) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/integration/v1alpha1/zz_awslogcollection_types.go b/apis/integration/v1beta1/zz_awslogcollection_types.go similarity index 74% rename from apis/integration/v1alpha1/zz_awslogcollection_types.go rename to apis/integration/v1beta1/zz_awslogcollection_types.go index d955b6b..7211980 100755 --- a/apis/integration/v1alpha1/zz_awslogcollection_types.go +++ b/apis/integration/v1beta1/zz_awslogcollection_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AWSLogCollectionInitParameters struct { +type AwsLogCollectionInitParameters struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -28,7 +24,7 @@ type AWSLogCollectionInitParameters struct { Services []*string `json:"services,omitempty" tf:"services,omitempty"` } -type AWSLogCollectionObservation struct { +type AwsLogCollectionObservation struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -42,7 +38,7 @@ type AWSLogCollectionObservation struct { Services []*string `json:"services,omitempty" tf:"services,omitempty"` } -type AWSLogCollectionParameters struct { +type AwsLogCollectionParameters struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -55,10 +51,10 @@ type AWSLogCollectionParameters struct { Services []*string `json:"services,omitempty" tf:"services,omitempty"` } -// AWSLogCollectionSpec defines the desired state of AWSLogCollection -type AWSLogCollectionSpec struct { +// AwsLogCollectionSpec defines the desired state of AwsLogCollection +type AwsLogCollectionSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AWSLogCollectionParameters `json:"forProvider"` + 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 @@ -69,51 +65,51 @@ type AWSLogCollectionSpec 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 AWSLogCollectionInitParameters `json:"initProvider,omitempty"` + InitProvider AwsLogCollectionInitParameters `json:"initProvider,omitempty"` } -// AWSLogCollectionStatus defines the observed state of AWSLogCollection. -type AWSLogCollectionStatus struct { +// AwsLogCollectionStatus defines the observed state of AwsLogCollection. +type AwsLogCollectionStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AWSLogCollectionObservation `json:"atProvider,omitempty"` + 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" +// AwsLogCollection is the Schema for the AwsLogCollections API. !>This resource is deprecated - use the datadog_integration_aws_account resource instead. 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="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +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"` + Spec AwsLogCollectionSpec `json:"spec"` + Status AwsLogCollectionStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AWSLogCollectionList contains a list of AWSLogCollections -type AWSLogCollectionList struct { +// AwsLogCollectionList contains a list of AwsLogCollections +type AwsLogCollectionList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AWSLogCollection `json:"items"` + 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) + 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{}) + SchemeBuilder.Register(&AwsLogCollection{}, &AwsLogCollectionList{}) } diff --git a/apis/integration/v1alpha1/zz_awstagfilter_terraformed.go b/apis/integration/v1beta1/zz_awstagfilter_terraformed.go similarity index 68% rename from apis/integration/v1alpha1/zz_awstagfilter_terraformed.go rename to apis/integration/v1beta1/zz_awstagfilter_terraformed.go index 97dc40f..66a3677 100755 --- a/apis/integration/v1alpha1/zz_awstagfilter_terraformed.go +++ b/apis/integration/v1beta1/zz_awstagfilter_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this AWSTagFilter -func (mg *AWSTagFilter) GetTerraformResourceType() string { +// 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 { +// 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) { +// 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 @@ -38,8 +34,8 @@ func (tr *AWSTagFilter) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this AWSTagFilter -func (tr *AWSTagFilter) SetObservation(obs map[string]any) error { +// SetObservation for this AwsTagFilter +func (tr *AwsTagFilter) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *AWSTagFilter) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this AWSTagFilter -func (tr *AWSTagFilter) GetID() string { +// 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) { +// 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 @@ -65,8 +61,8 @@ func (tr *AWSTagFilter) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this AWSTagFilter -func (tr *AWSTagFilter) SetParameters(params map[string]any) error { +// SetParameters for this AwsTagFilter +func (tr *AwsTagFilter) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *AWSTagFilter) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this AWSTagFilter -func (tr *AWSTagFilter) GetInitParameters() (map[string]any, error) { +// 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 @@ -84,8 +80,8 @@ func (tr *AWSTagFilter) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this AWSTagFilter -func (tr *AWSTagFilter) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// 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()) @@ -114,10 +110,10 @@ func (tr *AWSTagFilter) GetMergedParameters(shouldMergeInitProvider bool) (map[s return params, nil } -// LateInitialize this AWSTagFilter using its observed tfState. +// 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{} +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") } @@ -128,6 +124,6 @@ func (tr *AWSTagFilter) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *AWSTagFilter) GetTerraformSchemaVersion() int { +func (tr *AwsTagFilter) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/integration/v1alpha1/zz_awstagfilter_types.go b/apis/integration/v1beta1/zz_awstagfilter_types.go similarity index 76% rename from apis/integration/v1alpha1/zz_awstagfilter_types.go rename to apis/integration/v1beta1/zz_awstagfilter_types.go index cd43b75..2a4e9b8 100755 --- a/apis/integration/v1alpha1/zz_awstagfilter_types.go +++ b/apis/integration/v1beta1/zz_awstagfilter_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,14 +13,14 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type AWSTagFilterInitParameters struct { +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`. + // (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. + // The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`, `step_functions`. Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` // (String) The tag filter string. @@ -32,7 +28,7 @@ type AWSTagFilterInitParameters struct { TagFilterStr *string `json:"tagFilterStr,omitempty" tf:"tag_filter_str,omitempty"` } -type AWSTagFilterObservation struct { +type AwsTagFilterObservation struct { // (String) Your AWS Account ID without dashes. // Your AWS Account ID without dashes. @@ -41,8 +37,8 @@ type AWSTagFilterObservation struct { // (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`. + // (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. + // The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`, `step_functions`. Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` // (String) The tag filter string. @@ -50,15 +46,15 @@ type AWSTagFilterObservation struct { TagFilterStr *string `json:"tagFilterStr,omitempty" tf:"tag_filter_str,omitempty"` } -type AWSTagFilterParameters struct { +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`. + // (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. + // The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`, `step_functions`. // +kubebuilder:validation:Optional Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` @@ -68,10 +64,10 @@ type AWSTagFilterParameters struct { TagFilterStr *string `json:"tagFilterStr,omitempty" tf:"tag_filter_str,omitempty"` } -// AWSTagFilterSpec defines the desired state of AWSTagFilter -type AWSTagFilterSpec struct { +// AwsTagFilterSpec defines the desired state of AwsTagFilter +type AwsTagFilterSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider AWSTagFilterParameters `json:"forProvider"` + 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 @@ -82,52 +78,52 @@ type AWSTagFilterSpec 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 AWSTagFilterInitParameters `json:"initProvider,omitempty"` + InitProvider AwsTagFilterInitParameters `json:"initProvider,omitempty"` } -// AWSTagFilterStatus defines the observed state of AWSTagFilter. -type AWSTagFilterStatus struct { +// AwsTagFilterStatus defines the observed state of AwsTagFilter. +type AwsTagFilterStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider AWSTagFilterObservation `json:"atProvider,omitempty"` + 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" +// AwsTagFilter is the Schema for the AwsTagFilters API. !>This resource is deprecated - use the datadog_integration_aws_account resource instead. Provides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +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"` + Spec AwsTagFilterSpec `json:"spec"` + Status AwsTagFilterStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// AWSTagFilterList contains a list of AWSTagFilters -type AWSTagFilterList struct { +// AwsTagFilterList contains a list of AwsTagFilters +type AwsTagFilterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []AWSTagFilter `json:"items"` + 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) + 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{}) + SchemeBuilder.Register(&AwsTagFilter{}, &AwsTagFilterList{}) } diff --git a/apis/integration/v1alpha1/zz_azure_terraformed.go b/apis/integration/v1beta1/zz_azure_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_azure_terraformed.go rename to apis/integration/v1beta1/zz_azure_terraformed.go index 987ff6f..dbd0385 100755 --- a/apis/integration/v1alpha1/zz_azure_terraformed.go +++ b/apis/integration/v1beta1/zz_azure_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *Azure) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this Azure func (tr *Azure) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"client_secret": "spec.forProvider.clientSecretSecretRef"} + return map[string]string{"client_secret": "clientSecretSecretRef"} } // GetObservation of this Azure diff --git a/apis/integration/v1alpha1/zz_azure_types.go b/apis/integration/v1beta1/zz_azure_types.go similarity index 76% rename from apis/integration/v1alpha1/zz_azure_types.go rename to apis/integration/v1beta1/zz_azure_types.go index a9ef9ed..5e5c29d 100755 --- a/apis/integration/v1alpha1/zz_azure_types.go +++ b/apis/integration/v1beta1/zz_azure_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,6 +27,10 @@ type AzureInitParameters struct { // Your Azure web application ID. 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. + 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 `""`. ContainerAppFilters *string `json:"containerAppFilters,omitempty" tf:"container_app_filters,omitempty"` @@ -49,13 +49,29 @@ type AzureInitParameters struct { // 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) Enable Azure metrics for your organization. Defaults to true. + // Enable Azure metrics for your organization. Defaults to `true`. + MetricsEnabled *bool `json:"metricsEnabled,omitempty" tf:"metrics_enabled,omitempty"` + + // (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + // Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`. + MetricsEnabledDefault *bool `json:"metricsEnabledDefault,omitempty" tf:"metrics_enabled_default,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"` + // (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) + // Configuration settings applied to resources from the specified Azure resource providers. + ResourceProviderConfigs []ResourceProviderConfigsInitParameters `json:"resourceProviderConfigs,omitempty" tf:"resource_provider_configs,omitempty"` + // (String) Your Azure Active Directory ID. // Your Azure Active Directory ID. TenantName *string `json:"tenantName,omitempty" tf:"tenant_name,omitempty"` + + // (Boolean) Enable azure.usage metrics for your organization. Defaults to true. + // Enable azure.usage metrics for your organization. Defaults to `true`. + UsageMetricsEnabled *bool `json:"usageMetricsEnabled,omitempty" tf:"usage_metrics_enabled,omitempty"` } type AzureObservation struct { @@ -93,13 +109,29 @@ type AzureObservation struct { // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` + // (Boolean) Enable Azure metrics for your organization. Defaults to true. + // Enable Azure metrics for your organization. Defaults to `true`. + MetricsEnabled *bool `json:"metricsEnabled,omitempty" tf:"metrics_enabled,omitempty"` + + // (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + // Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`. + MetricsEnabledDefault *bool `json:"metricsEnabledDefault,omitempty" tf:"metrics_enabled_default,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"` + // (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) + // Configuration settings applied to resources from the specified Azure resource providers. + ResourceProviderConfigs []ResourceProviderConfigsObservation `json:"resourceProviderConfigs,omitempty" tf:"resource_provider_configs,omitempty"` + // (String) Your Azure Active Directory ID. // Your Azure Active Directory ID. TenantName *string `json:"tenantName,omitempty" tf:"tenant_name,omitempty"` + + // (Boolean) Enable azure.usage metrics for your organization. Defaults to true. + // Enable azure.usage metrics for your organization. Defaults to `true`. + UsageMetricsEnabled *bool `json:"usageMetricsEnabled,omitempty" tf:"usage_metrics_enabled,omitempty"` } type AzureParameters struct { @@ -146,15 +178,64 @@ type AzureParameters struct { // +kubebuilder:validation:Optional HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + // (Boolean) Enable Azure metrics for your organization. Defaults to true. + // Enable Azure metrics for your organization. Defaults to `true`. + // +kubebuilder:validation:Optional + MetricsEnabled *bool `json:"metricsEnabled,omitempty" tf:"metrics_enabled,omitempty"` + + // (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + // Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`. + // +kubebuilder:validation:Optional + MetricsEnabledDefault *bool `json:"metricsEnabledDefault,omitempty" tf:"metrics_enabled_default,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"` + // (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) + // Configuration settings applied to resources from the specified Azure resource providers. + // +kubebuilder:validation:Optional + ResourceProviderConfigs []ResourceProviderConfigsParameters `json:"resourceProviderConfigs,omitempty" tf:"resource_provider_configs,omitempty"` + // (String) Your Azure Active Directory ID. // Your Azure Active Directory ID. // +kubebuilder:validation:Optional TenantName *string `json:"tenantName,omitempty" tf:"tenant_name,omitempty"` + + // (Boolean) Enable azure.usage metrics for your organization. Defaults to true. + // Enable azure.usage metrics for your organization. Defaults to `true`. + // +kubebuilder:validation:Optional + UsageMetricsEnabled *bool `json:"usageMetricsEnabled,omitempty" tf:"usage_metrics_enabled,omitempty"` +} + +type ResourceProviderConfigsInitParameters struct { + + // (Boolean) Enable Azure metrics for your organization. Defaults to true. + MetricsEnabled *bool `json:"metricsEnabled,omitempty" tf:"metrics_enabled"` + + // (String) + Namespace *string `json:"namespace,omitempty" tf:"namespace"` +} + +type ResourceProviderConfigsObservation struct { + + // (Boolean) Enable Azure metrics for your organization. Defaults to true. + MetricsEnabled *bool `json:"metricsEnabled,omitempty" tf:"metrics_enabled,omitempty"` + + // (String) + Namespace *string `json:"namespace,omitempty" tf:"namespace,omitempty"` +} + +type ResourceProviderConfigsParameters struct { + + // (Boolean) Enable Azure metrics for your organization. Defaults to true. + // +kubebuilder:validation:Optional + MetricsEnabled *bool `json:"metricsEnabled,omitempty" tf:"metrics_enabled"` + + // (String) + // +kubebuilder:validation:Optional + Namespace *string `json:"namespace,omitempty" tf:"namespace"` } // AzureSpec defines the desired state of Azure @@ -185,8 +266,8 @@ type AzureStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_cloudflareaccount_terraformed.go b/apis/integration/v1beta1/zz_cloudflareaccount_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_cloudflareaccount_terraformed.go rename to apis/integration/v1beta1/zz_cloudflareaccount_terraformed.go index 5b7604d..76c9089 100755 --- a/apis/integration/v1alpha1/zz_cloudflareaccount_terraformed.go +++ b/apis/integration/v1beta1/zz_cloudflareaccount_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *CloudflareAccount) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this CloudflareAccount func (tr *CloudflareAccount) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"api_key": "spec.forProvider.apiKeySecretRef"} + return map[string]string{"api_key": "apiKeySecretRef"} } // GetObservation of this CloudflareAccount diff --git a/apis/integration/v1alpha1/zz_cloudflareaccount_types.go b/apis/integration/v1beta1/zz_cloudflareaccount_types.go similarity index 81% rename from apis/integration/v1alpha1/zz_cloudflareaccount_types.go rename to apis/integration/v1beta1/zz_cloudflareaccount_types.go index e2d371f..d997ef4 100755 --- a/apis/integration/v1alpha1/zz_cloudflareaccount_types.go +++ b/apis/integration/v1beta1/zz_cloudflareaccount_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,6 +15,10 @@ import ( type CloudflareAccountInitParameters struct { + // (String, Sensitive) The API key (or token) for the Cloudflare account. + // The API key (or token) for the Cloudflare account. + 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. Email *string `json:"email,omitempty" tf:"email,omitempty"` @@ -26,6 +26,11 @@ type CloudflareAccountInitParameters struct { // (String) The name of the Cloudflare account. // The name of the Cloudflare account. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). + // An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`). + // +listType=set + Resources []*string `json:"resources,omitempty" tf:"resources,omitempty"` } type CloudflareAccountObservation struct { @@ -40,6 +45,11 @@ type CloudflareAccountObservation struct { // (String) The name of the Cloudflare account. // The name of the Cloudflare account. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). + // An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`). + // +listType=set + Resources []*string `json:"resources,omitempty" tf:"resources,omitempty"` } type CloudflareAccountParameters struct { @@ -58,6 +68,12 @@ type CloudflareAccountParameters struct { // The name of the Cloudflare account. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). + // An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`). + // +kubebuilder:validation:Optional + // +listType=set + Resources []*string `json:"resources,omitempty" tf:"resources,omitempty"` } // CloudflareAccountSpec defines the desired state of CloudflareAccount @@ -87,9 +103,9 @@ type CloudflareAccountStatus struct { // +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" +// CloudflareAccount is the Schema for the CloudflareAccounts API. Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integration_cloudflare_account. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_confluentaccount_terraformed.go b/apis/integration/v1beta1/zz_confluentaccount_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_confluentaccount_terraformed.go rename to apis/integration/v1beta1/zz_confluentaccount_terraformed.go index 97b6ffd..d2abb7b 100755 --- a/apis/integration/v1alpha1/zz_confluentaccount_terraformed.go +++ b/apis/integration/v1beta1/zz_confluentaccount_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *ConfluentAccount) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this ConfluentAccount func (tr *ConfluentAccount) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"api_secret": "spec.forProvider.apiSecretSecretRef"} + return map[string]string{"api_secret": "apiSecretSecretRef"} } // GetObservation of this ConfluentAccount diff --git a/apis/integration/v1alpha1/zz_confluentaccount_types.go b/apis/integration/v1beta1/zz_confluentaccount_types.go similarity index 94% rename from apis/integration/v1alpha1/zz_confluentaccount_types.go rename to apis/integration/v1beta1/zz_confluentaccount_types.go index 35e6d3b..d561826 100755 --- a/apis/integration/v1alpha1/zz_confluentaccount_types.go +++ b/apis/integration/v1beta1/zz_confluentaccount_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -23,6 +19,10 @@ type ConfluentAccountInitParameters struct { // The API key associated with your Confluent account. 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. + 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. // +listType=set @@ -90,9 +90,9 @@ type ConfluentAccountStatus struct { // +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" +// ConfluentAccount is the Schema for the ConfluentAccounts API. Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integration_confluent_account. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_confluentresource_terraformed.go b/apis/integration/v1beta1/zz_confluentresource_terraformed.go similarity index 96% rename from apis/integration/v1alpha1/zz_confluentresource_terraformed.go rename to apis/integration/v1beta1/zz_confluentresource_terraformed.go index 97f7908..6cd480d 100755 --- a/apis/integration/v1alpha1/zz_confluentresource_terraformed.go +++ b/apis/integration/v1beta1/zz_confluentresource_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/integration/v1alpha1/zz_confluentresource_types.go b/apis/integration/v1beta1/zz_confluentresource_types.go similarity index 87% rename from apis/integration/v1alpha1/zz_confluentresource_types.go rename to apis/integration/v1beta1/zz_confluentresource_types.go index 65f803b..8b5f579 100755 --- a/apis/integration/v1alpha1/zz_confluentresource_types.go +++ b/apis/integration/v1beta1/zz_confluentresource_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -21,8 +17,17 @@ type ConfluentResourceInitParameters struct { // (String) Confluent Account ID. // Confluent Account ID. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/integration/v1beta1.ConfluentAccount AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // Reference to a ConfluentAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDRef *v1.Reference `json:"accountIdRef,omitempty" tf:"-"` + + // Selector for a ConfluentAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDSelector *v1.Selector `json:"accountIdSelector,omitempty" tf:"-"` + // (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"` @@ -72,9 +77,18 @@ type ConfluentResourceParameters struct { // (String) Confluent Account ID. // Confluent Account ID. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/integration/v1beta1.ConfluentAccount // +kubebuilder:validation:Optional AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // Reference to a ConfluentAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDRef *v1.Reference `json:"accountIdRef,omitempty" tf:"-"` + + // Selector for a ConfluentAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDSelector *v1.Selector `json:"accountIdSelector,omitempty" tf:"-"` + // (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 @@ -124,16 +138,15 @@ type ConfluentResourceStatus struct { // +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" +// ConfluentResource is the Schema for the ConfluentResources API. Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integration_confluent_resource. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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"` diff --git a/apis/integration/v1alpha1/zz_fastlyaccount_terraformed.go b/apis/integration/v1beta1/zz_fastlyaccount_terraformed.go similarity index 96% rename from apis/integration/v1alpha1/zz_fastlyaccount_terraformed.go rename to apis/integration/v1beta1/zz_fastlyaccount_terraformed.go index dcf8208..d2aea7d 100755 --- a/apis/integration/v1alpha1/zz_fastlyaccount_terraformed.go +++ b/apis/integration/v1beta1/zz_fastlyaccount_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/integration/v1alpha1/zz_fastlyaccount_types.go b/apis/integration/v1beta1/zz_fastlyaccount_types.go similarity index 96% rename from apis/integration/v1alpha1/zz_fastlyaccount_types.go rename to apis/integration/v1beta1/zz_fastlyaccount_types.go index db749f0..89c35d0 100755 --- a/apis/integration/v1alpha1/zz_fastlyaccount_types.go +++ b/apis/integration/v1beta1/zz_fastlyaccount_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -82,9 +78,9 @@ type FastlyAccountStatus struct { // +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" +// FastlyAccount is the Schema for the FastlyAccounts API. Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integration_fastly_account. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_fastlyservice_terraformed.go b/apis/integration/v1beta1/zz_fastlyservice_terraformed.go similarity index 96% rename from apis/integration/v1alpha1/zz_fastlyservice_terraformed.go rename to apis/integration/v1beta1/zz_fastlyservice_terraformed.go index f782b32..319ceaa 100755 --- a/apis/integration/v1alpha1/zz_fastlyservice_terraformed.go +++ b/apis/integration/v1beta1/zz_fastlyservice_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/integration/v1alpha1/zz_fastlyservice_types.go b/apis/integration/v1beta1/zz_fastlyservice_types.go similarity index 83% rename from apis/integration/v1alpha1/zz_fastlyservice_types.go rename to apis/integration/v1beta1/zz_fastlyservice_types.go index 01ac6a1..c11c823 100755 --- a/apis/integration/v1alpha1/zz_fastlyservice_types.go +++ b/apis/integration/v1beta1/zz_fastlyservice_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -21,8 +17,17 @@ type FastlyServiceInitParameters struct { // (String) Fastly Account id. // Fastly Account id. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/integration/v1beta1.FastlyAccount AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // Reference to a FastlyAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDRef *v1.Reference `json:"accountIdRef,omitempty" tf:"-"` + + // Selector for a FastlyAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDSelector *v1.Selector `json:"accountIdSelector,omitempty" tf:"-"` + // (String) The ID of the Fastly service. // The ID of the Fastly service. ServiceID *string `json:"serviceId,omitempty" tf:"service_id,omitempty"` @@ -56,9 +61,18 @@ type FastlyServiceParameters struct { // (String) Fastly Account id. // Fastly Account id. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/integration/v1beta1.FastlyAccount // +kubebuilder:validation:Optional AccountID *string `json:"accountId,omitempty" tf:"account_id,omitempty"` + // Reference to a FastlyAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDRef *v1.Reference `json:"accountIdRef,omitempty" tf:"-"` + + // Selector for a FastlyAccount in integration to populate accountId. + // +kubebuilder:validation:Optional + AccountIDSelector *v1.Selector `json:"accountIdSelector,omitempty" tf:"-"` + // (String) The ID of the Fastly service. // The ID of the Fastly service. // +kubebuilder:validation:Optional @@ -98,9 +112,9 @@ type FastlyServiceStatus struct { // +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" +// FastlyService is the Schema for the FastlyServices API. Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integration_fastly_service. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_gcp_terraformed.go b/apis/integration/v1beta1/zz_gcp_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_gcp_terraformed.go rename to apis/integration/v1beta1/zz_gcp_terraformed.go index c05ff79..28ee286 100755 --- a/apis/integration/v1alpha1/zz_gcp_terraformed.go +++ b/apis/integration/v1beta1/zz_gcp_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *GCP) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this GCP func (tr *GCP) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"private_key": "spec.forProvider.privateKeySecretRef"} + return map[string]string{"private_key": "privateKeySecretRef"} } // GetObservation of this GCP diff --git a/apis/integration/v1alpha1/zz_gcp_types.go b/apis/integration/v1beta1/zz_gcp_types.go similarity index 61% rename from apis/integration/v1alpha1/zz_gcp_types.go rename to apis/integration/v1beta1/zz_gcp_types.go index 309fc18..2a4532a 100755 --- a/apis/integration/v1alpha1/zz_gcp_types.go +++ b/apis/integration/v1beta1/zz_gcp_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,21 +27,42 @@ type GCPInitParameters struct { // 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`. + // (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // +listType=set + CloudRunRevisionFilters []*string `json:"cloudRunRevisionFilters,omitempty" tf:"cloud_run_revision_filters,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. Defaults to false. + // Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. 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. + // (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. Defaults to "". + // 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. Defaults to `""`. HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + // (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // When enabled, Datadog scans for all resource change data in your Google Cloud environment. + IsResourceChangeCollectionEnabled *bool `json:"isResourceChangeCollectionEnabled,omitempty" tf:"is_resource_change_collection_enabled,omitempty"` + + // (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + // When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + IsSecurityCommandCenterEnabled *bool `json:"isSecurityCommandCenterEnabled,omitempty" tf:"is_security_command_center_enabled,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, Sensitive) Your private key name found in your JSON service account key. + // Your private key name found in your JSON service account key. + 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. ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + // When enabled, Datadog scans for all resources in your GCP environment. + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` } type GCPObservation struct { @@ -62,17 +79,30 @@ type GCPObservation struct { // 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`. + // (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // +listType=set + CloudRunRevisionFilters []*string `json:"cloudRunRevisionFilters,omitempty" tf:"cloud_run_revision_filters,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. Defaults to false. + // Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. 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. + // (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. Defaults to "". + // 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. 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 scans for all resource change data in your Google Cloud environment. + // When enabled, Datadog scans for all resource change data in your Google Cloud environment. + IsResourceChangeCollectionEnabled *bool `json:"isResourceChangeCollectionEnabled,omitempty" tf:"is_resource_change_collection_enabled,omitempty"` + + // (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + // When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + IsSecurityCommandCenterEnabled *bool `json:"isSecurityCommandCenterEnabled,omitempty" tf:"is_security_command_center_enabled,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"` @@ -80,6 +110,10 @@ type GCPObservation struct { // (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"` + + // (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + // When enabled, Datadog scans for all resources in your GCP environment. + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` } type GCPParameters struct { @@ -99,16 +133,32 @@ type GCPParameters struct { // +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`. + // (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // +kubebuilder:validation:Optional + // +listType=set + CloudRunRevisionFilters []*string `json:"cloudRunRevisionFilters,omitempty" tf:"cloud_run_revision_filters,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. Defaults to false. + // Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. 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. + // (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. Defaults to "". + // 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. Defaults to `""`. // +kubebuilder:validation:Optional HostFilters *string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + // (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // +kubebuilder:validation:Optional + IsResourceChangeCollectionEnabled *bool `json:"isResourceChangeCollectionEnabled,omitempty" tf:"is_resource_change_collection_enabled,omitempty"` + + // (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + // When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + // +kubebuilder:validation:Optional + IsSecurityCommandCenterEnabled *bool `json:"isSecurityCommandCenterEnabled,omitempty" tf:"is_security_command_center_enabled,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 @@ -123,6 +173,11 @@ type GCPParameters struct { // Your Google Cloud project ID found in your JSON service account key. // +kubebuilder:validation:Optional ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + // When enabled, Datadog scans for all resources in your GCP environment. + // +kubebuilder:validation:Optional + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` } // GCPSpec defines the desired state of GCP @@ -152,9 +207,9 @@ type GCPStatus struct { // +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" +// 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="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_gcpsts_terraformed.go b/apis/integration/v1beta1/zz_gcpsts_terraformed.go similarity index 71% rename from apis/integration/v1alpha1/zz_gcpsts_terraformed.go rename to apis/integration/v1beta1/zz_gcpsts_terraformed.go index c129b50..224f4ed 100755 --- a/apis/integration/v1alpha1/zz_gcpsts_terraformed.go +++ b/apis/integration/v1beta1/zz_gcpsts_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this GCPSTS -func (mg *GCPSTS) GetTerraformResourceType() string { +// 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 { +// 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) { +// 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 @@ -38,8 +34,8 @@ func (tr *GCPSTS) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this GCPSTS -func (tr *GCPSTS) SetObservation(obs map[string]any) error { +// SetObservation for this GCPSts +func (tr *GCPSts) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *GCPSTS) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this GCPSTS -func (tr *GCPSTS) GetID() string { +// 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) { +// 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 @@ -65,8 +61,8 @@ func (tr *GCPSTS) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this GCPSTS -func (tr *GCPSTS) SetParameters(params map[string]any) error { +// SetParameters for this GCPSts +func (tr *GCPSts) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *GCPSTS) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this GCPSTS -func (tr *GCPSTS) GetInitParameters() (map[string]any, error) { +// 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 @@ -84,8 +80,8 @@ func (tr *GCPSTS) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this GCPSTS -func (tr *GCPSTS) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// 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()) @@ -114,10 +110,10 @@ func (tr *GCPSTS) GetMergedParameters(shouldMergeInitProvider bool) (map[string] return params, nil } -// LateInitialize this GCPSTS using its observed tfState. +// 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{} +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") } @@ -128,6 +124,6 @@ func (tr *GCPSTS) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *GCPSTS) GetTerraformSchemaVersion() int { +func (tr *GCPSts) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/integration/v1beta1/zz_gcpsts_types.go b/apis/integration/v1beta1/zz_gcpsts_types.go new file mode 100755 index 0000000..467e51a --- /dev/null +++ b/apis/integration/v1beta1/zz_gcpsts_types.go @@ -0,0 +1,273 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +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 { + + // (Set of String) Tags to be associated with GCP metrics and service checks from your account. + // Tags to be associated with GCP metrics and service checks from your account. + // +listType=set + AccountTags []*string `json:"accountTags,omitempty" tf:"account_tags,omitempty"` + + // (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) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // +listType=set + CloudRunRevisionFilters []*string `json:"cloudRunRevisionFilters,omitempty" tf:"cloud_run_revision_filters,omitempty"` + + // (Set of String) Your Host Filters. + // Your Host Filters. + // +listType=set + HostFilters []*string `json:"hostFilters,omitempty" tf:"host_filters,omitempty"` + + // (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + // Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. + IsCspmEnabled *bool `json:"isCspmEnabled,omitempty" tf:"is_cspm_enabled,omitempty"` + + // Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + // When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + IsPerProjectQuotaEnabled *bool `json:"isPerProjectQuotaEnabled,omitempty" tf:"is_per_project_quota_enabled,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // When enabled, Datadog scans for all resource change data in your Google Cloud environment. + IsResourceChangeCollectionEnabled *bool `json:"isResourceChangeCollectionEnabled,omitempty" tf:"is_resource_change_collection_enabled,omitempty"` + + // (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + // When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + IsSecurityCommandCenterEnabled *bool `json:"isSecurityCommandCenterEnabled,omitempty" tf:"is_security_command_center_enabled,omitempty"` + + // (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + // Configuration for a GCP metric namespace. + MetricNamespaceConfigs []MetricNamespaceConfigsInitParameters `json:"metricNamespaceConfigs,omitempty" tf:"metric_namespace_configs,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + // When enabled, Datadog scans for all resources in your GCP environment. + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` +} + +type GCPStsObservation struct { + + // (Set of String) Tags to be associated with GCP metrics and service checks from your account. + // Tags to be associated with GCP metrics and service checks from your account. + // +listType=set + AccountTags []*string `json:"accountTags,omitempty" tf:"account_tags,omitempty"` + + // (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) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // +listType=set + CloudRunRevisionFilters []*string `json:"cloudRunRevisionFilters,omitempty" tf:"cloud_run_revision_filters,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) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + // Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. + IsCspmEnabled *bool `json:"isCspmEnabled,omitempty" tf:"is_cspm_enabled,omitempty"` + + // Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + // When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + IsPerProjectQuotaEnabled *bool `json:"isPerProjectQuotaEnabled,omitempty" tf:"is_per_project_quota_enabled,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // When enabled, Datadog scans for all resource change data in your Google Cloud environment. + IsResourceChangeCollectionEnabled *bool `json:"isResourceChangeCollectionEnabled,omitempty" tf:"is_resource_change_collection_enabled,omitempty"` + + // (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + // When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + IsSecurityCommandCenterEnabled *bool `json:"isSecurityCommandCenterEnabled,omitempty" tf:"is_security_command_center_enabled,omitempty"` + + // (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + // Configuration for a GCP metric namespace. + MetricNamespaceConfigs []MetricNamespaceConfigsObservation `json:"metricNamespaceConfigs,omitempty" tf:"metric_namespace_configs,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + // When enabled, Datadog scans for all resources in your GCP environment. + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` +} + +type GCPStsParameters struct { + + // (Set of String) Tags to be associated with GCP metrics and service checks from your account. + // Tags to be associated with GCP metrics and service checks from your account. + // +kubebuilder:validation:Optional + // +listType=set + AccountTags []*string `json:"accountTags,omitempty" tf:"account_tags,omitempty"` + + // (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) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + // +kubebuilder:validation:Optional + // +listType=set + CloudRunRevisionFilters []*string `json:"cloudRunRevisionFilters,omitempty" tf:"cloud_run_revision_filters,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) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + // Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. + // +kubebuilder:validation:Optional + IsCspmEnabled *bool `json:"isCspmEnabled,omitempty" tf:"is_cspm_enabled,omitempty"` + + // Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + // When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + // +kubebuilder:validation:Optional + IsPerProjectQuotaEnabled *bool `json:"isPerProjectQuotaEnabled,omitempty" tf:"is_per_project_quota_enabled,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // When enabled, Datadog scans for all resource change data in your Google Cloud environment. + // +kubebuilder:validation:Optional + IsResourceChangeCollectionEnabled *bool `json:"isResourceChangeCollectionEnabled,omitempty" tf:"is_resource_change_collection_enabled,omitempty"` + + // (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + // When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + // +kubebuilder:validation:Optional + IsSecurityCommandCenterEnabled *bool `json:"isSecurityCommandCenterEnabled,omitempty" tf:"is_security_command_center_enabled,omitempty"` + + // (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + // Configuration for a GCP metric namespace. + // +kubebuilder:validation:Optional + MetricNamespaceConfigs []MetricNamespaceConfigsParameters `json:"metricNamespaceConfigs,omitempty" tf:"metric_namespace_configs,omitempty"` + + // (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + // When enabled, Datadog scans for all resources in your GCP environment. + // +kubebuilder:validation:Optional + ResourceCollectionEnabled *bool `json:"resourceCollectionEnabled,omitempty" tf:"resource_collection_enabled,omitempty"` +} + +type MetricNamespaceConfigsInitParameters struct { + + // (Boolean) + Disabled *bool `json:"disabled,omitempty" tf:"disabled"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id"` +} + +type MetricNamespaceConfigsObservation struct { + + // (Boolean) + Disabled *bool `json:"disabled,omitempty" tf:"disabled,omitempty"` + + // (String) The ID of this resource. + ID *string `json:"id,omitempty" tf:"id,omitempty"` +} + +type MetricNamespaceConfigsParameters struct { + + // (Boolean) + // +kubebuilder:validation:Optional + Disabled *bool `json:"disabled,omitempty" tf:"disabled"` + + // (String) The ID of this resource. + // +kubebuilder:validation:Optional + ID *string `json:"id,omitempty" tf:"id"` +} + +// 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="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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/v1beta1/zz_generated.conversion_hubs.go similarity index 78% rename from apis/integration/v1alpha1/zz_generated.conversion_hubs.go rename to apis/integration/v1beta1/zz_generated.conversion_hubs.go index c0e819e..544bc30 100755 --- a/apis/integration/v1alpha1/zz_generated.conversion_hubs.go +++ b/apis/integration/v1beta1/zz_generated.conversion_hubs.go @@ -1,29 +1,25 @@ -// 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 +package v1beta1 // Hub marks this type as a conversion hub. -func (tr *AWS) Hub() {} +func (tr *Aws) Hub() {} // Hub marks this type as a conversion hub. -func (tr *AWSEventBridge) Hub() {} +func (tr *AwsEventBridge) Hub() {} // Hub marks this type as a conversion hub. -func (tr *AWSLambdaARN) Hub() {} +func (tr *AwsLambdaArn) Hub() {} // Hub marks this type as a conversion hub. -func (tr *AWSLogCollection) Hub() {} +func (tr *AwsLogCollection) Hub() {} // Hub marks this type as a conversion hub. -func (tr *AWSTagFilter) Hub() {} +func (tr *AwsTagFilter) Hub() {} // Hub marks this type as a conversion hub. func (tr *Azure) Hub() {} @@ -47,7 +43,7 @@ func (tr *FastlyService) Hub() {} func (tr *GCP) Hub() {} // Hub marks this type as a conversion hub. -func (tr *GCPSTS) Hub() {} +func (tr *GCPSts) Hub() {} // Hub marks this type as a conversion hub. func (tr *OpsgenieServiceObject) Hub() {} diff --git a/apis/integration/v1alpha1/zz_generated.deepcopy.go b/apis/integration/v1beta1/zz_generated.deepcopy.go similarity index 79% rename from apis/integration/v1alpha1/zz_generated.deepcopy.go rename to apis/integration/v1beta1/zz_generated.deepcopy.go index 50fab55..f112116 100644 --- a/apis/integration/v1alpha1/zz_generated.deepcopy.go +++ b/apis/integration/v1beta1/zz_generated.deepcopy.go @@ -6,7 +6,7 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( "github.com/crossplane/crossplane-runtime/apis/common/v1" @@ -14,7 +14,7 @@ import ( ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWS) DeepCopyInto(out *AWS) { +func (in *Aws) DeepCopyInto(out *Aws) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -22,18 +22,18 @@ func (in *AWS) DeepCopyInto(out *AWS) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWS. -func (in *AWS) DeepCopy() *AWS { +// 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) + 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 { +func (in *Aws) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -41,7 +41,7 @@ func (in *AWS) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSEventBridge) DeepCopyInto(out *AWSEventBridge) { +func (in *AwsEventBridge) DeepCopyInto(out *AwsEventBridge) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -49,18 +49,18 @@ func (in *AWSEventBridge) DeepCopyInto(out *AWSEventBridge) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridge. -func (in *AWSEventBridge) DeepCopy() *AWSEventBridge { +// 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) + 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 { +func (in *AwsEventBridge) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -68,7 +68,7 @@ func (in *AWSEventBridge) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSEventBridgeInitParameters) DeepCopyInto(out *AWSEventBridgeInitParameters) { +func (in *AwsEventBridgeInitParameters) DeepCopyInto(out *AwsEventBridgeInitParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -92,42 +92,42 @@ func (in *AWSEventBridgeInitParameters) DeepCopyInto(out *AWSEventBridgeInitPara } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeInitParameters. -func (in *AWSEventBridgeInitParameters) DeepCopy() *AWSEventBridgeInitParameters { +// 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) + 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) { +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)) + *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 { +// 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) + 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 { +func (in *AwsEventBridgeList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -135,7 +135,7 @@ func (in *AWSEventBridgeList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSEventBridgeObservation) DeepCopyInto(out *AWSEventBridgeObservation) { +func (in *AwsEventBridgeObservation) DeepCopyInto(out *AwsEventBridgeObservation) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -164,18 +164,18 @@ func (in *AWSEventBridgeObservation) DeepCopyInto(out *AWSEventBridgeObservation } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeObservation. -func (in *AWSEventBridgeObservation) DeepCopy() *AWSEventBridgeObservation { +// 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) + 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) { +func (in *AwsEventBridgeParameters) DeepCopyInto(out *AwsEventBridgeParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -199,53 +199,53 @@ func (in *AWSEventBridgeParameters) DeepCopyInto(out *AWSEventBridgeParameters) } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSEventBridgeParameters. -func (in *AWSEventBridgeParameters) DeepCopy() *AWSEventBridgeParameters { +// 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) + 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) { +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 { +// 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) + 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) { +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 { +// 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) + 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) { +func (in *AwsInitParameters) DeepCopyInto(out *AwsInitParameters) { *out = *in if in.AccessKeyID != nil { in, out := &in.AccessKeyID, &out.AccessKeyID @@ -289,6 +289,11 @@ func (in *AWSInitParameters) DeepCopyInto(out *AWSInitParameters) { } } } + if in.ExtendedResourceCollectionEnabled != nil { + in, out := &in.ExtendedResourceCollectionEnabled, &out.ExtendedResourceCollectionEnabled + *out = new(string) + **out = **in + } if in.FilterTags != nil { in, out := &in.FilterTags, &out.FilterTags *out = make([]*string, len(*in)) @@ -326,20 +331,25 @@ func (in *AWSInitParameters) DeepCopyInto(out *AWSInitParameters) { *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 AWSInitParameters. -func (in *AWSInitParameters) DeepCopy() *AWSInitParameters { +// 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) + 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) { +func (in *AwsLambdaArn) DeepCopyInto(out *AwsLambdaArn) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -347,18 +357,18 @@ func (in *AWSLambdaARN) DeepCopyInto(out *AWSLambdaARN) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARN. -func (in *AWSLambdaARN) DeepCopy() *AWSLambdaARN { +// 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) + 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 { +func (in *AwsLambdaArn) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -366,7 +376,7 @@ func (in *AWSLambdaARN) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSLambdaARNInitParameters) DeepCopyInto(out *AWSLambdaARNInitParameters) { +func (in *AwsLambdaArnInitParameters) DeepCopyInto(out *AwsLambdaArnInitParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -380,42 +390,42 @@ func (in *AWSLambdaARNInitParameters) DeepCopyInto(out *AWSLambdaARNInitParamete } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNInitParameters. -func (in *AWSLambdaARNInitParameters) DeepCopy() *AWSLambdaARNInitParameters { +// 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) + 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) { +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)) + *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 { +// 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) + 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 { +func (in *AwsLambdaArnList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -423,7 +433,7 @@ func (in *AWSLambdaARNList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSLambdaARNObservation) DeepCopyInto(out *AWSLambdaARNObservation) { +func (in *AwsLambdaArnObservation) DeepCopyInto(out *AwsLambdaArnObservation) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -442,18 +452,18 @@ func (in *AWSLambdaARNObservation) DeepCopyInto(out *AWSLambdaARNObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNObservation. -func (in *AWSLambdaARNObservation) DeepCopy() *AWSLambdaARNObservation { +// 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) + 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) { +func (in *AwsLambdaArnParameters) DeepCopyInto(out *AwsLambdaArnParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -467,77 +477,77 @@ func (in *AWSLambdaARNParameters) DeepCopyInto(out *AWSLambdaARNParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLambdaARNParameters. -func (in *AWSLambdaARNParameters) DeepCopy() *AWSLambdaARNParameters { +// 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) + 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) { +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 { +// 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) + 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) { +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 { +// 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) + 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) { +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)) + *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 { +// 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) + 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 { +func (in *AwsList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -545,7 +555,7 @@ func (in *AWSList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSLogCollection) DeepCopyInto(out *AWSLogCollection) { +func (in *AwsLogCollection) DeepCopyInto(out *AwsLogCollection) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -553,18 +563,18 @@ func (in *AWSLogCollection) DeepCopyInto(out *AWSLogCollection) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollection. -func (in *AWSLogCollection) DeepCopy() *AWSLogCollection { +// 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) + 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 { +func (in *AwsLogCollection) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -572,7 +582,7 @@ func (in *AWSLogCollection) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSLogCollectionInitParameters) DeepCopyInto(out *AWSLogCollectionInitParameters) { +func (in *AwsLogCollectionInitParameters) DeepCopyInto(out *AwsLogCollectionInitParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -592,42 +602,42 @@ func (in *AWSLogCollectionInitParameters) DeepCopyInto(out *AWSLogCollectionInit } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionInitParameters. -func (in *AWSLogCollectionInitParameters) DeepCopy() *AWSLogCollectionInitParameters { +// 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) + 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) { +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)) + *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 { +// 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) + 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 { +func (in *AwsLogCollectionList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -635,7 +645,7 @@ func (in *AWSLogCollectionList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSLogCollectionObservation) DeepCopyInto(out *AWSLogCollectionObservation) { +func (in *AwsLogCollectionObservation) DeepCopyInto(out *AwsLogCollectionObservation) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -660,18 +670,18 @@ func (in *AWSLogCollectionObservation) DeepCopyInto(out *AWSLogCollectionObserva } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionObservation. -func (in *AWSLogCollectionObservation) DeepCopy() *AWSLogCollectionObservation { +// 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) + 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) { +func (in *AwsLogCollectionParameters) DeepCopyInto(out *AwsLogCollectionParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -691,53 +701,53 @@ func (in *AWSLogCollectionParameters) DeepCopyInto(out *AWSLogCollectionParamete } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSLogCollectionParameters. -func (in *AWSLogCollectionParameters) DeepCopy() *AWSLogCollectionParameters { +// 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) + 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) { +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 { +// 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) + 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) { +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 { +// 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) + 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) { +func (in *AwsObservation) DeepCopyInto(out *AwsObservation) { *out = *in if in.AccessKeyID != nil { in, out := &in.AccessKeyID, &out.AccessKeyID @@ -781,6 +791,11 @@ func (in *AWSObservation) DeepCopyInto(out *AWSObservation) { } } } + if in.ExtendedResourceCollectionEnabled != nil { + in, out := &in.ExtendedResourceCollectionEnabled, &out.ExtendedResourceCollectionEnabled + *out = new(string) + **out = **in + } if in.ExternalID != nil { in, out := &in.ExternalID, &out.ExternalID *out = new(string) @@ -830,18 +845,18 @@ func (in *AWSObservation) DeepCopyInto(out *AWSObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSObservation. -func (in *AWSObservation) DeepCopy() *AWSObservation { +// 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) + 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) { +func (in *AwsParameters) DeepCopyInto(out *AwsParameters) { *out = *in if in.AccessKeyID != nil { in, out := &in.AccessKeyID, &out.AccessKeyID @@ -885,6 +900,11 @@ func (in *AWSParameters) DeepCopyInto(out *AWSParameters) { } } } + if in.ExtendedResourceCollectionEnabled != nil { + in, out := &in.ExtendedResourceCollectionEnabled, &out.ExtendedResourceCollectionEnabled + *out = new(string) + **out = **in + } if in.FilterTags != nil { in, out := &in.FilterTags, &out.FilterTags *out = make([]*string, len(*in)) @@ -929,53 +949,53 @@ func (in *AWSParameters) DeepCopyInto(out *AWSParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSParameters. -func (in *AWSParameters) DeepCopy() *AWSParameters { +// 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) + 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) { +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 { +// 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) + 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) { +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 { +// 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) + 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) { +func (in *AwsTagFilter) DeepCopyInto(out *AwsTagFilter) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -983,18 +1003,18 @@ func (in *AWSTagFilter) DeepCopyInto(out *AWSTagFilter) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilter. -func (in *AWSTagFilter) DeepCopy() *AWSTagFilter { +// 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) + 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 { +func (in *AwsTagFilter) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1002,7 +1022,7 @@ func (in *AWSTagFilter) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSTagFilterInitParameters) DeepCopyInto(out *AWSTagFilterInitParameters) { +func (in *AwsTagFilterInitParameters) DeepCopyInto(out *AwsTagFilterInitParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -1021,42 +1041,42 @@ func (in *AWSTagFilterInitParameters) DeepCopyInto(out *AWSTagFilterInitParamete } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterInitParameters. -func (in *AWSTagFilterInitParameters) DeepCopy() *AWSTagFilterInitParameters { +// 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) + 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) { +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)) + *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 { +// 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) + 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 { +func (in *AwsTagFilterList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -1064,7 +1084,7 @@ func (in *AWSTagFilterList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AWSTagFilterObservation) DeepCopyInto(out *AWSTagFilterObservation) { +func (in *AwsTagFilterObservation) DeepCopyInto(out *AwsTagFilterObservation) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -1088,18 +1108,18 @@ func (in *AWSTagFilterObservation) DeepCopyInto(out *AWSTagFilterObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterObservation. -func (in *AWSTagFilterObservation) DeepCopy() *AWSTagFilterObservation { +// 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) + 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) { +func (in *AwsTagFilterParameters) DeepCopyInto(out *AwsTagFilterParameters) { *out = *in if in.AccountID != nil { in, out := &in.AccountID, &out.AccountID @@ -1118,47 +1138,47 @@ func (in *AWSTagFilterParameters) DeepCopyInto(out *AWSTagFilterParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSTagFilterParameters. -func (in *AWSTagFilterParameters) DeepCopy() *AWSTagFilterParameters { +// 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) + 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) { +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 { +// 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) + 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) { +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 { +// 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) + out := new(AwsTagFilterStatus) in.DeepCopyInto(out) return out } @@ -1208,6 +1228,7 @@ func (in *AzureInitParameters) DeepCopyInto(out *AzureInitParameters) { *out = new(string) **out = **in } + out.ClientSecretSecretRef = in.ClientSecretSecretRef if in.ContainerAppFilters != nil { in, out := &in.ContainerAppFilters, &out.ContainerAppFilters *out = new(string) @@ -1228,16 +1249,38 @@ func (in *AzureInitParameters) DeepCopyInto(out *AzureInitParameters) { *out = new(string) **out = **in } + if in.MetricsEnabled != nil { + in, out := &in.MetricsEnabled, &out.MetricsEnabled + *out = new(bool) + **out = **in + } + if in.MetricsEnabledDefault != nil { + in, out := &in.MetricsEnabledDefault, &out.MetricsEnabledDefault + *out = new(bool) + **out = **in + } if in.ResourceCollectionEnabled != nil { in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled *out = new(bool) **out = **in } + if in.ResourceProviderConfigs != nil { + in, out := &in.ResourceProviderConfigs, &out.ResourceProviderConfigs + *out = make([]ResourceProviderConfigsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.TenantName != nil { in, out := &in.TenantName, &out.TenantName *out = new(string) **out = **in } + if in.UsageMetricsEnabled != nil { + in, out := &in.UsageMetricsEnabled, &out.UsageMetricsEnabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureInitParameters. @@ -1325,16 +1368,38 @@ func (in *AzureObservation) DeepCopyInto(out *AzureObservation) { *out = new(string) **out = **in } + if in.MetricsEnabled != nil { + in, out := &in.MetricsEnabled, &out.MetricsEnabled + *out = new(bool) + **out = **in + } + if in.MetricsEnabledDefault != nil { + in, out := &in.MetricsEnabledDefault, &out.MetricsEnabledDefault + *out = new(bool) + **out = **in + } if in.ResourceCollectionEnabled != nil { in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled *out = new(bool) **out = **in } + if in.ResourceProviderConfigs != nil { + in, out := &in.ResourceProviderConfigs, &out.ResourceProviderConfigs + *out = make([]ResourceProviderConfigsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.TenantName != nil { in, out := &in.TenantName, &out.TenantName *out = new(string) **out = **in } + if in.UsageMetricsEnabled != nil { + in, out := &in.UsageMetricsEnabled, &out.UsageMetricsEnabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureObservation. @@ -1386,16 +1451,38 @@ func (in *AzureParameters) DeepCopyInto(out *AzureParameters) { *out = new(string) **out = **in } + if in.MetricsEnabled != nil { + in, out := &in.MetricsEnabled, &out.MetricsEnabled + *out = new(bool) + **out = **in + } + if in.MetricsEnabledDefault != nil { + in, out := &in.MetricsEnabledDefault, &out.MetricsEnabledDefault + *out = new(bool) + **out = **in + } if in.ResourceCollectionEnabled != nil { in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled *out = new(bool) **out = **in } + if in.ResourceProviderConfigs != nil { + in, out := &in.ResourceProviderConfigs, &out.ResourceProviderConfigs + *out = make([]ResourceProviderConfigsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.TenantName != nil { in, out := &in.TenantName, &out.TenantName *out = new(string) **out = **in } + if in.UsageMetricsEnabled != nil { + in, out := &in.UsageMetricsEnabled, &out.UsageMetricsEnabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureParameters. @@ -1473,6 +1560,7 @@ func (in *CloudflareAccount) DeepCopyObject() runtime.Object { // 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 + out.APIKeySecretRef = in.APIKeySecretRef if in.Email != nil { in, out := &in.Email, &out.Email *out = new(string) @@ -1483,6 +1571,17 @@ func (in *CloudflareAccountInitParameters) DeepCopyInto(out *CloudflareAccountIn *out = new(string) **out = **in } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *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 CloudflareAccountInitParameters. @@ -1545,6 +1644,17 @@ func (in *CloudflareAccountObservation) DeepCopyInto(out *CloudflareAccountObser *out = new(string) **out = **in } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *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 CloudflareAccountObservation. @@ -1571,6 +1681,17 @@ func (in *CloudflareAccountParameters) DeepCopyInto(out *CloudflareAccountParame *out = new(string) **out = **in } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *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 CloudflareAccountParameters. @@ -1653,6 +1774,7 @@ func (in *ConfluentAccountInitParameters) DeepCopyInto(out *ConfluentAccountInit *out = new(string) **out = **in } + out.APISecretSecretRef = in.APISecretSecretRef if in.Tags != nil { in, out := &in.Tags, &out.Tags *out = make([]*string, len(*in)) @@ -1846,6 +1968,16 @@ func (in *ConfluentResourceInitParameters) DeepCopyInto(out *ConfluentResourceIn *out = new(string) **out = **in } + if in.AccountIDRef != nil { + in, out := &in.AccountIDRef, &out.AccountIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.AccountIDSelector != nil { + in, out := &in.AccountIDSelector, &out.AccountIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.EnableCustomMetrics != nil { in, out := &in.EnableCustomMetrics, &out.EnableCustomMetrics *out = new(bool) @@ -1975,6 +2107,16 @@ func (in *ConfluentResourceParameters) DeepCopyInto(out *ConfluentResourceParame *out = new(string) **out = **in } + if in.AccountIDRef != nil { + in, out := &in.AccountIDRef, &out.AccountIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.AccountIDSelector != nil { + in, out := &in.AccountIDSelector, &out.AccountIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.EnableCustomMetrics != nil { in, out := &in.EnableCustomMetrics, &out.EnableCustomMetrics *out = new(bool) @@ -2056,6 +2198,11 @@ func (in *DisplayInitParameters) DeepCopyInto(out *DisplayInitParameters) { *out = new(bool) **out = **in } + if in.MuteButtons != nil { + in, out := &in.MuteButtons, &out.MuteButtons + *out = new(bool) + **out = **in + } if in.Notified != nil { in, out := &in.Notified, &out.Notified *out = new(bool) @@ -2091,6 +2238,11 @@ func (in *DisplayObservation) DeepCopyInto(out *DisplayObservation) { *out = new(bool) **out = **in } + if in.MuteButtons != nil { + in, out := &in.MuteButtons, &out.MuteButtons + *out = new(bool) + **out = **in + } if in.Notified != nil { in, out := &in.Notified, &out.Notified *out = new(bool) @@ -2126,6 +2278,11 @@ func (in *DisplayParameters) DeepCopyInto(out *DisplayParameters) { *out = new(bool) **out = **in } + if in.MuteButtons != nil { + in, out := &in.MuteButtons, &out.MuteButtons + *out = new(bool) + **out = **in + } if in.Notified != nil { in, out := &in.Notified, &out.Notified *out = new(bool) @@ -2362,6 +2519,16 @@ func (in *FastlyServiceInitParameters) DeepCopyInto(out *FastlyServiceInitParame *out = new(string) **out = **in } + if in.AccountIDRef != nil { + in, out := &in.AccountIDRef, &out.AccountIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.AccountIDSelector != nil { + in, out := &in.AccountIDSelector, &out.AccountIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.ServiceID != nil { in, out := &in.ServiceID, &out.ServiceID *out = new(string) @@ -2471,6 +2638,16 @@ func (in *FastlyServiceParameters) DeepCopyInto(out *FastlyServiceParameters) { *out = new(string) **out = **in } + if in.AccountIDRef != nil { + in, out := &in.AccountIDRef, &out.AccountIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.AccountIDSelector != nil { + in, out := &in.AccountIDSelector, &out.AccountIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.ServiceID != nil { in, out := &in.ServiceID, &out.ServiceID *out = new(string) @@ -2579,6 +2756,17 @@ func (in *GCPInitParameters) DeepCopyInto(out *GCPInitParameters) { *out = new(string) **out = **in } + if in.CloudRunRevisionFilters != nil { + in, out := &in.CloudRunRevisionFilters, &out.CloudRunRevisionFilters + *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.CspmResourceCollectionEnabled != nil { in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled *out = new(bool) @@ -2589,16 +2777,32 @@ func (in *GCPInitParameters) DeepCopyInto(out *GCPInitParameters) { *out = new(string) **out = **in } + if in.IsResourceChangeCollectionEnabled != nil { + in, out := &in.IsResourceChangeCollectionEnabled, &out.IsResourceChangeCollectionEnabled + *out = new(bool) + **out = **in + } + if in.IsSecurityCommandCenterEnabled != nil { + in, out := &in.IsSecurityCommandCenterEnabled, &out.IsSecurityCommandCenterEnabled + *out = new(bool) + **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 } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPInitParameters. @@ -2661,6 +2865,17 @@ func (in *GCPObservation) DeepCopyInto(out *GCPObservation) { *out = new(string) **out = **in } + if in.CloudRunRevisionFilters != nil { + in, out := &in.CloudRunRevisionFilters, &out.CloudRunRevisionFilters + *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.CspmResourceCollectionEnabled != nil { in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled *out = new(bool) @@ -2676,6 +2891,16 @@ func (in *GCPObservation) DeepCopyInto(out *GCPObservation) { *out = new(string) **out = **in } + if in.IsResourceChangeCollectionEnabled != nil { + in, out := &in.IsResourceChangeCollectionEnabled, &out.IsResourceChangeCollectionEnabled + *out = new(bool) + **out = **in + } + if in.IsSecurityCommandCenterEnabled != nil { + in, out := &in.IsSecurityCommandCenterEnabled, &out.IsSecurityCommandCenterEnabled + *out = new(bool) + **out = **in + } if in.PrivateKeyID != nil { in, out := &in.PrivateKeyID, &out.PrivateKeyID *out = new(string) @@ -2686,6 +2911,11 @@ func (in *GCPObservation) DeepCopyInto(out *GCPObservation) { *out = new(string) **out = **in } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPObservation. @@ -2716,6 +2946,17 @@ func (in *GCPParameters) DeepCopyInto(out *GCPParameters) { *out = new(string) **out = **in } + if in.CloudRunRevisionFilters != nil { + in, out := &in.CloudRunRevisionFilters, &out.CloudRunRevisionFilters + *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.CspmResourceCollectionEnabled != nil { in, out := &in.CspmResourceCollectionEnabled, &out.CspmResourceCollectionEnabled *out = new(bool) @@ -2726,6 +2967,16 @@ func (in *GCPParameters) DeepCopyInto(out *GCPParameters) { *out = new(string) **out = **in } + if in.IsResourceChangeCollectionEnabled != nil { + in, out := &in.IsResourceChangeCollectionEnabled, &out.IsResourceChangeCollectionEnabled + *out = new(bool) + **out = **in + } + if in.IsSecurityCommandCenterEnabled != nil { + in, out := &in.IsSecurityCommandCenterEnabled, &out.IsSecurityCommandCenterEnabled + *out = new(bool) + **out = **in + } if in.PrivateKeyID != nil { in, out := &in.PrivateKeyID, &out.PrivateKeyID *out = new(string) @@ -2737,6 +2988,11 @@ func (in *GCPParameters) DeepCopyInto(out *GCPParameters) { *out = new(string) **out = **in } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPParameters. @@ -2750,7 +3006,42 @@ func (in *GCPParameters) DeepCopy() *GCPParameters { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPSTS) DeepCopyInto(out *GCPSTS) { +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 *GCPSts) DeepCopyInto(out *GCPSts) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -2758,18 +3049,18 @@ func (in *GCPSTS) DeepCopyInto(out *GCPSTS) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTS. -func (in *GCPSTS) DeepCopy() *GCPSTS { +// 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) + 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 { +func (in *GCPSts) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -2777,8 +3068,19 @@ func (in *GCPSTS) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPSTSInitParameters) DeepCopyInto(out *GCPSTSInitParameters) { +func (in *GCPStsInitParameters) DeepCopyInto(out *GCPStsInitParameters) { *out = *in + if in.AccountTags != nil { + in, out := &in.AccountTags, &out.AccountTags + *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.Automute != nil { in, out := &in.Automute, &out.Automute *out = new(bool) @@ -2789,6 +3091,17 @@ func (in *GCPSTSInitParameters) DeepCopyInto(out *GCPSTSInitParameters) { *out = new(string) **out = **in } + if in.CloudRunRevisionFilters != nil { + in, out := &in.CloudRunRevisionFilters, &out.CloudRunRevisionFilters + *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.HostFilters != nil { in, out := &in.HostFilters, &out.HostFilters *out = make([]*string, len(*in)) @@ -2805,44 +3118,71 @@ func (in *GCPSTSInitParameters) DeepCopyInto(out *GCPSTSInitParameters) { *out = new(bool) **out = **in } + if in.IsPerProjectQuotaEnabled != nil { + in, out := &in.IsPerProjectQuotaEnabled, &out.IsPerProjectQuotaEnabled + *out = new(bool) + **out = **in + } + if in.IsResourceChangeCollectionEnabled != nil { + in, out := &in.IsResourceChangeCollectionEnabled, &out.IsResourceChangeCollectionEnabled + *out = new(bool) + **out = **in + } + if in.IsSecurityCommandCenterEnabled != nil { + in, out := &in.IsSecurityCommandCenterEnabled, &out.IsSecurityCommandCenterEnabled + *out = new(bool) + **out = **in + } + if in.MetricNamespaceConfigs != nil { + in, out := &in.MetricNamespaceConfigs, &out.MetricNamespaceConfigs + *out = make([]MetricNamespaceConfigsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSInitParameters. -func (in *GCPSTSInitParameters) DeepCopy() *GCPSTSInitParameters { +// 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) + 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) { +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)) + *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 { +// 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) + 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 { +func (in *GCPStsList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -2850,8 +3190,19 @@ func (in *GCPSTSList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GCPSTSObservation) DeepCopyInto(out *GCPSTSObservation) { +func (in *GCPStsObservation) DeepCopyInto(out *GCPStsObservation) { *out = *in + if in.AccountTags != nil { + in, out := &in.AccountTags, &out.AccountTags + *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.Automute != nil { in, out := &in.Automute, &out.Automute *out = new(bool) @@ -2862,6 +3213,17 @@ func (in *GCPSTSObservation) DeepCopyInto(out *GCPSTSObservation) { *out = new(string) **out = **in } + if in.CloudRunRevisionFilters != nil { + in, out := &in.CloudRunRevisionFilters, &out.CloudRunRevisionFilters + *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.DelegateAccountEmail != nil { in, out := &in.DelegateAccountEmail, &out.DelegateAccountEmail *out = new(string) @@ -2888,21 +3250,59 @@ func (in *GCPSTSObservation) DeepCopyInto(out *GCPSTSObservation) { *out = new(bool) **out = **in } + if in.IsPerProjectQuotaEnabled != nil { + in, out := &in.IsPerProjectQuotaEnabled, &out.IsPerProjectQuotaEnabled + *out = new(bool) + **out = **in + } + if in.IsResourceChangeCollectionEnabled != nil { + in, out := &in.IsResourceChangeCollectionEnabled, &out.IsResourceChangeCollectionEnabled + *out = new(bool) + **out = **in + } + if in.IsSecurityCommandCenterEnabled != nil { + in, out := &in.IsSecurityCommandCenterEnabled, &out.IsSecurityCommandCenterEnabled + *out = new(bool) + **out = **in + } + if in.MetricNamespaceConfigs != nil { + in, out := &in.MetricNamespaceConfigs, &out.MetricNamespaceConfigs + *out = make([]MetricNamespaceConfigsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSObservation. -func (in *GCPSTSObservation) DeepCopy() *GCPSTSObservation { +// 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) + 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) { +func (in *GCPStsParameters) DeepCopyInto(out *GCPStsParameters) { *out = *in + if in.AccountTags != nil { + in, out := &in.AccountTags, &out.AccountTags + *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.Automute != nil { in, out := &in.Automute, &out.Automute *out = new(bool) @@ -2913,6 +3313,17 @@ func (in *GCPSTSParameters) DeepCopyInto(out *GCPSTSParameters) { *out = new(string) **out = **in } + if in.CloudRunRevisionFilters != nil { + in, out := &in.CloudRunRevisionFilters, &out.CloudRunRevisionFilters + *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.HostFilters != nil { in, out := &in.HostFilters, &out.HostFilters *out = make([]*string, len(*in)) @@ -2929,84 +3340,151 @@ func (in *GCPSTSParameters) DeepCopyInto(out *GCPSTSParameters) { *out = new(bool) **out = **in } + if in.IsPerProjectQuotaEnabled != nil { + in, out := &in.IsPerProjectQuotaEnabled, &out.IsPerProjectQuotaEnabled + *out = new(bool) + **out = **in + } + if in.IsResourceChangeCollectionEnabled != nil { + in, out := &in.IsResourceChangeCollectionEnabled, &out.IsResourceChangeCollectionEnabled + *out = new(bool) + **out = **in + } + if in.IsSecurityCommandCenterEnabled != nil { + in, out := &in.IsSecurityCommandCenterEnabled, &out.IsSecurityCommandCenterEnabled + *out = new(bool) + **out = **in + } + if in.MetricNamespaceConfigs != nil { + in, out := &in.MetricNamespaceConfigs, &out.MetricNamespaceConfigs + *out = make([]MetricNamespaceConfigsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ResourceCollectionEnabled != nil { + in, out := &in.ResourceCollectionEnabled, &out.ResourceCollectionEnabled + *out = new(bool) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GCPSTSParameters. -func (in *GCPSTSParameters) DeepCopy() *GCPSTSParameters { +// 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) + 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) { +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 { +// 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) + 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) { +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 { +// 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) + 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) { +func (in *MetricNamespaceConfigsInitParameters) DeepCopyInto(out *MetricNamespaceConfigsInitParameters) { *out = *in - in.ResourceSpec.DeepCopyInto(&out.ResourceSpec) - in.ForProvider.DeepCopyInto(&out.ForProvider) - in.InitProvider.DeepCopyInto(&out.InitProvider) + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **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 GCPSpec. -func (in *GCPSpec) DeepCopy() *GCPSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricNamespaceConfigsInitParameters. +func (in *MetricNamespaceConfigsInitParameters) DeepCopy() *MetricNamespaceConfigsInitParameters { if in == nil { return nil } - out := new(GCPSpec) + out := new(MetricNamespaceConfigsInitParameters) 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) { +func (in *MetricNamespaceConfigsObservation) DeepCopyInto(out *MetricNamespaceConfigsObservation) { *out = *in - in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) - in.AtProvider.DeepCopyInto(&out.AtProvider) + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **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 GCPStatus. -func (in *GCPStatus) DeepCopy() *GCPStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricNamespaceConfigsObservation. +func (in *MetricNamespaceConfigsObservation) DeepCopy() *MetricNamespaceConfigsObservation { if in == nil { return nil } - out := new(GCPStatus) + out := new(MetricNamespaceConfigsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MetricNamespaceConfigsParameters) DeepCopyInto(out *MetricNamespaceConfigsParameters) { + *out = *in + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = new(bool) + **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 MetricNamespaceConfigsParameters. +func (in *MetricNamespaceConfigsParameters) DeepCopy() *MetricNamespaceConfigsParameters { + if in == nil { + return nil + } + out := new(MetricNamespaceConfigsParameters) in.DeepCopyInto(out) return out } @@ -3051,6 +3529,7 @@ func (in *OpsgenieServiceObjectInitParameters) DeepCopyInto(out *OpsgenieService *out = new(string) **out = **in } + out.OpsgenieAPIKeySecretRef = in.OpsgenieAPIKeySecretRef if in.Region != nil { in, out := &in.Region, &out.Region *out = new(string) @@ -3231,6 +3710,11 @@ func (in *Pagerduty) DeepCopyObject() runtime.Object { // 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.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)) @@ -3393,6 +3877,7 @@ func (in *PagerdutyServiceObject) DeepCopyObject() runtime.Object { // 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 + out.ServiceKeySecretRef = in.ServiceKeySecretRef if in.ServiceName != nil { in, out := &in.ServiceName, &out.ServiceName *out = new(string) @@ -3558,6 +4043,81 @@ func (in *PagerdutyStatus) DeepCopy() *PagerdutyStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceProviderConfigsInitParameters) DeepCopyInto(out *ResourceProviderConfigsInitParameters) { + *out = *in + if in.MetricsEnabled != nil { + in, out := &in.MetricsEnabled, &out.MetricsEnabled + *out = new(bool) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceProviderConfigsInitParameters. +func (in *ResourceProviderConfigsInitParameters) DeepCopy() *ResourceProviderConfigsInitParameters { + if in == nil { + return nil + } + out := new(ResourceProviderConfigsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceProviderConfigsObservation) DeepCopyInto(out *ResourceProviderConfigsObservation) { + *out = *in + if in.MetricsEnabled != nil { + in, out := &in.MetricsEnabled, &out.MetricsEnabled + *out = new(bool) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceProviderConfigsObservation. +func (in *ResourceProviderConfigsObservation) DeepCopy() *ResourceProviderConfigsObservation { + if in == nil { + return nil + } + out := new(ResourceProviderConfigsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceProviderConfigsParameters) DeepCopyInto(out *ResourceProviderConfigsParameters) { + *out = *in + if in.MetricsEnabled != nil { + in, out := &in.MetricsEnabled, &out.MetricsEnabled + *out = new(bool) + **out = **in + } + if in.Namespace != nil { + in, out := &in.Namespace, &out.Namespace + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceProviderConfigsParameters. +func (in *ResourceProviderConfigsParameters) DeepCopy() *ResourceProviderConfigsParameters { + if in == nil { + return nil + } + out := new(ResourceProviderConfigsParameters) + 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 @@ -3600,10 +4160,8 @@ func (in *SlackChannelInitParameters) DeepCopyInto(out *SlackChannelInitParamete } if in.Display != nil { in, out := &in.Display, &out.Display - *out = make([]DisplayInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DisplayInitParameters) + (*in).DeepCopyInto(*out) } } @@ -3664,10 +4222,8 @@ func (in *SlackChannelObservation) DeepCopyInto(out *SlackChannelObservation) { } if in.Display != nil { in, out := &in.Display, &out.Display - *out = make([]DisplayObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DisplayObservation) + (*in).DeepCopyInto(*out) } if in.ID != nil { in, out := &in.ID, &out.ID @@ -3701,10 +4257,8 @@ func (in *SlackChannelParameters) DeepCopyInto(out *SlackChannelParameters) { } if in.Display != nil { in, out := &in.Display, &out.Display - *out = make([]DisplayParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DisplayParameters) + (*in).DeepCopyInto(*out) } } diff --git a/apis/integration/v1alpha1/zz_generated.managed.go b/apis/integration/v1beta1/zz_generated.managed.go similarity index 76% rename from apis/integration/v1alpha1/zz_generated.managed.go rename to apis/integration/v1beta1/zz_generated.managed.go index ad56d27..72d36ff 100644 --- a/apis/integration/v1alpha1/zz_generated.managed.go +++ b/apis/integration/v1beta1/zz_generated.managed.go @@ -3,307 +3,307 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" -// GetCondition of this AWS. -func (mg *AWS) GetCondition(ct xpv1.ConditionType) xpv1.Condition { +// 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 { +// GetDeletionPolicy of this Aws. +func (mg *Aws) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicies of this AWS. -func (mg *AWS) GetManagementPolicies() xpv1.ManagementPolicies { +// GetManagementPolicies of this Aws. +func (mg *Aws) GetManagementPolicies() xpv1.ManagementPolicies { return mg.Spec.ManagementPolicies } -// GetProviderConfigReference of this AWS. -func (mg *AWS) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this Aws. +func (mg *Aws) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -// GetPublishConnectionDetailsTo of this AWS. -func (mg *AWS) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { +// GetPublishConnectionDetailsTo of this Aws. +func (mg *Aws) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo } -// GetWriteConnectionSecretToReference of this AWS. -func (mg *AWS) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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 { +// 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 { +// GetDeletionPolicy of this AwsEventBridge. +func (mg *AwsEventBridge) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicies of this AWSEventBridge. -func (mg *AWSEventBridge) GetManagementPolicies() xpv1.ManagementPolicies { +// GetManagementPolicies of this AwsEventBridge. +func (mg *AwsEventBridge) GetManagementPolicies() xpv1.ManagementPolicies { return mg.Spec.ManagementPolicies } -// GetProviderConfigReference of this AWSEventBridge. -func (mg *AWSEventBridge) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this AwsEventBridge. +func (mg *AwsEventBridge) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -// GetPublishConnectionDetailsTo of this AWSEventBridge. -func (mg *AWSEventBridge) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { +// GetPublishConnectionDetailsTo of this AwsEventBridge. +func (mg *AwsEventBridge) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo } -// GetWriteConnectionSecretToReference of this AWSEventBridge. -func (mg *AWSEventBridge) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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 { +// 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 { +// GetDeletionPolicy of this AwsLambdaArn. +func (mg *AwsLambdaArn) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicies of this AWSLambdaARN. -func (mg *AWSLambdaARN) GetManagementPolicies() xpv1.ManagementPolicies { +// GetManagementPolicies of this AwsLambdaArn. +func (mg *AwsLambdaArn) GetManagementPolicies() xpv1.ManagementPolicies { return mg.Spec.ManagementPolicies } -// GetProviderConfigReference of this AWSLambdaARN. -func (mg *AWSLambdaARN) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this AwsLambdaArn. +func (mg *AwsLambdaArn) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -// GetPublishConnectionDetailsTo of this AWSLambdaARN. -func (mg *AWSLambdaARN) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { +// GetPublishConnectionDetailsTo of this AwsLambdaArn. +func (mg *AwsLambdaArn) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo } -// GetWriteConnectionSecretToReference of this AWSLambdaARN. -func (mg *AWSLambdaARN) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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 { +// 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 { +// GetDeletionPolicy of this AwsLogCollection. +func (mg *AwsLogCollection) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicies of this AWSLogCollection. -func (mg *AWSLogCollection) GetManagementPolicies() xpv1.ManagementPolicies { +// GetManagementPolicies of this AwsLogCollection. +func (mg *AwsLogCollection) GetManagementPolicies() xpv1.ManagementPolicies { return mg.Spec.ManagementPolicies } -// GetProviderConfigReference of this AWSLogCollection. -func (mg *AWSLogCollection) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this AwsLogCollection. +func (mg *AwsLogCollection) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -// GetPublishConnectionDetailsTo of this AWSLogCollection. -func (mg *AWSLogCollection) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { +// GetPublishConnectionDetailsTo of this AwsLogCollection. +func (mg *AwsLogCollection) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo } -// GetWriteConnectionSecretToReference of this AWSLogCollection. -func (mg *AWSLogCollection) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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 { +// 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 { +// GetDeletionPolicy of this AwsTagFilter. +func (mg *AwsTagFilter) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicies of this AWSTagFilter. -func (mg *AWSTagFilter) GetManagementPolicies() xpv1.ManagementPolicies { +// GetManagementPolicies of this AwsTagFilter. +func (mg *AwsTagFilter) GetManagementPolicies() xpv1.ManagementPolicies { return mg.Spec.ManagementPolicies } -// GetProviderConfigReference of this AWSTagFilter. -func (mg *AWSTagFilter) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this AwsTagFilter. +func (mg *AwsTagFilter) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -// GetPublishConnectionDetailsTo of this AWSTagFilter. -func (mg *AWSTagFilter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { +// GetPublishConnectionDetailsTo of this AwsTagFilter. +func (mg *AwsTagFilter) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo } -// GetWriteConnectionSecretToReference of this AWSTagFilter. -func (mg *AWSTagFilter) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// SetWriteConnectionSecretToReference of this AwsTagFilter. +func (mg *AwsTagFilter) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } @@ -727,63 +727,63 @@ func (mg *GCP) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } -// GetCondition of this GCPSTS. -func (mg *GCPSTS) GetCondition(ct xpv1.ConditionType) xpv1.Condition { +// 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 { +// GetDeletionPolicy of this GCPSts. +func (mg *GCPSts) GetDeletionPolicy() xpv1.DeletionPolicy { return mg.Spec.DeletionPolicy } -// GetManagementPolicies of this GCPSTS. -func (mg *GCPSTS) GetManagementPolicies() xpv1.ManagementPolicies { +// GetManagementPolicies of this GCPSts. +func (mg *GCPSts) GetManagementPolicies() xpv1.ManagementPolicies { return mg.Spec.ManagementPolicies } -// GetProviderConfigReference of this GCPSTS. -func (mg *GCPSTS) GetProviderConfigReference() *xpv1.Reference { +// GetProviderConfigReference of this GCPSts. +func (mg *GCPSts) GetProviderConfigReference() *xpv1.Reference { return mg.Spec.ProviderConfigReference } -// GetPublishConnectionDetailsTo of this GCPSTS. -func (mg *GCPSTS) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { +// GetPublishConnectionDetailsTo of this GCPSts. +func (mg *GCPSts) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { return mg.Spec.PublishConnectionDetailsTo } -// GetWriteConnectionSecretToReference of this GCPSTS. -func (mg *GCPSTS) GetWriteConnectionSecretToReference() *xpv1.SecretReference { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// 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) { +// SetWriteConnectionSecretToReference of this GCPSts. +func (mg *GCPSts) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { mg.Spec.WriteConnectionSecretToReference = r } diff --git a/apis/integration/v1alpha1/zz_generated.managedlist.go b/apis/integration/v1beta1/zz_generated.managedlist.go similarity index 84% rename from apis/integration/v1alpha1/zz_generated.managedlist.go rename to apis/integration/v1beta1/zz_generated.managedlist.go index 7821820..21361a6 100644 --- a/apis/integration/v1alpha1/zz_generated.managedlist.go +++ b/apis/integration/v1beta1/zz_generated.managedlist.go @@ -3,12 +3,12 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" -// GetItems of this AWSEventBridgeList. -func (l *AWSEventBridgeList) GetItems() []resource.Managed { +// 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] @@ -16,8 +16,8 @@ func (l *AWSEventBridgeList) GetItems() []resource.Managed { return items } -// GetItems of this AWSLambdaARNList. -func (l *AWSLambdaARNList) GetItems() []resource.Managed { +// 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] @@ -25,8 +25,8 @@ func (l *AWSLambdaARNList) GetItems() []resource.Managed { return items } -// GetItems of this AWSList. -func (l *AWSList) GetItems() []resource.Managed { +// 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] @@ -34,8 +34,8 @@ func (l *AWSList) GetItems() []resource.Managed { return items } -// GetItems of this AWSLogCollectionList. -func (l *AWSLogCollectionList) GetItems() []resource.Managed { +// 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] @@ -43,8 +43,8 @@ func (l *AWSLogCollectionList) GetItems() []resource.Managed { return items } -// GetItems of this AWSTagFilterList. -func (l *AWSTagFilterList) GetItems() []resource.Managed { +// 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] @@ -115,8 +115,8 @@ func (l *GCPList) GetItems() []resource.Managed { return items } -// GetItems of this GCPSTSList. -func (l *GCPSTSList) GetItems() []resource.Managed { +// 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] diff --git a/apis/integration/v1beta1/zz_generated.resolvers.go b/apis/integration/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..2905d5d --- /dev/null +++ b/apis/integration/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,97 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this ConfluentResource. +func (mg *ConfluentResource) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.AccountID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.AccountIDRef, + Selector: mg.Spec.ForProvider.AccountIDSelector, + To: reference.To{ + List: &ConfluentAccountList{}, + Managed: &ConfluentAccount{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.AccountID") + } + mg.Spec.ForProvider.AccountID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.AccountIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.AccountID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.AccountIDRef, + Selector: mg.Spec.InitProvider.AccountIDSelector, + To: reference.To{ + List: &ConfluentAccountList{}, + Managed: &ConfluentAccount{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.AccountID") + } + mg.Spec.InitProvider.AccountID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.AccountIDRef = rsp.ResolvedReference + + return nil +} + +// ResolveReferences of this FastlyService. +func (mg *FastlyService) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.AccountID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.AccountIDRef, + Selector: mg.Spec.ForProvider.AccountIDSelector, + To: reference.To{ + List: &FastlyAccountList{}, + Managed: &FastlyAccount{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.AccountID") + } + mg.Spec.ForProvider.AccountID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.AccountIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.AccountID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.AccountIDRef, + Selector: mg.Spec.InitProvider.AccountIDSelector, + To: reference.To{ + List: &FastlyAccountList{}, + Managed: &FastlyAccount{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.AccountID") + } + mg.Spec.InitProvider.AccountID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.AccountIDRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/integration/v1alpha1/zz_groupversion_info.go b/apis/integration/v1beta1/zz_groupversion_info.go similarity index 80% rename from apis/integration/v1alpha1/zz_groupversion_info.go rename to apis/integration/v1beta1/zz_groupversion_info.go index ec2fc24..001294e 100755 --- a/apis/integration/v1alpha1/zz_groupversion_info.go +++ b/apis/integration/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=integration.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "integration.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/integration/v1alpha1/zz_opsgenieserviceobject_terraformed.go b/apis/integration/v1beta1/zz_opsgenieserviceobject_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_opsgenieserviceobject_terraformed.go rename to apis/integration/v1beta1/zz_opsgenieserviceobject_terraformed.go index f98950d..5f37951 100755 --- a/apis/integration/v1alpha1/zz_opsgenieserviceobject_terraformed.go +++ b/apis/integration/v1beta1/zz_opsgenieserviceobject_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *OpsgenieServiceObject) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this OpsgenieServiceObject func (tr *OpsgenieServiceObject) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"opsgenie_api_key": "spec.forProvider.opsgenieApiKeySecretRef"} + return map[string]string{"opsgenie_api_key": "opsgenieApiKeySecretRef"} } // GetObservation of this OpsgenieServiceObject diff --git a/apis/integration/v1alpha1/zz_opsgenieserviceobject_types.go b/apis/integration/v1beta1/zz_opsgenieserviceobject_types.go similarity index 92% rename from apis/integration/v1alpha1/zz_opsgenieserviceobject_types.go rename to apis/integration/v1beta1/zz_opsgenieserviceobject_types.go index 709cc65..bdb2adc 100755 --- a/apis/integration/v1alpha1/zz_opsgenieserviceobject_types.go +++ b/apis/integration/v1beta1/zz_opsgenieserviceobject_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -27,6 +23,10 @@ type OpsgenieServiceObjectInitParameters struct { // The name for the Opsgenie service. 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. + 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`. Region *string `json:"region,omitempty" tf:"region,omitempty"` @@ -101,8 +101,8 @@ type OpsgenieServiceObjectStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_pagerduty_terraformed.go b/apis/integration/v1beta1/zz_pagerduty_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_pagerduty_terraformed.go rename to apis/integration/v1beta1/zz_pagerduty_terraformed.go index 70d80f3..8a576eb 100755 --- a/apis/integration/v1alpha1/zz_pagerduty_terraformed.go +++ b/apis/integration/v1beta1/zz_pagerduty_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *Pagerduty) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this Pagerduty func (tr *Pagerduty) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"api_token": "spec.forProvider.apiTokenSecretRef"} + return map[string]string{"api_token": "apiTokenSecretRef"} } // GetObservation of this Pagerduty diff --git a/apis/integration/v1alpha1/zz_pagerduty_types.go b/apis/integration/v1beta1/zz_pagerduty_types.go similarity index 96% rename from apis/integration/v1alpha1/zz_pagerduty_types.go rename to apis/integration/v1beta1/zz_pagerduty_types.go index e92e28a..df1ab7c 100755 --- a/apis/integration/v1alpha1/zz_pagerduty_types.go +++ b/apis/integration/v1beta1/zz_pagerduty_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,6 +15,10 @@ import ( type PagerdutyInitParameters struct { + // (String, Sensitive) Your PagerDuty API token. + // Your PagerDuty API token. + APITokenSecretRef *v1.SecretKeySelector `json:"apiTokenSecretRef,omitempty" tf:"-"` + // (List of String) Array of your schedule URLs. // Array of your schedule URLs. Schedules []*string `json:"schedules,omitempty" tf:"schedules,omitempty"` @@ -88,8 +88,8 @@ type PagerdutyStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_pagerdutyserviceobject_terraformed.go b/apis/integration/v1beta1/zz_pagerdutyserviceobject_terraformed.go similarity index 94% rename from apis/integration/v1alpha1/zz_pagerdutyserviceobject_terraformed.go rename to apis/integration/v1beta1/zz_pagerdutyserviceobject_terraformed.go index 09a002e..dc00729 100755 --- a/apis/integration/v1alpha1/zz_pagerdutyserviceobject_terraformed.go +++ b/apis/integration/v1beta1/zz_pagerdutyserviceobject_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *PagerdutyServiceObject) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this PagerdutyServiceObject func (tr *PagerdutyServiceObject) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"service_key": "spec.forProvider.serviceKeySecretRef"} + return map[string]string{"service_key": "serviceKeySecretRef"} } // GetObservation of this PagerdutyServiceObject diff --git a/apis/integration/v1alpha1/zz_pagerdutyserviceobject_types.go b/apis/integration/v1beta1/zz_pagerdutyserviceobject_types.go similarity index 89% rename from apis/integration/v1alpha1/zz_pagerdutyserviceobject_types.go rename to apis/integration/v1beta1/zz_pagerdutyserviceobject_types.go index 663011b..4944a8a 100755 --- a/apis/integration/v1alpha1/zz_pagerdutyserviceobject_types.go +++ b/apis/integration/v1beta1/zz_pagerdutyserviceobject_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,6 +15,10 @@ import ( type PagerdutyServiceObjectInitParameters 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. + ServiceKeySecretRef v1.SecretKeySelector `json:"serviceKeySecretRef" tf:"-"` + // (String) Your Service name in PagerDuty. // Your Service name in PagerDuty. ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` @@ -75,8 +75,8 @@ type PagerdutyServiceObjectStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/integration/v1alpha1/zz_slackchannel_terraformed.go b/apis/integration/v1beta1/zz_slackchannel_terraformed.go similarity index 96% rename from apis/integration/v1alpha1/zz_slackchannel_terraformed.go rename to apis/integration/v1beta1/zz_slackchannel_terraformed.go index d7657cc..e72f467 100755 --- a/apis/integration/v1alpha1/zz_slackchannel_terraformed.go +++ b/apis/integration/v1beta1/zz_slackchannel_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/integration/v1alpha1/zz_slackchannel_types.go b/apis/integration/v1beta1/zz_slackchannel_types.go similarity index 89% rename from apis/integration/v1alpha1/zz_slackchannel_types.go rename to apis/integration/v1beta1/zz_slackchannel_types.go index b122e91..b5baff0 100755 --- a/apis/integration/v1alpha1/zz_slackchannel_types.go +++ b/apis/integration/v1beta1/zz_slackchannel_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -23,6 +19,10 @@ type DisplayInitParameters struct { // Show the main body of the alert event. Defaults to `true`. Message *bool `json:"message,omitempty" tf:"message,omitempty"` + // (Boolean) Show interactive buttons to mute the alerting monitor. Defaults to true. + // Show interactive buttons to mute the alerting monitor. Defaults to `true`. + MuteButtons *bool `json:"muteButtons,omitempty" tf:"mute_buttons,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"` @@ -42,6 +42,10 @@ type DisplayObservation struct { // Show the main body of the alert event. Defaults to `true`. Message *bool `json:"message,omitempty" tf:"message,omitempty"` + // (Boolean) Show interactive buttons to mute the alerting monitor. Defaults to true. + // Show interactive buttons to mute the alerting monitor. Defaults to `true`. + MuteButtons *bool `json:"muteButtons,omitempty" tf:"mute_buttons,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"` @@ -62,6 +66,11 @@ type DisplayParameters struct { // +kubebuilder:validation:Optional Message *bool `json:"message,omitempty" tf:"message,omitempty"` + // (Boolean) Show interactive buttons to mute the alerting monitor. Defaults to true. + // Show interactive buttons to mute the alerting monitor. Defaults to `true`. + // +kubebuilder:validation:Optional + MuteButtons *bool `json:"muteButtons,omitempty" tf:"mute_buttons,omitempty"` + // handles in the alert event. Defaults to true. // Show the list of @-handles in the alert event. Defaults to `true`. // +kubebuilder:validation:Optional @@ -90,7 +99,7 @@ type SlackChannelInitParameters struct { // (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"` + Display *DisplayInitParameters `json:"display,omitempty" tf:"display,omitempty"` } type SlackChannelObservation struct { @@ -105,7 +114,7 @@ type SlackChannelObservation struct { // (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"` + Display *DisplayObservation `json:"display,omitempty" tf:"display,omitempty"` // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -126,7 +135,7 @@ type SlackChannelParameters struct { // (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"` + Display *DisplayParameters `json:"display,omitempty" tf:"display,omitempty"` } // SlackChannelSpec defines the desired state of SlackChannel @@ -157,8 +166,8 @@ type SlackChannelStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/logs/v1alpha1/zz_archive_terraformed.go b/apis/logs/v1beta1/zz_archive_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_archive_terraformed.go rename to apis/logs/v1beta1/zz_archive_terraformed.go index aa27e88..cf117b6 100755 --- a/apis/logs/v1alpha1/zz_archive_terraformed.go +++ b/apis/logs/v1beta1/zz_archive_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_archive_types.go b/apis/logs/v1beta1/zz_archive_types.go similarity index 80% rename from apis/logs/v1alpha1/zz_archive_types.go rename to apis/logs/v1beta1/zz_archive_types.go index 29601d6..9eac778 100755 --- a/apis/logs/v1alpha1/zz_archive_types.go +++ b/apis/logs/v1beta1/zz_archive_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -21,11 +17,11 @@ 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"` + 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"` + 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`. @@ -49,18 +45,18 @@ type ArchiveInitParameters struct { // (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"` + 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"` + 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"` + GcsArchive *GcsArchiveObservation `json:"gcsArchive,omitempty" tf:"gcs_archive,omitempty"` // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -87,7 +83,7 @@ type ArchiveObservation struct { // (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"` + S3Archive *S3ArchiveObservation `json:"s3Archive,omitempty" tf:"s3_archive,omitempty"` } type ArchiveParameters struct { @@ -95,12 +91,12 @@ 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"` + 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"` + 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`. @@ -130,7 +126,7 @@ type ArchiveParameters struct { // (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"` + S3Archive *S3ArchiveParameters `json:"s3Archive,omitempty" tf:"s3_archive,omitempty"` } type AzureArchiveInitParameters struct { @@ -265,7 +261,7 @@ type GcsArchiveParameters struct { // (String) Your project id. // Your project id. // +kubebuilder:validation:Optional - ProjectID *string `json:"projectId" tf:"project_id,omitempty"` + ProjectID *string `json:"projectId,omitempty" tf:"project_id,omitempty"` } type S3ArchiveInitParameters struct { @@ -278,6 +274,14 @@ type S3ArchiveInitParameters struct { // Name of your s3 bucket. Bucket *string `json:"bucket,omitempty" tf:"bucket,omitempty"` + // (String) The AWS KMS encryption key. + // The AWS KMS encryption key. + EncryptionKey *string `json:"encryptionKey,omitempty" tf:"encryption_key,omitempty"` + + // (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". + // The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `"NO_OVERRIDE"`. + EncryptionType *string `json:"encryptionType,omitempty" tf:"encryption_type,omitempty"` + // (String) The path where the archive is stored. // Path where the archive is stored. Path *string `json:"path,omitempty" tf:"path,omitempty"` @@ -285,6 +289,10 @@ type S3ArchiveInitParameters struct { // (String) Your AWS role name // Your AWS role name RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` + + // (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". + // The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `"STANDARD"`. + StorageClass *string `json:"storageClass,omitempty" tf:"storage_class,omitempty"` } type S3ArchiveObservation struct { @@ -297,6 +305,14 @@ type S3ArchiveObservation struct { // Name of your s3 bucket. Bucket *string `json:"bucket,omitempty" tf:"bucket,omitempty"` + // (String) The AWS KMS encryption key. + // The AWS KMS encryption key. + EncryptionKey *string `json:"encryptionKey,omitempty" tf:"encryption_key,omitempty"` + + // (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". + // The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `"NO_OVERRIDE"`. + EncryptionType *string `json:"encryptionType,omitempty" tf:"encryption_type,omitempty"` + // (String) The path where the archive is stored. // Path where the archive is stored. Path *string `json:"path,omitempty" tf:"path,omitempty"` @@ -304,6 +320,10 @@ type S3ArchiveObservation struct { // (String) Your AWS role name // Your AWS role name RoleName *string `json:"roleName,omitempty" tf:"role_name,omitempty"` + + // (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". + // The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `"STANDARD"`. + StorageClass *string `json:"storageClass,omitempty" tf:"storage_class,omitempty"` } type S3ArchiveParameters struct { @@ -318,6 +338,16 @@ type S3ArchiveParameters struct { // +kubebuilder:validation:Optional Bucket *string `json:"bucket" tf:"bucket,omitempty"` + // (String) The AWS KMS encryption key. + // The AWS KMS encryption key. + // +kubebuilder:validation:Optional + EncryptionKey *string `json:"encryptionKey,omitempty" tf:"encryption_key,omitempty"` + + // (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". + // The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `"NO_OVERRIDE"`. + // +kubebuilder:validation:Optional + EncryptionType *string `json:"encryptionType,omitempty" tf:"encryption_type,omitempty"` + // (String) The path where the archive is stored. // Path where the archive is stored. // +kubebuilder:validation:Optional @@ -327,6 +357,11 @@ type S3ArchiveParameters struct { // Your AWS role name // +kubebuilder:validation:Optional RoleName *string `json:"roleName" tf:"role_name,omitempty"` + + // (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". + // The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `"STANDARD"`. + // +kubebuilder:validation:Optional + StorageClass *string `json:"storageClass,omitempty" tf:"storage_class,omitempty"` } // ArchiveSpec defines the desired state of Archive @@ -357,8 +392,8 @@ type ArchiveStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/logs/v1alpha1/zz_archiveorder_terraformed.go b/apis/logs/v1beta1/zz_archiveorder_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_archiveorder_terraformed.go rename to apis/logs/v1beta1/zz_archiveorder_terraformed.go index 4cff054..8dbaa0a 100755 --- a/apis/logs/v1alpha1/zz_archiveorder_terraformed.go +++ b/apis/logs/v1beta1/zz_archiveorder_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_archiveorder_types.go b/apis/logs/v1beta1/zz_archiveorder_types.go similarity index 85% rename from apis/logs/v1alpha1/zz_archiveorder_types.go rename to apis/logs/v1beta1/zz_archiveorder_types.go index 52a075d..26bcaae 100755 --- a/apis/logs/v1alpha1/zz_archiveorder_types.go +++ b/apis/logs/v1beta1/zz_archiveorder_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -21,7 +17,16 @@ 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/logs/v1beta1.Archive ArchiveIds []*string `json:"archiveIds,omitempty" tf:"archive_ids,omitempty"` + + // References to Archive in logs to populate archiveIds. + // +kubebuilder:validation:Optional + ArchiveIdsRefs []v1.Reference `json:"archiveIdsRefs,omitempty" tf:"-"` + + // Selector for a list of Archive in logs to populate archiveIds. + // +kubebuilder:validation:Optional + ArchiveIdsSelector *v1.Selector `json:"archiveIdsSelector,omitempty" tf:"-"` } type ArchiveOrderObservation struct { @@ -38,8 +43,17 @@ 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/logs/v1beta1.Archive // +kubebuilder:validation:Optional ArchiveIds []*string `json:"archiveIds,omitempty" tf:"archive_ids,omitempty"` + + // References to Archive in logs to populate archiveIds. + // +kubebuilder:validation:Optional + ArchiveIdsRefs []v1.Reference `json:"archiveIdsRefs,omitempty" tf:"-"` + + // Selector for a list of Archive in logs to populate archiveIds. + // +kubebuilder:validation:Optional + ArchiveIdsSelector *v1.Selector `json:"archiveIdsSelector,omitempty" tf:"-"` } // ArchiveOrderSpec defines the desired state of ArchiveOrder @@ -70,8 +84,8 @@ type ArchiveOrderStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/logs/v1alpha1/zz_custompipeline_terraformed.go b/apis/logs/v1beta1/zz_custompipeline_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_custompipeline_terraformed.go rename to apis/logs/v1beta1/zz_custompipeline_terraformed.go index 4bd5aad..3854a90 100755 --- a/apis/logs/v1alpha1/zz_custompipeline_terraformed.go +++ b/apis/logs/v1beta1/zz_custompipeline_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_custompipeline_types.go b/apis/logs/v1beta1/zz_custompipeline_types.go similarity index 87% rename from apis/logs/v1alpha1/zz_custompipeline_types.go rename to apis/logs/v1beta1/zz_custompipeline_types.go index 8a4fe5c..69561b4 100755 --- a/apis/logs/v1alpha1/zz_custompipeline_types.go +++ b/apis/logs/v1beta1/zz_custompipeline_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -242,7 +238,7 @@ type CategoryFilterParameters struct { type CategoryInitParameters struct { // (Block List, Min: 1) (see below for nested schema) - Filter []CategoryFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + Filter *CategoryFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` // (String) Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -251,7 +247,7 @@ type CategoryInitParameters struct { type CategoryObservation struct { // (Block List, Min: 1) (see below for nested schema) - Filter []CategoryFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + Filter *CategoryFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` // (String) Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -261,7 +257,7 @@ type CategoryParameters struct { // (Block List, Min: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Filter []CategoryFilterParameters `json:"filter" tf:"filter,omitempty"` + Filter *CategoryFilterParameters `json:"filter" tf:"filter,omitempty"` // (String) // +kubebuilder:validation:Optional @@ -293,7 +289,7 @@ type CategoryProcessorCategoryFilterParameters struct { type CategoryProcessorCategoryInitParameters struct { // (Block List, Min: 1) (see below for nested schema) - Filter []CategoryProcessorCategoryFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + Filter *CategoryProcessorCategoryFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` // (String) Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -302,7 +298,7 @@ type CategoryProcessorCategoryInitParameters struct { type CategoryProcessorCategoryObservation struct { // (Block List, Min: 1) (see below for nested schema) - Filter []CategoryProcessorCategoryFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + Filter *CategoryProcessorCategoryFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` // (String) Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -312,7 +308,7 @@ type CategoryProcessorCategoryParameters struct { // (Block List, Min: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Filter []CategoryProcessorCategoryFilterParameters `json:"filter" tf:"filter,omitempty"` + Filter *CategoryProcessorCategoryFilterParameters `json:"filter" tf:"filter,omitempty"` // (String) // +kubebuilder:validation:Optional @@ -382,6 +378,9 @@ type CategoryProcessorParameters struct { type CustomPipelineInitParameters struct { + // (String) + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Block List, Min: 1) (see below for nested schema) Filter []FilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` @@ -393,10 +392,17 @@ type CustomPipelineInitParameters struct { // (Block List) (see below for nested schema) Processor []ProcessorInitParameters `json:"processor,omitempty" tf:"processor,omitempty"` + + // (Set of String) + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } type CustomPipelineObservation struct { + // (String) + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Block List, Min: 1) (see below for nested schema) Filter []FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` @@ -411,10 +417,18 @@ type CustomPipelineObservation struct { // (Block List) (see below for nested schema) Processor []ProcessorObservation `json:"processor,omitempty" tf:"processor,omitempty"` + + // (Set of String) + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } type CustomPipelineParameters struct { + // (String) + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Block List, Min: 1) (see below for nested schema) // +kubebuilder:validation:Optional Filter []FilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` @@ -430,6 +444,11 @@ type CustomPipelineParameters struct { // (Block List) (see below for nested schema) // +kubebuilder:validation:Optional Processor []ProcessorParameters `json:"processor,omitempty" tf:"processor,omitempty"` + + // (Set of String) + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } type DateRemapperInitParameters struct { @@ -636,7 +655,7 @@ type GrokParserGrokParameters struct { type GrokParserInitParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Grok []GrokInitParameters `json:"grok,omitempty" tf:"grok,omitempty"` + Grok *GrokInitParameters `json:"grok,omitempty" tf:"grok,omitempty"` // (Boolean) // If the processor is enabled or not. @@ -658,7 +677,7 @@ type GrokParserInitParameters struct { type GrokParserObservation struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Grok []GrokObservation `json:"grok,omitempty" tf:"grok,omitempty"` + Grok *GrokObservation `json:"grok,omitempty" tf:"grok,omitempty"` // (Boolean) // If the processor is enabled or not. @@ -681,7 +700,7 @@ type GrokParserParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Grok []GrokParameters `json:"grok" tf:"grok,omitempty"` + Grok *GrokParameters `json:"grok" tf:"grok,omitempty"` // (Boolean) // If the processor is enabled or not. @@ -863,6 +882,9 @@ type PipelineFilterParameters struct { type PipelineInitParameters struct { + // (String) + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Block List, Min: 1) (see below for nested schema) Filter []PipelineFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` @@ -874,10 +896,17 @@ type PipelineInitParameters struct { // (Block List) (see below for nested schema) Processor []PipelineProcessorInitParameters `json:"processor,omitempty" tf:"processor,omitempty"` + + // (Set of String) + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } type PipelineObservation struct { + // (String) + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Block List, Min: 1) (see below for nested schema) Filter []PipelineFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` @@ -889,10 +918,18 @@ type PipelineObservation struct { // (Block List) (see below for nested schema) Processor []PipelineProcessorObservation `json:"processor,omitempty" tf:"processor,omitempty"` + + // (Set of String) + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` } type PipelineParameters struct { + // (String) + // +kubebuilder:validation:Optional + Description *string `json:"description,omitempty" tf:"description,omitempty"` + // (Block List, Min: 1) (see below for nested schema) // +kubebuilder:validation:Optional Filter []PipelineFilterParameters `json:"filter" tf:"filter,omitempty"` @@ -908,132 +945,145 @@ type PipelineParameters struct { // (Block List) (see below for nested schema) // +kubebuilder:validation:Optional Processor []PipelineProcessorParameters `json:"processor,omitempty" tf:"processor,omitempty"` + + // (Set of String) + // +kubebuilder:validation:Optional + // +listType=set + Tags []*string `json:"tags,omitempty" tf:"tags,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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + ServiceRemapper *ServiceRemapperInitParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + SpanIDRemapper *SpanIDRemapperInitParameters `json:"spanIdRemapper,omitempty" tf:"span_id_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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + ServiceRemapper *ServiceRemapperObservation `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + SpanIDRemapper *SpanIDRemapperObservation `json:"spanIdRemapper,omitempty" tf:"span_id_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"` + 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"` + 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"` + 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"` + 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"` + UserAgentParser *UserAgentParserObservation `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` } type PipelineProcessorParameters struct { @@ -1041,77 +1091,82 @@ 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + ServiceRemapper *ServiceRemapperParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + // +kubebuilder:validation:Optional + SpanIDRemapper *SpanIDRemapperParameters `json:"spanIdRemapper,omitempty" tf:"span_id_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"` + 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"` + 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"` + 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"` + 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"` + UserAgentParser *UserAgentParserParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` } type ProcessorArithmeticProcessorInitParameters struct { @@ -1487,7 +1542,7 @@ type ProcessorGeoIPParserParameters struct { type ProcessorGrokParserInitParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Grok []GrokParserGrokInitParameters `json:"grok,omitempty" tf:"grok,omitempty"` + Grok *GrokParserGrokInitParameters `json:"grok,omitempty" tf:"grok,omitempty"` // (Boolean) // If the processor is enabled or not. @@ -1509,7 +1564,7 @@ type ProcessorGrokParserInitParameters struct { type ProcessorGrokParserObservation struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Grok []GrokParserGrokObservation `json:"grok,omitempty" tf:"grok,omitempty"` + Grok *GrokParserGrokObservation `json:"grok,omitempty" tf:"grok,omitempty"` // (Boolean) // If the processor is enabled or not. @@ -1532,7 +1587,7 @@ type ProcessorGrokParserParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Grok []GrokParserGrokParameters `json:"grok" tf:"grok,omitempty"` + Grok *GrokParserGrokParameters `json:"grok" tf:"grok,omitempty"` // (Boolean) // If the processor is enabled or not. @@ -1559,66 +1614,70 @@ 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + ServiceRemapper *ProcessorServiceRemapperInitParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + SpanIDRemapper *ProcessorSpanIDRemapperInitParameters `json:"spanIdRemapper,omitempty" tf:"span_id_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"` + 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"` + 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"` + 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"` + 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"` + UserAgentParser *ProcessorUserAgentParserInitParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` } type ProcessorLookupProcessorInitParameters struct { @@ -1760,66 +1819,70 @@ 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + ServiceRemapper *ProcessorServiceRemapperObservation `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + SpanIDRemapper *ProcessorSpanIDRemapperObservation `json:"spanIdRemapper,omitempty" tf:"span_id_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"` + 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"` + 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"` + 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"` + 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"` + UserAgentParser *ProcessorUserAgentParserObservation `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` } type ProcessorParameters struct { @@ -1827,81 +1890,86 @@ 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + 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"` + ServiceRemapper *ProcessorServiceRemapperParameters `json:"serviceRemapper,omitempty" tf:"service_remapper,omitempty"` + + // (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + // Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + // +kubebuilder:validation:Optional + SpanIDRemapper *ProcessorSpanIDRemapperParameters `json:"spanIdRemapper,omitempty" tf:"span_id_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"` + 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"` + 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"` + 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"` + 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"` + UserAgentParser *ProcessorUserAgentParserParameters `json:"userAgentParser,omitempty" tf:"user_agent_parser,omitempty"` } type ProcessorReferenceTableLookupProcessorInitParameters struct { @@ -2026,6 +2094,54 @@ type ProcessorServiceRemapperParameters struct { Sources []*string `json:"sources" tf:"sources,omitempty"` } +type ProcessorSpanIDRemapperInitParameters 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 ProcessorSpanIDRemapperObservation 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 ProcessorSpanIDRemapperParameters 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) @@ -2466,6 +2582,54 @@ type ServiceRemapperParameters struct { Sources []*string `json:"sources" tf:"sources,omitempty"` } +type SpanIDRemapperInitParameters 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 SpanIDRemapperObservation 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 SpanIDRemapperParameters 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) @@ -2812,8 +2976,8 @@ type CustomPipelineStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/logs/v1alpha1/zz_generated.conversion_hubs.go b/apis/logs/v1beta1/zz_generated.conversion_hubs.go similarity index 83% rename from apis/logs/v1alpha1/zz_generated.conversion_hubs.go rename to apis/logs/v1beta1/zz_generated.conversion_hubs.go index da67a7f..5d38159 100755 --- a/apis/logs/v1alpha1/zz_generated.conversion_hubs.go +++ b/apis/logs/v1beta1/zz_generated.conversion_hubs.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 // Hub marks this type as a conversion hub. func (tr *Archive) Hub() {} diff --git a/apis/logs/v1alpha1/zz_generated.deepcopy.go b/apis/logs/v1beta1/zz_generated.deepcopy.go similarity index 91% rename from apis/logs/v1alpha1/zz_generated.deepcopy.go rename to apis/logs/v1beta1/zz_generated.deepcopy.go index c252217..050d2f8 100644 --- a/apis/logs/v1alpha1/zz_generated.deepcopy.go +++ b/apis/logs/v1beta1/zz_generated.deepcopy.go @@ -6,9 +6,10 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( + "github.com/crossplane/crossplane-runtime/apis/common/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -44,17 +45,13 @@ 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]) - } + *out = new(AzureArchiveInitParameters) + (*in).DeepCopyInto(*out) } if in.GcsArchive != nil { in, out := &in.GcsArchive, &out.GcsArchive - *out = make([]GcsArchiveInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GcsArchiveInitParameters) + (*in).DeepCopyInto(*out) } if in.IncludeTags != nil { in, out := &in.IncludeTags, &out.IncludeTags @@ -89,10 +86,8 @@ func (in *ArchiveInitParameters) DeepCopyInto(out *ArchiveInitParameters) { } if in.S3Archive != nil { in, out := &in.S3Archive, &out.S3Archive - *out = make([]S3ArchiveInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(S3ArchiveInitParameters) + (*in).DeepCopyInto(*out) } } @@ -143,17 +138,13 @@ 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]) - } + *out = new(AzureArchiveObservation) + (*in).DeepCopyInto(*out) } if in.GcsArchive != nil { in, out := &in.GcsArchive, &out.GcsArchive - *out = make([]GcsArchiveObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GcsArchiveObservation) + (*in).DeepCopyInto(*out) } if in.ID != nil { in, out := &in.ID, &out.ID @@ -193,10 +184,8 @@ func (in *ArchiveObservation) DeepCopyInto(out *ArchiveObservation) { } if in.S3Archive != nil { in, out := &in.S3Archive, &out.S3Archive - *out = make([]S3ArchiveObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(S3ArchiveObservation) + (*in).DeepCopyInto(*out) } } @@ -251,6 +240,18 @@ func (in *ArchiveOrderInitParameters) DeepCopyInto(out *ArchiveOrderInitParamete } } } + if in.ArchiveIdsRefs != nil { + in, out := &in.ArchiveIdsRefs, &out.ArchiveIdsRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ArchiveIdsSelector != nil { + in, out := &in.ArchiveIdsSelector, &out.ArchiveIdsSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderInitParameters. @@ -340,6 +341,18 @@ func (in *ArchiveOrderParameters) DeepCopyInto(out *ArchiveOrderParameters) { } } } + if in.ArchiveIdsRefs != nil { + in, out := &in.ArchiveIdsRefs, &out.ArchiveIdsRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ArchiveIdsSelector != nil { + in, out := &in.ArchiveIdsSelector, &out.ArchiveIdsSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArchiveOrderParameters. @@ -392,17 +405,13 @@ 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]) - } + *out = new(AzureArchiveParameters) + (*in).DeepCopyInto(*out) } if in.GcsArchive != nil { in, out := &in.GcsArchive, &out.GcsArchive - *out = make([]GcsArchiveParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GcsArchiveParameters) + (*in).DeepCopyInto(*out) } if in.IncludeTags != nil { in, out := &in.IncludeTags, &out.IncludeTags @@ -437,10 +446,8 @@ func (in *ArchiveParameters) DeepCopyInto(out *ArchiveParameters) { } if in.S3Archive != nil { in, out := &in.S3Archive, &out.S3Archive - *out = make([]S3ArchiveParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(S3ArchiveParameters) + (*in).DeepCopyInto(*out) } } @@ -992,10 +999,8 @@ 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]) - } + *out = new(CategoryFilterInitParameters) + (*in).DeepCopyInto(*out) } if in.Name != nil { in, out := &in.Name, &out.Name @@ -1019,10 +1024,8 @@ 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]) - } + *out = new(CategoryFilterObservation) + (*in).DeepCopyInto(*out) } if in.Name != nil { in, out := &in.Name, &out.Name @@ -1046,10 +1049,8 @@ 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]) - } + *out = new(CategoryFilterParameters) + (*in).DeepCopyInto(*out) } if in.Name != nil { in, out := &in.Name, &out.Name @@ -1133,10 +1134,8 @@ func (in *CategoryProcessorCategoryInitParameters) DeepCopyInto(out *CategoryPro *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]) - } + *out = new(CategoryProcessorCategoryFilterInitParameters) + (*in).DeepCopyInto(*out) } if in.Name != nil { in, out := &in.Name, &out.Name @@ -1160,10 +1159,8 @@ func (in *CategoryProcessorCategoryObservation) DeepCopyInto(out *CategoryProces *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]) - } + *out = new(CategoryProcessorCategoryFilterObservation) + (*in).DeepCopyInto(*out) } if in.Name != nil { in, out := &in.Name, &out.Name @@ -1187,10 +1184,8 @@ func (in *CategoryProcessorCategoryParameters) DeepCopyInto(out *CategoryProcess *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]) - } + *out = new(CategoryProcessorCategoryFilterParameters) + (*in).DeepCopyInto(*out) } if in.Name != nil { in, out := &in.Name, &out.Name @@ -1440,6 +1435,11 @@ func (in *CustomPipeline) DeepCopyObject() runtime.Object { // 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.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)) @@ -1464,6 +1464,17 @@ func (in *CustomPipelineInitParameters) DeepCopyInto(out *CustomPipelineInitPara (*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 + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineInitParameters. @@ -1511,6 +1522,11 @@ func (in *CustomPipelineList) DeepCopyObject() runtime.Object { // 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.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)) @@ -1540,6 +1556,17 @@ func (in *CustomPipelineObservation) DeepCopyInto(out *CustomPipelineObservation (*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 + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineObservation. @@ -1555,6 +1582,11 @@ func (in *CustomPipelineObservation) DeepCopy() *CustomPipelineObservation { // 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.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)) @@ -1579,6 +1611,17 @@ func (in *CustomPipelineParameters) DeepCopyInto(out *CustomPipelineParameters) (*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 + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomPipelineParameters. @@ -2423,10 +2466,8 @@ 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]) - } + *out = new(GrokInitParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -2471,10 +2512,8 @@ 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]) - } + *out = new(GrokObservation) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -2519,10 +2558,8 @@ 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]) - } + *out = new(GrokParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -2734,10 +2771,8 @@ func (in *IndexInitParameters) DeepCopyInto(out *IndexInitParameters) { } if in.DailyLimitReset != nil { in, out := &in.DailyLimitReset, &out.DailyLimitReset - *out = make([]DailyLimitResetInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DailyLimitResetInitParameters) + (*in).DeepCopyInto(*out) } if in.DailyLimitWarningThresholdPercentage != nil { in, out := &in.DailyLimitWarningThresholdPercentage, &out.DailyLimitWarningThresholdPercentage @@ -2758,14 +2793,12 @@ func (in *IndexInitParameters) DeepCopyInto(out *IndexInitParameters) { } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]IndexFilterInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(IndexFilterInitParameters) + (*in).DeepCopyInto(*out) } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) + if in.FlexRetentionDays != nil { + in, out := &in.FlexRetentionDays, &out.FlexRetentionDays + *out = new(float64) **out = **in } if in.RetentionDays != nil { @@ -2827,10 +2860,8 @@ func (in *IndexObservation) DeepCopyInto(out *IndexObservation) { } if in.DailyLimitReset != nil { in, out := &in.DailyLimitReset, &out.DailyLimitReset - *out = make([]DailyLimitResetObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DailyLimitResetObservation) + (*in).DeepCopyInto(*out) } if in.DailyLimitWarningThresholdPercentage != nil { in, out := &in.DailyLimitWarningThresholdPercentage, &out.DailyLimitWarningThresholdPercentage @@ -2851,18 +2882,16 @@ func (in *IndexObservation) DeepCopyInto(out *IndexObservation) { } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]IndexFilterObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(IndexFilterObservation) + (*in).DeepCopyInto(*out) } - if in.ID != nil { - in, out := &in.ID, &out.ID - *out = new(string) + if in.FlexRetentionDays != nil { + in, out := &in.FlexRetentionDays, &out.FlexRetentionDays + *out = new(float64) **out = **in } - if in.Name != nil { - in, out := &in.Name, &out.Name + if in.ID != nil { + in, out := &in.ID, &out.ID *out = new(string) **out = **in } @@ -2924,10 +2953,17 @@ func (in *IndexOrderInitParameters) DeepCopyInto(out *IndexOrderInitParameters) } } } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in + if in.IndexesRefs != nil { + in, out := &in.IndexesRefs, &out.IndexesRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IndexesSelector != nil { + in, out := &in.IndexesSelector, &out.IndexesSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) } } @@ -2992,11 +3028,6 @@ func (in *IndexOrderObservation) DeepCopyInto(out *IndexOrderObservation) { } } } - 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. @@ -3023,10 +3054,17 @@ func (in *IndexOrderParameters) DeepCopyInto(out *IndexOrderParameters) { } } } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in + if in.IndexesRefs != nil { + in, out := &in.IndexesRefs, &out.IndexesRefs + *out = make([]v1.Reference, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.IndexesSelector != nil { + in, out := &in.IndexesSelector, &out.IndexesSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) } } @@ -3085,10 +3123,8 @@ func (in *IndexParameters) DeepCopyInto(out *IndexParameters) { } if in.DailyLimitReset != nil { in, out := &in.DailyLimitReset, &out.DailyLimitReset - *out = make([]DailyLimitResetParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DailyLimitResetParameters) + (*in).DeepCopyInto(*out) } if in.DailyLimitWarningThresholdPercentage != nil { in, out := &in.DailyLimitWarningThresholdPercentage, &out.DailyLimitWarningThresholdPercentage @@ -3109,14 +3145,12 @@ func (in *IndexParameters) DeepCopyInto(out *IndexParameters) { } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]IndexFilterParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(IndexFilterParameters) + (*in).DeepCopyInto(*out) } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) + if in.FlexRetentionDays != nil { + in, out := &in.FlexRetentionDays, &out.FlexRetentionDays + *out = new(float64) **out = **in } if in.RetentionDays != nil { @@ -3683,17 +3717,13 @@ 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]) - } + *out = new(ComputeInitParameters) + (*in).DeepCopyInto(*out) } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]MetricFilterInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MetricFilterInitParameters) + (*in).DeepCopyInto(*out) } if in.GroupBy != nil { in, out := &in.GroupBy, &out.GroupBy @@ -3756,17 +3786,13 @@ 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]) - } + *out = new(ComputeObservation) + (*in).DeepCopyInto(*out) } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]MetricFilterObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MetricFilterObservation) + (*in).DeepCopyInto(*out) } if in.GroupBy != nil { in, out := &in.GroupBy, &out.GroupBy @@ -3802,17 +3828,13 @@ 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]) - } + *out = new(ComputeParameters) + (*in).DeepCopyInto(*out) } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]MetricFilterParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MetricFilterParameters) + (*in).DeepCopyInto(*out) } if in.GroupBy != nil { in, out := &in.GroupBy, &out.GroupBy @@ -3936,6 +3958,11 @@ func (in *PipelineFilterParameters) DeepCopy() *PipelineFilterParameters { // 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.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([]PipelineFilterInitParameters, len(*in)) @@ -3960,6 +3987,17 @@ func (in *PipelineInitParameters) DeepCopyInto(out *PipelineInitParameters) { (*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 + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineInitParameters. @@ -3975,6 +4013,11 @@ func (in *PipelineInitParameters) DeepCopy() *PipelineInitParameters { // 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.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([]PipelineFilterObservation, len(*in)) @@ -3999,6 +4042,17 @@ func (in *PipelineObservation) DeepCopyInto(out *PipelineObservation) { (*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 + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineObservation. @@ -4041,11 +4095,6 @@ func (in *PipelineOrder) DeepCopyObject() runtime.Object { // 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)) @@ -4109,11 +4158,6 @@ func (in *PipelineOrderObservation) DeepCopyInto(out *PipelineOrderObservation) *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)) @@ -4140,11 +4184,6 @@ func (in *PipelineOrderObservation) DeepCopy() *PipelineOrderObservation { // 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)) @@ -4206,6 +4245,11 @@ func (in *PipelineOrderStatus) DeepCopy() *PipelineOrderStatus { // 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.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([]PipelineFilterParameters, len(*in)) @@ -4230,6 +4274,17 @@ func (in *PipelineParameters) DeepCopyInto(out *PipelineParameters) { (*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 + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineParameters. @@ -4247,108 +4302,83 @@ func (in *PipelineProcessorInitParameters) DeepCopyInto(out *PipelineProcessorIn *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]) - } + *out = new(ProcessorArithmeticProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.AttributeRemapper != nil { in, out := &in.AttributeRemapper, &out.AttributeRemapper - *out = make([]ProcessorAttributeRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorAttributeRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.CategoryProcessor != nil { in, out := &in.CategoryProcessor, &out.CategoryProcessor - *out = make([]ProcessorCategoryProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorCategoryProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.DateRemapper != nil { in, out := &in.DateRemapper, &out.DateRemapper - *out = make([]ProcessorDateRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorDateRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.GeoIPParser != nil { in, out := &in.GeoIPParser, &out.GeoIPParser - *out = make([]ProcessorGeoIPParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorGeoIPParserInitParameters) + (*in).DeepCopyInto(*out) } if in.GrokParser != nil { in, out := &in.GrokParser, &out.GrokParser - *out = make([]ProcessorGrokParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorGrokParserInitParameters) + (*in).DeepCopyInto(*out) } if in.LookupProcessor != nil { in, out := &in.LookupProcessor, &out.LookupProcessor - *out = make([]ProcessorLookupProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorLookupProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.MessageRemapper != nil { in, out := &in.MessageRemapper, &out.MessageRemapper - *out = make([]ProcessorMessageRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorMessageRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.ReferenceTableLookupProcessor != nil { in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor - *out = make([]ReferenceTableLookupProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ReferenceTableLookupProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.ServiceRemapper != nil { in, out := &in.ServiceRemapper, &out.ServiceRemapper - *out = make([]ServiceRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ServiceRemapperInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SpanIDRemapper != nil { + in, out := &in.SpanIDRemapper, &out.SpanIDRemapper + *out = new(SpanIDRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.StatusRemapper != nil { in, out := &in.StatusRemapper, &out.StatusRemapper - *out = make([]StatusRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(StatusRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.StringBuilderProcessor != nil { in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor - *out = make([]StringBuilderProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(StringBuilderProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.TraceIDRemapper != nil { in, out := &in.TraceIDRemapper, &out.TraceIDRemapper - *out = make([]TraceIDRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TraceIDRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.URLParser != nil { in, out := &in.URLParser, &out.URLParser - *out = make([]URLParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(URLParserInitParameters) + (*in).DeepCopyInto(*out) } if in.UserAgentParser != nil { in, out := &in.UserAgentParser, &out.UserAgentParser - *out = make([]UserAgentParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(UserAgentParserInitParameters) + (*in).DeepCopyInto(*out) } } @@ -4367,108 +4397,83 @@ func (in *PipelineProcessorObservation) DeepCopyInto(out *PipelineProcessorObser *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]) - } + *out = new(ProcessorArithmeticProcessorObservation) + (*in).DeepCopyInto(*out) } if in.AttributeRemapper != nil { in, out := &in.AttributeRemapper, &out.AttributeRemapper - *out = make([]ProcessorAttributeRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorAttributeRemapperObservation) + (*in).DeepCopyInto(*out) } if in.CategoryProcessor != nil { in, out := &in.CategoryProcessor, &out.CategoryProcessor - *out = make([]ProcessorCategoryProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorCategoryProcessorObservation) + (*in).DeepCopyInto(*out) } if in.DateRemapper != nil { in, out := &in.DateRemapper, &out.DateRemapper - *out = make([]ProcessorDateRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorDateRemapperObservation) + (*in).DeepCopyInto(*out) } if in.GeoIPParser != nil { in, out := &in.GeoIPParser, &out.GeoIPParser - *out = make([]ProcessorGeoIPParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorGeoIPParserObservation) + (*in).DeepCopyInto(*out) } if in.GrokParser != nil { in, out := &in.GrokParser, &out.GrokParser - *out = make([]ProcessorGrokParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorGrokParserObservation) + (*in).DeepCopyInto(*out) } if in.LookupProcessor != nil { in, out := &in.LookupProcessor, &out.LookupProcessor - *out = make([]ProcessorLookupProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorLookupProcessorObservation) + (*in).DeepCopyInto(*out) } if in.MessageRemapper != nil { in, out := &in.MessageRemapper, &out.MessageRemapper - *out = make([]ProcessorMessageRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorMessageRemapperObservation) + (*in).DeepCopyInto(*out) } if in.ReferenceTableLookupProcessor != nil { in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor - *out = make([]ReferenceTableLookupProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ReferenceTableLookupProcessorObservation) + (*in).DeepCopyInto(*out) } if in.ServiceRemapper != nil { in, out := &in.ServiceRemapper, &out.ServiceRemapper - *out = make([]ServiceRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ServiceRemapperObservation) + (*in).DeepCopyInto(*out) + } + if in.SpanIDRemapper != nil { + in, out := &in.SpanIDRemapper, &out.SpanIDRemapper + *out = new(SpanIDRemapperObservation) + (*in).DeepCopyInto(*out) } if in.StatusRemapper != nil { in, out := &in.StatusRemapper, &out.StatusRemapper - *out = make([]StatusRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(StatusRemapperObservation) + (*in).DeepCopyInto(*out) } if in.StringBuilderProcessor != nil { in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor - *out = make([]StringBuilderProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(StringBuilderProcessorObservation) + (*in).DeepCopyInto(*out) } if in.TraceIDRemapper != nil { in, out := &in.TraceIDRemapper, &out.TraceIDRemapper - *out = make([]TraceIDRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TraceIDRemapperObservation) + (*in).DeepCopyInto(*out) } if in.URLParser != nil { in, out := &in.URLParser, &out.URLParser - *out = make([]URLParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(URLParserObservation) + (*in).DeepCopyInto(*out) } if in.UserAgentParser != nil { in, out := &in.UserAgentParser, &out.UserAgentParser - *out = make([]UserAgentParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(UserAgentParserObservation) + (*in).DeepCopyInto(*out) } } @@ -4487,108 +4492,83 @@ func (in *PipelineProcessorParameters) DeepCopyInto(out *PipelineProcessorParame *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]) - } + *out = new(ProcessorArithmeticProcessorParameters) + (*in).DeepCopyInto(*out) } if in.AttributeRemapper != nil { in, out := &in.AttributeRemapper, &out.AttributeRemapper - *out = make([]ProcessorAttributeRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorAttributeRemapperParameters) + (*in).DeepCopyInto(*out) } if in.CategoryProcessor != nil { in, out := &in.CategoryProcessor, &out.CategoryProcessor - *out = make([]ProcessorCategoryProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorCategoryProcessorParameters) + (*in).DeepCopyInto(*out) } if in.DateRemapper != nil { in, out := &in.DateRemapper, &out.DateRemapper - *out = make([]ProcessorDateRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorDateRemapperParameters) + (*in).DeepCopyInto(*out) } if in.GeoIPParser != nil { in, out := &in.GeoIPParser, &out.GeoIPParser - *out = make([]ProcessorGeoIPParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorGeoIPParserParameters) + (*in).DeepCopyInto(*out) } if in.GrokParser != nil { in, out := &in.GrokParser, &out.GrokParser - *out = make([]ProcessorGrokParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorGrokParserParameters) + (*in).DeepCopyInto(*out) } if in.LookupProcessor != nil { in, out := &in.LookupProcessor, &out.LookupProcessor - *out = make([]ProcessorLookupProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorLookupProcessorParameters) + (*in).DeepCopyInto(*out) } if in.MessageRemapper != nil { in, out := &in.MessageRemapper, &out.MessageRemapper - *out = make([]ProcessorMessageRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorMessageRemapperParameters) + (*in).DeepCopyInto(*out) } if in.ReferenceTableLookupProcessor != nil { in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor - *out = make([]ReferenceTableLookupProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ReferenceTableLookupProcessorParameters) + (*in).DeepCopyInto(*out) } if in.ServiceRemapper != nil { in, out := &in.ServiceRemapper, &out.ServiceRemapper - *out = make([]ServiceRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ServiceRemapperParameters) + (*in).DeepCopyInto(*out) + } + if in.SpanIDRemapper != nil { + in, out := &in.SpanIDRemapper, &out.SpanIDRemapper + *out = new(SpanIDRemapperParameters) + (*in).DeepCopyInto(*out) } if in.StatusRemapper != nil { in, out := &in.StatusRemapper, &out.StatusRemapper - *out = make([]StatusRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(StatusRemapperParameters) + (*in).DeepCopyInto(*out) } if in.StringBuilderProcessor != nil { in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor - *out = make([]StringBuilderProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(StringBuilderProcessorParameters) + (*in).DeepCopyInto(*out) } if in.TraceIDRemapper != nil { in, out := &in.TraceIDRemapper, &out.TraceIDRemapper - *out = make([]TraceIDRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TraceIDRemapperParameters) + (*in).DeepCopyInto(*out) } if in.URLParser != nil { in, out := &in.URLParser, &out.URLParser - *out = make([]URLParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(URLParserParameters) + (*in).DeepCopyInto(*out) } if in.UserAgentParser != nil { in, out := &in.UserAgentParser, &out.UserAgentParser - *out = make([]UserAgentParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(UserAgentParserParameters) + (*in).DeepCopyInto(*out) } } @@ -5267,10 +5247,8 @@ func (in *ProcessorGrokParserInitParameters) DeepCopyInto(out *ProcessorGrokPars *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]) - } + *out = new(GrokParserGrokInitParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -5315,10 +5293,8 @@ func (in *ProcessorGrokParserObservation) DeepCopyInto(out *ProcessorGrokParserO *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]) - } + *out = new(GrokParserGrokObservation) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -5363,10 +5339,8 @@ func (in *ProcessorGrokParserParameters) DeepCopyInto(out *ProcessorGrokParserPa *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]) - } + *out = new(GrokParserGrokParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -5411,115 +5385,88 @@ 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]) - } + *out = new(ArithmeticProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.AttributeRemapper != nil { in, out := &in.AttributeRemapper, &out.AttributeRemapper - *out = make([]AttributeRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AttributeRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.CategoryProcessor != nil { in, out := &in.CategoryProcessor, &out.CategoryProcessor - *out = make([]CategoryProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(CategoryProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.DateRemapper != nil { in, out := &in.DateRemapper, &out.DateRemapper - *out = make([]DateRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DateRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.GeoIPParser != nil { in, out := &in.GeoIPParser, &out.GeoIPParser - *out = make([]GeoIPParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GeoIPParserInitParameters) + (*in).DeepCopyInto(*out) } if in.GrokParser != nil { in, out := &in.GrokParser, &out.GrokParser - *out = make([]GrokParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GrokParserInitParameters) + (*in).DeepCopyInto(*out) } if in.LookupProcessor != nil { in, out := &in.LookupProcessor, &out.LookupProcessor - *out = make([]LookupProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(LookupProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.MessageRemapper != nil { in, out := &in.MessageRemapper, &out.MessageRemapper - *out = make([]MessageRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MessageRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.Pipeline != nil { in, out := &in.Pipeline, &out.Pipeline - *out = make([]PipelineInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(PipelineInitParameters) + (*in).DeepCopyInto(*out) } if in.ReferenceTableLookupProcessor != nil { in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor - *out = make([]ProcessorReferenceTableLookupProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorReferenceTableLookupProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.ServiceRemapper != nil { in, out := &in.ServiceRemapper, &out.ServiceRemapper - *out = make([]ProcessorServiceRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorServiceRemapperInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SpanIDRemapper != nil { + in, out := &in.SpanIDRemapper, &out.SpanIDRemapper + *out = new(ProcessorSpanIDRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.StatusRemapper != nil { in, out := &in.StatusRemapper, &out.StatusRemapper - *out = make([]ProcessorStatusRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorStatusRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.StringBuilderProcessor != nil { in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor - *out = make([]ProcessorStringBuilderProcessorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorStringBuilderProcessorInitParameters) + (*in).DeepCopyInto(*out) } if in.TraceIDRemapper != nil { in, out := &in.TraceIDRemapper, &out.TraceIDRemapper - *out = make([]ProcessorTraceIDRemapperInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorTraceIDRemapperInitParameters) + (*in).DeepCopyInto(*out) } if in.URLParser != nil { in, out := &in.URLParser, &out.URLParser - *out = make([]ProcessorURLParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorURLParserInitParameters) + (*in).DeepCopyInto(*out) } if in.UserAgentParser != nil { in, out := &in.UserAgentParser, &out.UserAgentParser - *out = make([]ProcessorUserAgentParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorUserAgentParserInitParameters) + (*in).DeepCopyInto(*out) } } @@ -5799,115 +5746,88 @@ 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]) - } + *out = new(ArithmeticProcessorObservation) + (*in).DeepCopyInto(*out) } if in.AttributeRemapper != nil { in, out := &in.AttributeRemapper, &out.AttributeRemapper - *out = make([]AttributeRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AttributeRemapperObservation) + (*in).DeepCopyInto(*out) } if in.CategoryProcessor != nil { in, out := &in.CategoryProcessor, &out.CategoryProcessor - *out = make([]CategoryProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(CategoryProcessorObservation) + (*in).DeepCopyInto(*out) } if in.DateRemapper != nil { in, out := &in.DateRemapper, &out.DateRemapper - *out = make([]DateRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DateRemapperObservation) + (*in).DeepCopyInto(*out) } if in.GeoIPParser != nil { in, out := &in.GeoIPParser, &out.GeoIPParser - *out = make([]GeoIPParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GeoIPParserObservation) + (*in).DeepCopyInto(*out) } if in.GrokParser != nil { in, out := &in.GrokParser, &out.GrokParser - *out = make([]GrokParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GrokParserObservation) + (*in).DeepCopyInto(*out) } if in.LookupProcessor != nil { in, out := &in.LookupProcessor, &out.LookupProcessor - *out = make([]LookupProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(LookupProcessorObservation) + (*in).DeepCopyInto(*out) } if in.MessageRemapper != nil { in, out := &in.MessageRemapper, &out.MessageRemapper - *out = make([]MessageRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MessageRemapperObservation) + (*in).DeepCopyInto(*out) } if in.Pipeline != nil { in, out := &in.Pipeline, &out.Pipeline - *out = make([]PipelineObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(PipelineObservation) + (*in).DeepCopyInto(*out) } if in.ReferenceTableLookupProcessor != nil { in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor - *out = make([]ProcessorReferenceTableLookupProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorReferenceTableLookupProcessorObservation) + (*in).DeepCopyInto(*out) } if in.ServiceRemapper != nil { in, out := &in.ServiceRemapper, &out.ServiceRemapper - *out = make([]ProcessorServiceRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorServiceRemapperObservation) + (*in).DeepCopyInto(*out) + } + if in.SpanIDRemapper != nil { + in, out := &in.SpanIDRemapper, &out.SpanIDRemapper + *out = new(ProcessorSpanIDRemapperObservation) + (*in).DeepCopyInto(*out) } if in.StatusRemapper != nil { in, out := &in.StatusRemapper, &out.StatusRemapper - *out = make([]ProcessorStatusRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorStatusRemapperObservation) + (*in).DeepCopyInto(*out) } if in.StringBuilderProcessor != nil { in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor - *out = make([]ProcessorStringBuilderProcessorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorStringBuilderProcessorObservation) + (*in).DeepCopyInto(*out) } if in.TraceIDRemapper != nil { in, out := &in.TraceIDRemapper, &out.TraceIDRemapper - *out = make([]ProcessorTraceIDRemapperObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorTraceIDRemapperObservation) + (*in).DeepCopyInto(*out) } if in.URLParser != nil { in, out := &in.URLParser, &out.URLParser - *out = make([]ProcessorURLParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorURLParserObservation) + (*in).DeepCopyInto(*out) } if in.UserAgentParser != nil { in, out := &in.UserAgentParser, &out.UserAgentParser - *out = make([]ProcessorUserAgentParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorUserAgentParserObservation) + (*in).DeepCopyInto(*out) } } @@ -5926,115 +5846,88 @@ 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]) - } + *out = new(ArithmeticProcessorParameters) + (*in).DeepCopyInto(*out) } if in.AttributeRemapper != nil { in, out := &in.AttributeRemapper, &out.AttributeRemapper - *out = make([]AttributeRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AttributeRemapperParameters) + (*in).DeepCopyInto(*out) } if in.CategoryProcessor != nil { in, out := &in.CategoryProcessor, &out.CategoryProcessor - *out = make([]CategoryProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(CategoryProcessorParameters) + (*in).DeepCopyInto(*out) } if in.DateRemapper != nil { in, out := &in.DateRemapper, &out.DateRemapper - *out = make([]DateRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(DateRemapperParameters) + (*in).DeepCopyInto(*out) } if in.GeoIPParser != nil { in, out := &in.GeoIPParser, &out.GeoIPParser - *out = make([]GeoIPParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GeoIPParserParameters) + (*in).DeepCopyInto(*out) } if in.GrokParser != nil { in, out := &in.GrokParser, &out.GrokParser - *out = make([]GrokParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(GrokParserParameters) + (*in).DeepCopyInto(*out) } if in.LookupProcessor != nil { in, out := &in.LookupProcessor, &out.LookupProcessor - *out = make([]LookupProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(LookupProcessorParameters) + (*in).DeepCopyInto(*out) } if in.MessageRemapper != nil { in, out := &in.MessageRemapper, &out.MessageRemapper - *out = make([]MessageRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MessageRemapperParameters) + (*in).DeepCopyInto(*out) } if in.Pipeline != nil { in, out := &in.Pipeline, &out.Pipeline - *out = make([]PipelineParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(PipelineParameters) + (*in).DeepCopyInto(*out) } if in.ReferenceTableLookupProcessor != nil { in, out := &in.ReferenceTableLookupProcessor, &out.ReferenceTableLookupProcessor - *out = make([]ProcessorReferenceTableLookupProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorReferenceTableLookupProcessorParameters) + (*in).DeepCopyInto(*out) } if in.ServiceRemapper != nil { in, out := &in.ServiceRemapper, &out.ServiceRemapper - *out = make([]ProcessorServiceRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorServiceRemapperParameters) + (*in).DeepCopyInto(*out) + } + if in.SpanIDRemapper != nil { + in, out := &in.SpanIDRemapper, &out.SpanIDRemapper + *out = new(ProcessorSpanIDRemapperParameters) + (*in).DeepCopyInto(*out) } if in.StatusRemapper != nil { in, out := &in.StatusRemapper, &out.StatusRemapper - *out = make([]ProcessorStatusRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorStatusRemapperParameters) + (*in).DeepCopyInto(*out) } if in.StringBuilderProcessor != nil { in, out := &in.StringBuilderProcessor, &out.StringBuilderProcessor - *out = make([]ProcessorStringBuilderProcessorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorStringBuilderProcessorParameters) + (*in).DeepCopyInto(*out) } if in.TraceIDRemapper != nil { in, out := &in.TraceIDRemapper, &out.TraceIDRemapper - *out = make([]ProcessorTraceIDRemapperParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorTraceIDRemapperParameters) + (*in).DeepCopyInto(*out) } if in.URLParser != nil { in, out := &in.URLParser, &out.URLParser - *out = make([]ProcessorURLParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorURLParserParameters) + (*in).DeepCopyInto(*out) } if in.UserAgentParser != nil { in, out := &in.UserAgentParser, &out.UserAgentParser - *out = make([]ProcessorUserAgentParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ProcessorUserAgentParserParameters) + (*in).DeepCopyInto(*out) } } @@ -6276,6 +6169,114 @@ func (in *ProcessorServiceRemapperParameters) DeepCopy() *ProcessorServiceRemapp return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorSpanIDRemapperInitParameters) DeepCopyInto(out *ProcessorSpanIDRemapperInitParameters) { + *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 ProcessorSpanIDRemapperInitParameters. +func (in *ProcessorSpanIDRemapperInitParameters) DeepCopy() *ProcessorSpanIDRemapperInitParameters { + if in == nil { + return nil + } + out := new(ProcessorSpanIDRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorSpanIDRemapperObservation) DeepCopyInto(out *ProcessorSpanIDRemapperObservation) { + *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 ProcessorSpanIDRemapperObservation. +func (in *ProcessorSpanIDRemapperObservation) DeepCopy() *ProcessorSpanIDRemapperObservation { + if in == nil { + return nil + } + out := new(ProcessorSpanIDRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProcessorSpanIDRemapperParameters) DeepCopyInto(out *ProcessorSpanIDRemapperParameters) { + *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 ProcessorSpanIDRemapperParameters. +func (in *ProcessorSpanIDRemapperParameters) DeepCopy() *ProcessorSpanIDRemapperParameters { + if in == nil { + return nil + } + out := new(ProcessorSpanIDRemapperParameters) + 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 @@ -7021,6 +7022,16 @@ func (in *S3ArchiveInitParameters) DeepCopyInto(out *S3ArchiveInitParameters) { *out = new(string) **out = **in } + if in.EncryptionKey != nil { + in, out := &in.EncryptionKey, &out.EncryptionKey + *out = new(string) + **out = **in + } + if in.EncryptionType != nil { + in, out := &in.EncryptionType, &out.EncryptionType + *out = new(string) + **out = **in + } if in.Path != nil { in, out := &in.Path, &out.Path *out = new(string) @@ -7031,6 +7042,11 @@ func (in *S3ArchiveInitParameters) DeepCopyInto(out *S3ArchiveInitParameters) { *out = new(string) **out = **in } + if in.StorageClass != nil { + in, out := &in.StorageClass, &out.StorageClass + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ArchiveInitParameters. @@ -7056,6 +7072,16 @@ func (in *S3ArchiveObservation) DeepCopyInto(out *S3ArchiveObservation) { *out = new(string) **out = **in } + if in.EncryptionKey != nil { + in, out := &in.EncryptionKey, &out.EncryptionKey + *out = new(string) + **out = **in + } + if in.EncryptionType != nil { + in, out := &in.EncryptionType, &out.EncryptionType + *out = new(string) + **out = **in + } if in.Path != nil { in, out := &in.Path, &out.Path *out = new(string) @@ -7066,6 +7092,11 @@ func (in *S3ArchiveObservation) DeepCopyInto(out *S3ArchiveObservation) { *out = new(string) **out = **in } + if in.StorageClass != nil { + in, out := &in.StorageClass, &out.StorageClass + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ArchiveObservation. @@ -7091,6 +7122,16 @@ func (in *S3ArchiveParameters) DeepCopyInto(out *S3ArchiveParameters) { *out = new(string) **out = **in } + if in.EncryptionKey != nil { + in, out := &in.EncryptionKey, &out.EncryptionKey + *out = new(string) + **out = **in + } + if in.EncryptionType != nil { + in, out := &in.EncryptionType, &out.EncryptionType + *out = new(string) + **out = **in + } if in.Path != nil { in, out := &in.Path, &out.Path *out = new(string) @@ -7101,6 +7142,11 @@ func (in *S3ArchiveParameters) DeepCopyInto(out *S3ArchiveParameters) { *out = new(string) **out = **in } + if in.StorageClass != nil { + in, out := &in.StorageClass, &out.StorageClass + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ArchiveParameters. @@ -7221,6 +7267,114 @@ func (in *ServiceRemapperParameters) DeepCopy() *ServiceRemapperParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpanIDRemapperInitParameters) DeepCopyInto(out *SpanIDRemapperInitParameters) { + *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 SpanIDRemapperInitParameters. +func (in *SpanIDRemapperInitParameters) DeepCopy() *SpanIDRemapperInitParameters { + if in == nil { + return nil + } + out := new(SpanIDRemapperInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpanIDRemapperObservation) DeepCopyInto(out *SpanIDRemapperObservation) { + *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 SpanIDRemapperObservation. +func (in *SpanIDRemapperObservation) DeepCopy() *SpanIDRemapperObservation { + if in == nil { + return nil + } + out := new(SpanIDRemapperObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpanIDRemapperParameters) DeepCopyInto(out *SpanIDRemapperParameters) { + *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 SpanIDRemapperParameters. +func (in *SpanIDRemapperParameters) DeepCopy() *SpanIDRemapperParameters { + if in == nil { + return nil + } + out := new(SpanIDRemapperParameters) + 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 diff --git a/apis/logs/v1alpha1/zz_generated.managed.go b/apis/logs/v1beta1/zz_generated.managed.go similarity index 99% rename from apis/logs/v1alpha1/zz_generated.managed.go rename to apis/logs/v1beta1/zz_generated.managed.go index f0c6a8a..2bafeb4 100644 --- a/apis/logs/v1alpha1/zz_generated.managed.go +++ b/apis/logs/v1beta1/zz_generated.managed.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" diff --git a/apis/logs/v1alpha1/zz_generated.managedlist.go b/apis/logs/v1beta1/zz_generated.managedlist.go similarity index 99% rename from apis/logs/v1alpha1/zz_generated.managedlist.go rename to apis/logs/v1beta1/zz_generated.managedlist.go index 868d8e8..8d19798 100644 --- a/apis/logs/v1alpha1/zz_generated.managedlist.go +++ b/apis/logs/v1beta1/zz_generated.managedlist.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" diff --git a/apis/logs/v1beta1/zz_generated.resolvers.go b/apis/logs/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..b567117 --- /dev/null +++ b/apis/logs/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,97 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this ArchiveOrder. +func (mg *ArchiveOrder) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var mrsp reference.MultiResolutionResponse + var err error + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.ArchiveIds), + Extract: reference.ExternalName(), + References: mg.Spec.ForProvider.ArchiveIdsRefs, + Selector: mg.Spec.ForProvider.ArchiveIdsSelector, + To: reference.To{ + List: &ArchiveList{}, + Managed: &Archive{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.ArchiveIds") + } + mg.Spec.ForProvider.ArchiveIds = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.ForProvider.ArchiveIdsRefs = mrsp.ResolvedReferences + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.InitProvider.ArchiveIds), + Extract: reference.ExternalName(), + References: mg.Spec.InitProvider.ArchiveIdsRefs, + Selector: mg.Spec.InitProvider.ArchiveIdsSelector, + To: reference.To{ + List: &ArchiveList{}, + Managed: &Archive{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.ArchiveIds") + } + mg.Spec.InitProvider.ArchiveIds = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.InitProvider.ArchiveIdsRefs = mrsp.ResolvedReferences + + return nil +} + +// ResolveReferences of this IndexOrder. +func (mg *IndexOrder) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var mrsp reference.MultiResolutionResponse + var err error + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.ForProvider.Indexes), + Extract: reference.ExternalName(), + References: mg.Spec.ForProvider.IndexesRefs, + Selector: mg.Spec.ForProvider.IndexesSelector, + To: reference.To{ + List: &IndexList{}, + Managed: &Index{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.Indexes") + } + mg.Spec.ForProvider.Indexes = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.ForProvider.IndexesRefs = mrsp.ResolvedReferences + + mrsp, err = r.ResolveMultiple(ctx, reference.MultiResolutionRequest{ + CurrentValues: reference.FromPtrValues(mg.Spec.InitProvider.Indexes), + Extract: reference.ExternalName(), + References: mg.Spec.InitProvider.IndexesRefs, + Selector: mg.Spec.InitProvider.IndexesSelector, + To: reference.To{ + List: &IndexList{}, + Managed: &Index{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.Indexes") + } + mg.Spec.InitProvider.Indexes = reference.ToPtrValues(mrsp.ResolvedValues) + mg.Spec.InitProvider.IndexesRefs = mrsp.ResolvedReferences + + return nil +} diff --git a/apis/logs/v1alpha1/zz_groupversion_info.go b/apis/logs/v1beta1/zz_groupversion_info.go similarity index 79% rename from apis/logs/v1alpha1/zz_groupversion_info.go rename to apis/logs/v1beta1/zz_groupversion_info.go index f307362..3d811e3 100755 --- a/apis/logs/v1alpha1/zz_groupversion_info.go +++ b/apis/logs/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=logs.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "logs.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/logs/v1alpha1/zz_index_terraformed.go b/apis/logs/v1beta1/zz_index_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_index_terraformed.go rename to apis/logs/v1beta1/zz_index_terraformed.go index 88a6275..fedeb17 100755 --- a/apis/logs/v1alpha1/zz_index_terraformed.go +++ b/apis/logs/v1beta1/zz_index_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_index_types.go b/apis/logs/v1beta1/zz_index_types.go similarity index 85% rename from apis/logs/v1alpha1/zz_index_types.go rename to apis/logs/v1beta1/zz_index_types.go index 29ac0bf..3b63d0d 100755 --- a/apis/logs/v1alpha1/zz_index_types.go +++ b/apis/logs/v1beta1/zz_index_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -96,7 +92,7 @@ type ExclusionFilterInitParameters struct { // 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. + // (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. // The name of the exclusion filter. Name *string `json:"name,omitempty" tf:"name,omitempty"` } @@ -110,7 +106,7 @@ type ExclusionFilterObservation struct { // 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. + // (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. // The name of the exclusion filter. Name *string `json:"name,omitempty" tf:"name,omitempty"` } @@ -126,7 +122,7 @@ type ExclusionFilterParameters struct { // +kubebuilder:validation:Optional IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` - // (String) The name of the index. + // (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. // The name of the exclusion filter. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -162,7 +158,7 @@ type IndexInitParameters struct { // (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"` + 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. @@ -178,14 +174,14 @@ type IndexInitParameters struct { // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) // Logs filter - Filter []IndexFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + 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 total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + // The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + FlexRetentionDays *float64 `json:"flexRetentionDays,omitempty" tf:"flex_retention_days,omitempty"` - // (Number) The number of days before logs are deleted from this index. - // The number of days before logs are deleted from this index. + // (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. + // The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. RetentionDays *float64 `json:"retentionDays,omitempty" tf:"retention_days,omitempty"` } @@ -197,7 +193,7 @@ type IndexObservation struct { // (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"` + 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. @@ -213,17 +209,17 @@ type IndexObservation struct { // (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) // Logs filter - Filter []IndexFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + Filter *IndexFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + + // (Number) The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + // The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + FlexRetentionDays *float64 `json:"flexRetentionDays,omitempty" tf:"flex_retention_days,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. + // (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. + // The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. RetentionDays *float64 `json:"retentionDays,omitempty" tf:"retention_days,omitempty"` } @@ -237,7 +233,7 @@ type IndexParameters struct { // (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"` + 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. @@ -257,15 +253,15 @@ type IndexParameters struct { // (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"` + Filter *IndexFilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` - // (String) The name of the index. - // The name of the index. + // (Number) The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + // The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. // +kubebuilder:validation:Optional - Name *string `json:"name,omitempty" tf:"name,omitempty"` + FlexRetentionDays *float64 `json:"flexRetentionDays,omitempty" tf:"flex_retention_days,omitempty"` - // (Number) The number of days before logs are deleted from this index. - // The number of days before logs are deleted from this index. + // (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. + // The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. // +kubebuilder:validation:Optional RetentionDays *float64 `json:"retentionDays,omitempty" tf:"retention_days,omitempty"` } @@ -298,8 +294,8 @@ type IndexStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} @@ -307,7 +303,6 @@ 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"` } diff --git a/apis/logs/v1alpha1/zz_indexorder_terraformed.go b/apis/logs/v1beta1/zz_indexorder_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_indexorder_terraformed.go rename to apis/logs/v1beta1/zz_indexorder_terraformed.go index b5e34ac..85ae4fa 100755 --- a/apis/logs/v1alpha1/zz_indexorder_terraformed.go +++ b/apis/logs/v1beta1/zz_indexorder_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_indexorder_types.go b/apis/logs/v1beta1/zz_indexorder_types.go similarity index 80% rename from apis/logs/v1alpha1/zz_indexorder_types.go rename to apis/logs/v1beta1/zz_indexorder_types.go index acdd2d1..f04e1d6 100755 --- a/apis/logs/v1alpha1/zz_indexorder_types.go +++ b/apis/logs/v1beta1/zz_indexorder_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -21,11 +17,16 @@ 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/logs/v1beta1.Index 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"` + // References to Index in logs to populate indexes. + // +kubebuilder:validation:Optional + IndexesRefs []v1.Reference `json:"indexesRefs,omitempty" tf:"-"` + + // Selector for a list of Index in logs to populate indexes. + // +kubebuilder:validation:Optional + IndexesSelector *v1.Selector `json:"indexesSelector,omitempty" tf:"-"` } type IndexOrderObservation struct { @@ -36,23 +37,23 @@ type IndexOrderObservation 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 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. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/logs/v1beta1.Index // +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. + // References to Index in logs to populate indexes. // +kubebuilder:validation:Optional - Name *string `json:"name,omitempty" tf:"name,omitempty"` + IndexesRefs []v1.Reference `json:"indexesRefs,omitempty" tf:"-"` + + // Selector for a list of Index in logs to populate indexes. + // +kubebuilder:validation:Optional + IndexesSelector *v1.Selector `json:"indexesSelector,omitempty" tf:"-"` } // IndexOrderSpec defines the desired state of IndexOrder @@ -83,17 +84,16 @@ type IndexOrderStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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"` + Spec IndexOrderSpec `json:"spec"` + Status IndexOrderStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true diff --git a/apis/logs/v1alpha1/zz_integrationpipeline_terraformed.go b/apis/logs/v1beta1/zz_integrationpipeline_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_integrationpipeline_terraformed.go rename to apis/logs/v1beta1/zz_integrationpipeline_terraformed.go index 09aaf7f..51f4c23 100755 --- a/apis/logs/v1alpha1/zz_integrationpipeline_terraformed.go +++ b/apis/logs/v1beta1/zz_integrationpipeline_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_integrationpipeline_types.go b/apis/logs/v1beta1/zz_integrationpipeline_types.go similarity index 96% rename from apis/logs/v1alpha1/zz_integrationpipeline_types.go rename to apis/logs/v1beta1/zz_integrationpipeline_types.go index b70f3f5..e5e0eb4 100755 --- a/apis/logs/v1alpha1/zz_integrationpipeline_types.go +++ b/apis/logs/v1beta1/zz_integrationpipeline_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -70,8 +66,8 @@ type IntegrationPipelineStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/logs/v1alpha1/zz_metric_terraformed.go b/apis/logs/v1beta1/zz_metric_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_metric_terraformed.go rename to apis/logs/v1beta1/zz_metric_terraformed.go index aed7bb4..938043a 100755 --- a/apis/logs/v1alpha1/zz_metric_terraformed.go +++ b/apis/logs/v1beta1/zz_metric_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_metric_types.go b/apis/logs/v1beta1/zz_metric_types.go similarity index 95% rename from apis/logs/v1alpha1/zz_metric_types.go rename to apis/logs/v1beta1/zz_metric_types.go index a4c1fca..5569bc5 100755 --- a/apis/logs/v1alpha1/zz_metric_types.go +++ b/apis/logs/v1beta1/zz_metric_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -126,11 +122,11 @@ 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"` + 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"` + 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. @@ -145,11 +141,11 @@ 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"` + 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"` + 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. @@ -168,12 +164,12 @@ 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"` + 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"` + 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. @@ -214,8 +210,8 @@ type MetricStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/logs/v1alpha1/zz_pipelineorder_terraformed.go b/apis/logs/v1beta1/zz_pipelineorder_terraformed.go similarity index 96% rename from apis/logs/v1alpha1/zz_pipelineorder_terraformed.go rename to apis/logs/v1beta1/zz_pipelineorder_terraformed.go index b7a5ce2..a98c28b 100755 --- a/apis/logs/v1alpha1/zz_pipelineorder_terraformed.go +++ b/apis/logs/v1beta1/zz_pipelineorder_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/logs/v1alpha1/zz_pipelineorder_types.go b/apis/logs/v1beta1/zz_pipelineorder_types.go similarity index 68% rename from apis/logs/v1alpha1/zz_pipelineorder_types.go rename to apis/logs/v1beta1/zz_pipelineorder_types.go index 52ef1bf..7e11579 100755 --- a/apis/logs/v1alpha1/zz_pipelineorder_types.go +++ b/apis/logs/v1beta1/zz_pipelineorder_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,10 +15,6 @@ import ( 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"` @@ -33,10 +25,6 @@ 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"` @@ -44,11 +32,6 @@ type PipelineOrderObservation struct { 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 @@ -83,15 +66,14 @@ type PipelineOrderStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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"` diff --git a/apis/metric/v1alpha1/zz_generated.conversion_hubs.go b/apis/metric/v1beta1/zz_generated.conversion_hubs.go similarity index 62% rename from apis/metric/v1alpha1/zz_generated.conversion_hubs.go rename to apis/metric/v1beta1/zz_generated.conversion_hubs.go index e9400b4..09aa830 100755 --- a/apis/metric/v1alpha1/zz_generated.conversion_hubs.go +++ b/apis/metric/v1beta1/zz_generated.conversion_hubs.go @@ -1,17 +1,16 @@ -// 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 +package v1beta1 // Hub marks this type as a conversion hub. func (tr *Metadata) Hub() {} +// Hub marks this type as a conversion hub. +func (tr *SpansMetric) 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/v1beta1/zz_generated.deepcopy.go similarity index 56% rename from apis/metric/v1alpha1/zz_generated.deepcopy.go rename to apis/metric/v1beta1/zz_generated.deepcopy.go index 011461f..0d6fa98 100644 --- a/apis/metric/v1alpha1/zz_generated.deepcopy.go +++ b/apis/metric/v1beta1/zz_generated.deepcopy.go @@ -6,7 +6,7 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( runtime "k8s.io/apimachinery/pkg/runtime" @@ -87,6 +87,231 @@ func (in *AggregationsParameters) DeepCopy() *AggregationsParameters { 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 *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 *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 *Metadata) DeepCopyInto(out *Metadata) { *out = *in @@ -336,6 +561,216 @@ func (in *MetadataStatus) DeepCopy() *MetadataStatus { 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 *SpansMetricInitParameters) DeepCopyInto(out *SpansMetricInitParameters) { + *out = *in + if in.Compute != nil { + in, out := &in.Compute, &out.Compute + *out = new(ComputeInitParameters) + (*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([]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 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(ComputeObservation) + (*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([]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 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(ComputeParameters) + (*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([]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 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 *TagConfiguration) DeepCopyInto(out *TagConfiguration) { *out = *in diff --git a/apis/metric/v1alpha1/zz_generated.managed.go b/apis/metric/v1beta1/zz_generated.managed.go similarity index 67% rename from apis/metric/v1alpha1/zz_generated.managed.go rename to apis/metric/v1beta1/zz_generated.managed.go index 46de944..b52c563 100644 --- a/apis/metric/v1alpha1/zz_generated.managed.go +++ b/apis/metric/v1beta1/zz_generated.managed.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" @@ -67,6 +67,66 @@ func (mg *Metadata) 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 TagConfiguration. func (mg *TagConfiguration) GetCondition(ct xpv1.ConditionType) xpv1.Condition { return mg.Status.GetCondition(ct) diff --git a/apis/metric/v1alpha1/zz_generated.managedlist.go b/apis/metric/v1beta1/zz_generated.managedlist.go similarity index 71% rename from apis/metric/v1alpha1/zz_generated.managedlist.go rename to apis/metric/v1beta1/zz_generated.managedlist.go index b4e1857..f0b3ea7 100644 --- a/apis/metric/v1alpha1/zz_generated.managedlist.go +++ b/apis/metric/v1beta1/zz_generated.managedlist.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" @@ -16,6 +16,15 @@ func (l *MetadataList) GetItems() []resource.Managed { 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 TagConfigurationList. func (l *TagConfigurationList) GetItems() []resource.Managed { items := make([]resource.Managed, len(l.Items)) diff --git a/apis/metric/v1alpha1/zz_groupversion_info.go b/apis/metric/v1beta1/zz_groupversion_info.go similarity index 79% rename from apis/metric/v1alpha1/zz_groupversion_info.go rename to apis/metric/v1beta1/zz_groupversion_info.go index 2c5df2d..0259f67 100755 --- a/apis/metric/v1alpha1/zz_groupversion_info.go +++ b/apis/metric/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=metric.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "metric.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/metric/v1alpha1/zz_metadata_terraformed.go b/apis/metric/v1beta1/zz_metadata_terraformed.go similarity index 96% rename from apis/metric/v1alpha1/zz_metadata_terraformed.go rename to apis/metric/v1beta1/zz_metadata_terraformed.go index 46c1cc6..b917a70 100755 --- a/apis/metric/v1alpha1/zz_metadata_terraformed.go +++ b/apis/metric/v1beta1/zz_metadata_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/metric/v1alpha1/zz_metadata_types.go b/apis/metric/v1beta1/zz_metadata_types.go similarity index 98% rename from apis/metric/v1alpha1/zz_metadata_types.go rename to apis/metric/v1beta1/zz_metadata_types.go index cc32260..1f62ec6 100755 --- a/apis/metric/v1alpha1/zz_metadata_types.go +++ b/apis/metric/v1beta1/zz_metadata_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -148,8 +144,8 @@ type MetadataStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_spansmetric_terraformed.go b/apis/metric/v1beta1/zz_spansmetric_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_spansmetric_terraformed.go rename to apis/metric/v1beta1/zz_spansmetric_terraformed.go index 2543160..5e51eea 100755 --- a/apis/datadog/v1alpha1/zz_spansmetric_terraformed.go +++ b/apis/metric/v1beta1/zz_spansmetric_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_spansmetric_types.go b/apis/metric/v1beta1/zz_spansmetric_types.go similarity index 91% rename from apis/datadog/v1alpha1/zz_spansmetric_types.go rename to apis/metric/v1beta1/zz_spansmetric_types.go index 6e807ad..85c5827 100755 --- a/apis/datadog/v1alpha1/zz_spansmetric_types.go +++ b/apis/metric/v1beta1/zz_spansmetric_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,29 +13,7 @@ import ( 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 { +type ComputeInitParameters 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. @@ -54,7 +28,7 @@ type SpansMetricComputeInitParameters struct { Path *string `json:"path,omitempty" tf:"path,omitempty"` } -type SpansMetricComputeObservation struct { +type ComputeObservation 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. @@ -69,7 +43,7 @@ type SpansMetricComputeObservation struct { Path *string `json:"path,omitempty" tf:"path,omitempty"` } -type SpansMetricComputeParameters struct { +type ComputeParameters 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. @@ -87,7 +61,29 @@ type SpansMetricComputeParameters struct { Path *string `json:"path,omitempty" tf:"path,omitempty"` } -type SpansMetricGroupByInitParameters struct { +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 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 span-based metric will be aggregated over. @@ -98,7 +94,7 @@ type SpansMetricGroupByInitParameters struct { TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` } -type SpansMetricGroupByObservation struct { +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 span-based metric will be aggregated over. @@ -109,7 +105,7 @@ type SpansMetricGroupByObservation struct { TagName *string `json:"tagName,omitempty" tf:"tag_name,omitempty"` } -type SpansMetricGroupByParameters struct { +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 span-based metric will be aggregated over. @@ -125,13 +121,13 @@ type SpansMetricGroupByParameters struct { type SpansMetricInitParameters struct { // (Block, Optional) (see below for nested schema) - Compute *SpansMetricComputeInitParameters `json:"compute,omitempty" tf:"compute,omitempty"` + Compute *ComputeInitParameters `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"` + GroupBy []GroupByInitParameters `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. @@ -141,13 +137,13 @@ type SpansMetricInitParameters struct { type SpansMetricObservation struct { // (Block, Optional) (see below for nested schema) - Compute *SpansMetricComputeObservation `json:"compute,omitempty" tf:"compute,omitempty"` + Compute *ComputeObservation `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"` + GroupBy []GroupByObservation `json:"groupBy,omitempty" tf:"group_by,omitempty"` // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -161,7 +157,7 @@ type SpansMetricParameters struct { // (Block, Optional) (see below for nested schema) // +kubebuilder:validation:Optional - Compute *SpansMetricComputeParameters `json:"compute,omitempty" tf:"compute,omitempty"` + Compute *ComputeParameters `json:"compute,omitempty" tf:"compute,omitempty"` // (Block, Optional) (see below for nested schema) // +kubebuilder:validation:Optional @@ -169,7 +165,7 @@ type SpansMetricParameters struct { // (Block Set) (see below for nested schema) // +kubebuilder:validation:Optional - GroupBy []SpansMetricGroupByParameters `json:"groupBy,omitempty" tf:"group_by,omitempty"` + GroupBy []GroupByParameters `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. @@ -205,8 +201,8 @@ type SpansMetricStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/metric/v1alpha1/zz_tagconfiguration_terraformed.go b/apis/metric/v1beta1/zz_tagconfiguration_terraformed.go similarity index 96% rename from apis/metric/v1alpha1/zz_tagconfiguration_terraformed.go rename to apis/metric/v1beta1/zz_tagconfiguration_terraformed.go index ac9d0b3..8d17baa 100755 --- a/apis/metric/v1alpha1/zz_tagconfiguration_terraformed.go +++ b/apis/metric/v1beta1/zz_tagconfiguration_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/metric/v1alpha1/zz_tagconfiguration_types.go b/apis/metric/v1beta1/zz_tagconfiguration_types.go similarity index 98% rename from apis/metric/v1alpha1/zz_tagconfiguration_types.go rename to apis/metric/v1beta1/zz_tagconfiguration_types.go index 967588f..506df03 100755 --- a/apis/metric/v1alpha1/zz_tagconfiguration_types.go +++ b/apis/metric/v1beta1/zz_tagconfiguration_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -173,8 +169,8 @@ type TagConfigurationStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/monitor/v1beta1/zz_configpolicy_terraformed.go b/apis/monitor/v1beta1/zz_configpolicy_terraformed.go new file mode 100755 index 0000000..654ce27 --- /dev/null +++ b/apis/monitor/v1beta1/zz_configpolicy_terraformed.go @@ -0,0 +1,129 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +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 ConfigPolicy +func (mg *ConfigPolicy) GetTerraformResourceType() string { + return "datadog_monitor_config_policy" +} + +// GetConnectionDetailsMapping for this ConfigPolicy +func (tr *ConfigPolicy) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this ConfigPolicy +func (tr *ConfigPolicy) 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 ConfigPolicy +func (tr *ConfigPolicy) 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 ConfigPolicy +func (tr *ConfigPolicy) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this ConfigPolicy +func (tr *ConfigPolicy) 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 ConfigPolicy +func (tr *ConfigPolicy) 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 ConfigPolicy +func (tr *ConfigPolicy) 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 ConfigPolicy +func (tr *ConfigPolicy) 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 ConfigPolicy using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *ConfigPolicy) LateInitialize(attrs []byte) (bool, error) { + params := &ConfigPolicyParameters{} + 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 *ConfigPolicy) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_monitorconfigpolicy_types.go b/apis/monitor/v1beta1/zz_configpolicy_types.go similarity index 72% rename from apis/datadog/v1alpha1/zz_monitorconfigpolicy_types.go rename to apis/monitor/v1beta1/zz_configpolicy_types.go index 8de47bb..a317978 100755 --- a/apis/datadog/v1alpha1/zz_monitorconfigpolicy_types.go +++ b/apis/monitor/v1beta1/zz_configpolicy_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type MonitorConfigPolicyInitParameters struct { +type ConfigPolicyInitParameters struct { // (String) The monitor config policy type Valid values are tag. // The monitor config policy type Valid values are `tag`. @@ -25,10 +21,10 @@ type MonitorConfigPolicyInitParameters struct { // (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"` + TagPolicy *TagPolicyInitParameters `json:"tagPolicy,omitempty" tf:"tag_policy,omitempty"` } -type MonitorConfigPolicyObservation struct { +type ConfigPolicyObservation struct { // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -39,10 +35,10 @@ type MonitorConfigPolicyObservation struct { // (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"` + TagPolicy *TagPolicyObservation `json:"tagPolicy,omitempty" tf:"tag_policy,omitempty"` } -type MonitorConfigPolicyParameters struct { +type ConfigPolicyParameters struct { // (String) The monitor config policy type Valid values are tag. // The monitor config policy type Valid values are `tag`. @@ -52,7 +48,7 @@ type MonitorConfigPolicyParameters struct { // (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"` + TagPolicy *TagPolicyParameters `json:"tagPolicy,omitempty" tf:"tag_policy,omitempty"` } type TagPolicyInitParameters struct { @@ -103,10 +99,10 @@ type TagPolicyParameters struct { ValidTagValues []*string `json:"validTagValues" tf:"valid_tag_values,omitempty"` } -// MonitorConfigPolicySpec defines the desired state of MonitorConfigPolicy -type MonitorConfigPolicySpec struct { +// ConfigPolicySpec defines the desired state of ConfigPolicy +type ConfigPolicySpec struct { v1.ResourceSpec `json:",inline"` - ForProvider MonitorConfigPolicyParameters `json:"forProvider"` + ForProvider ConfigPolicyParameters `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 @@ -117,50 +113,50 @@ type MonitorConfigPolicySpec 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 MonitorConfigPolicyInitParameters `json:"initProvider,omitempty"` + InitProvider ConfigPolicyInitParameters `json:"initProvider,omitempty"` } -// MonitorConfigPolicyStatus defines the observed state of MonitorConfigPolicy. -type MonitorConfigPolicyStatus struct { +// ConfigPolicyStatus defines the observed state of ConfigPolicy. +type ConfigPolicyStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider MonitorConfigPolicyObservation `json:"atProvider,omitempty"` + AtProvider ConfigPolicyObservation `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" +// ConfigPolicy is the Schema for the ConfigPolicys API. Provides a Datadog monitor config policy resource. This can be used to create and manage Datadog monitor config policies. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type ConfigPolicy 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"` + Spec ConfigPolicySpec `json:"spec"` + Status ConfigPolicyStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// MonitorConfigPolicyList contains a list of MonitorConfigPolicys -type MonitorConfigPolicyList struct { +// ConfigPolicyList contains a list of ConfigPolicys +type ConfigPolicyList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []MonitorConfigPolicy `json:"items"` + Items []ConfigPolicy `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) + ConfigPolicy_Kind = "ConfigPolicy" + ConfigPolicy_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ConfigPolicy_Kind}.String() + ConfigPolicy_KindAPIVersion = ConfigPolicy_Kind + "." + CRDGroupVersion.String() + ConfigPolicy_GroupVersionKind = CRDGroupVersion.WithKind(ConfigPolicy_Kind) ) func init() { - SchemeBuilder.Register(&MonitorConfigPolicy{}, &MonitorConfigPolicyList{}) + SchemeBuilder.Register(&ConfigPolicy{}, &ConfigPolicyList{}) } diff --git a/apis/datadog/v1alpha1/zz_downtime_terraformed.go b/apis/monitor/v1beta1/zz_downtime_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_downtime_terraformed.go rename to apis/monitor/v1beta1/zz_downtime_terraformed.go index 77d045e..2f88c86 100755 --- a/apis/datadog/v1alpha1/zz_downtime_terraformed.go +++ b/apis/monitor/v1beta1/zz_downtime_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_downtime_types.go b/apis/monitor/v1beta1/zz_downtime_types.go similarity index 94% rename from apis/datadog/v1alpha1/zz_downtime_types.go rename to apis/monitor/v1beta1/zz_downtime_types.go index 370cebb..fcfa04e 100755 --- a/apis/datadog/v1alpha1/zz_downtime_types.go +++ b/apis/monitor/v1beta1/zz_downtime_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -33,8 +29,17 @@ type DowntimeInitParameters struct { // (Number) When specified, this downtime will only apply to this monitor // When specified, this downtime will only apply to this monitor + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/monitor/v1beta1.Monitor MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + // Reference to a Monitor in monitor to populate monitorId. + // +kubebuilder:validation:Optional + MonitorIDRef *v1.Reference `json:"monitorIdRef,omitempty" tf:"-"` + + // Selector for a Monitor in monitor to populate monitorId. + // +kubebuilder:validation:Optional + MonitorIDSelector *v1.Selector `json:"monitorIdSelector,omitempty" tf:"-"` + // (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 @@ -46,7 +51,7 @@ type DowntimeInitParameters struct { // (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"` + 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 '*' @@ -109,7 +114,7 @@ type DowntimeObservation struct { // (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"` + 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 '*' @@ -147,9 +152,18 @@ type DowntimeParameters struct { // (Number) When specified, this downtime will only apply to this monitor // When specified, this downtime will only apply to this monitor + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/monitor/v1beta1.Monitor // +kubebuilder:validation:Optional MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` + // Reference to a Monitor in monitor to populate monitorId. + // +kubebuilder:validation:Optional + MonitorIDRef *v1.Reference `json:"monitorIdRef,omitempty" tf:"-"` + + // Selector for a Monitor in monitor to populate monitorId. + // +kubebuilder:validation:Optional + MonitorIDSelector *v1.Selector `json:"monitorIdSelector,omitempty" tf:"-"` + // (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 @@ -164,7 +178,7 @@ type DowntimeParameters struct { // (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"` + 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 '*' @@ -302,8 +316,8 @@ type DowntimeStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_downtimeschedule_terraformed.go b/apis/monitor/v1beta1/zz_downtimeschedule_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_downtimeschedule_terraformed.go rename to apis/monitor/v1beta1/zz_downtimeschedule_terraformed.go index 181e059..61905b0 100755 --- a/apis/datadog/v1alpha1/zz_downtimeschedule_terraformed.go +++ b/apis/monitor/v1beta1/zz_downtimeschedule_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_downtimeschedule_types.go b/apis/monitor/v1beta1/zz_downtimeschedule_types.go similarity index 99% rename from apis/datadog/v1alpha1/zz_downtimeschedule_types.go rename to apis/monitor/v1beta1/zz_downtimeschedule_types.go index 42fca7e..b72f0bc 100755 --- a/apis/datadog/v1alpha1/zz_downtimeschedule_types.go +++ b/apis/monitor/v1beta1/zz_downtimeschedule_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -324,8 +320,8 @@ type DowntimeScheduleStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/monitor/v1beta1/zz_generated.conversion_hubs.go b/apis/monitor/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..a1c8932 --- /dev/null +++ b/apis/monitor/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,22 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *ConfigPolicy) 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 *Monitor) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *MonitorJSON) Hub() {} diff --git a/apis/monitor/v1beta1/zz_generated.deepcopy.go b/apis/monitor/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..a71050b --- /dev/null +++ b/apis/monitor/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,3595 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *CloudCostQueryInitParameters) DeepCopyInto(out *CloudCostQueryInitParameters) { + *out = *in + if in.Aggregator != nil { + in, out := &in.Aggregator, &out.Aggregator + *out = new(string) + **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 CloudCostQueryInitParameters. +func (in *CloudCostQueryInitParameters) DeepCopy() *CloudCostQueryInitParameters { + if in == nil { + return nil + } + out := new(CloudCostQueryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudCostQueryObservation) DeepCopyInto(out *CloudCostQueryObservation) { + *out = *in + if in.Aggregator != nil { + in, out := &in.Aggregator, &out.Aggregator + *out = new(string) + **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 CloudCostQueryObservation. +func (in *CloudCostQueryObservation) DeepCopy() *CloudCostQueryObservation { + if in == nil { + return nil + } + out := new(CloudCostQueryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CloudCostQueryParameters) DeepCopyInto(out *CloudCostQueryParameters) { + *out = *in + if in.Aggregator != nil { + in, out := &in.Aggregator, &out.Aggregator + *out = new(string) + **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 CloudCostQueryParameters. +func (in *CloudCostQueryParameters) DeepCopy() *CloudCostQueryParameters { + if in == nil { + return nil + } + out := new(CloudCostQueryParameters) + 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 *ConfigPolicy) DeepCopyInto(out *ConfigPolicy) { + *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 ConfigPolicy. +func (in *ConfigPolicy) DeepCopy() *ConfigPolicy { + if in == nil { + return nil + } + out := new(ConfigPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigPolicy) 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 *ConfigPolicyInitParameters) DeepCopyInto(out *ConfigPolicyInitParameters) { + *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 = new(TagPolicyInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigPolicyInitParameters. +func (in *ConfigPolicyInitParameters) DeepCopy() *ConfigPolicyInitParameters { + if in == nil { + return nil + } + out := new(ConfigPolicyInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigPolicyList) DeepCopyInto(out *ConfigPolicyList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ConfigPolicy, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigPolicyList. +func (in *ConfigPolicyList) DeepCopy() *ConfigPolicyList { + if in == nil { + return nil + } + out := new(ConfigPolicyList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ConfigPolicyList) 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 *ConfigPolicyObservation) DeepCopyInto(out *ConfigPolicyObservation) { + *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 = new(TagPolicyObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigPolicyObservation. +func (in *ConfigPolicyObservation) DeepCopy() *ConfigPolicyObservation { + if in == nil { + return nil + } + out := new(ConfigPolicyObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigPolicyParameters) DeepCopyInto(out *ConfigPolicyParameters) { + *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 = new(TagPolicyParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigPolicyParameters. +func (in *ConfigPolicyParameters) DeepCopy() *ConfigPolicyParameters { + if in == nil { + return nil + } + out := new(ConfigPolicyParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigPolicySpec) DeepCopyInto(out *ConfigPolicySpec) { + *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 ConfigPolicySpec. +func (in *ConfigPolicySpec) DeepCopy() *ConfigPolicySpec { + if in == nil { + return nil + } + out := new(ConfigPolicySpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigPolicyStatus) DeepCopyInto(out *ConfigPolicyStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigPolicyStatus. +func (in *ConfigPolicyStatus) DeepCopy() *ConfigPolicyStatus { + if in == nil { + return nil + } + out := new(ConfigPolicyStatus) + 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 = new(CustomScheduleRecurrenceInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(CustomScheduleRecurrenceObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(CustomScheduleRecurrenceParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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.MonitorIDRef != nil { + in, out := &in.MonitorIDRef, &out.MonitorIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.MonitorIDSelector != nil { + in, out := &in.MonitorIDSelector, &out.MonitorIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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 = new(RecurrenceInitParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(RecurrenceObservation) + (*in).DeepCopyInto(*out) + } + 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.MonitorIDRef != nil { + in, out := &in.MonitorIDRef, &out.MonitorIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.MonitorIDSelector != nil { + in, out := &in.MonitorIDSelector, &out.MonitorIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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 = new(RecurrenceParameters) + (*in).DeepCopyInto(*out) + } + 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 *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 = new(SearchInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(SearchObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(SearchParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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 = new(SortInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(SortObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(SortParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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 *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.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.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 = new(MonitorThresholdWindowsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MonitorThresholds != nil { + in, out := &in.MonitorThresholds, &out.MonitorThresholds + *out = new(MonitorThresholdsInitParameters) + (*in).DeepCopyInto(*out) + } + 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(string) + **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 = new(SchedulingOptionsInitParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(VariablesInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(MonitorThresholdWindowsObservation) + (*in).DeepCopyInto(*out) + } + if in.MonitorThresholds != nil { + in, out := &in.MonitorThresholds, &out.MonitorThresholds + *out = new(MonitorThresholdsObservation) + (*in).DeepCopyInto(*out) + } + 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(string) + **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 = new(SchedulingOptionsObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(VariablesObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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.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.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 = new(MonitorThresholdWindowsParameters) + (*in).DeepCopyInto(*out) + } + if in.MonitorThresholds != nil { + in, out := &in.MonitorThresholds, &out.MonitorThresholds + *out = new(MonitorThresholdsParameters) + (*in).DeepCopyInto(*out) + } + 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(string) + **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 = new(SchedulingOptionsParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(VariablesParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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 *SchedulingOptionsInitParameters) DeepCopyInto(out *SchedulingOptionsInitParameters) { + *out = *in + if in.CustomSchedule != nil { + in, out := &in.CustomSchedule, &out.CustomSchedule + *out = new(CustomScheduleInitParameters) + (*in).DeepCopyInto(*out) + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = new(EvaluationWindowInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(CustomScheduleObservation) + (*in).DeepCopyInto(*out) + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = new(EvaluationWindowObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(CustomScheduleParameters) + (*in).DeepCopyInto(*out) + } + if in.EvaluationWindow != nil { + in, out := &in.EvaluationWindow, &out.EvaluationWindow + *out = new(EvaluationWindowParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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 *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 *VariablesInitParameters) DeepCopyInto(out *VariablesInitParameters) { + *out = *in + if in.CloudCostQuery != nil { + in, out := &in.CloudCostQuery, &out.CloudCostQuery + *out = make([]CloudCostQueryInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + 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.CloudCostQuery != nil { + in, out := &in.CloudCostQuery, &out.CloudCostQuery + *out = make([]CloudCostQueryObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + 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.CloudCostQuery != nil { + in, out := &in.CloudCostQuery, &out.CloudCostQuery + *out = make([]CloudCostQueryParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + 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 +} diff --git a/apis/monitor/v1beta1/zz_generated.managed.go b/apis/monitor/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..64179be --- /dev/null +++ b/apis/monitor/v1beta1/zz_generated.managed.go @@ -0,0 +1,308 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this ConfigPolicy. +func (mg *ConfigPolicy) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ConfigPolicy. +func (mg *ConfigPolicy) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ConfigPolicy. +func (mg *ConfigPolicy) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ConfigPolicy. +func (mg *ConfigPolicy) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ConfigPolicy. +func (mg *ConfigPolicy) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ConfigPolicy. +func (mg *ConfigPolicy) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ConfigPolicy. +func (mg *ConfigPolicy) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ConfigPolicy. +func (mg *ConfigPolicy) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ConfigPolicy. +func (mg *ConfigPolicy) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ConfigPolicy. +func (mg *ConfigPolicy) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ConfigPolicy. +func (mg *ConfigPolicy) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ConfigPolicy. +func (mg *ConfigPolicy) 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 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 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 +} diff --git a/apis/monitor/v1beta1/zz_generated.managedlist.go b/apis/monitor/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..1a4b905 --- /dev/null +++ b/apis/monitor/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,53 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ConfigPolicyList. +func (l *ConfigPolicyList) 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 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 +} diff --git a/apis/monitor/v1beta1/zz_generated.resolvers.go b/apis/monitor/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..01fd8ef --- /dev/null +++ b/apis/monitor/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,55 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this Downtime. +func (mg *Downtime) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromFloatPtrValue(mg.Spec.ForProvider.MonitorID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.MonitorIDRef, + Selector: mg.Spec.ForProvider.MonitorIDSelector, + To: reference.To{ + List: &MonitorList{}, + Managed: &Monitor{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.MonitorID") + } + mg.Spec.ForProvider.MonitorID = reference.ToFloatPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.MonitorIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromFloatPtrValue(mg.Spec.InitProvider.MonitorID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.MonitorIDRef, + Selector: mg.Spec.InitProvider.MonitorIDSelector, + To: reference.To{ + List: &MonitorList{}, + Managed: &Monitor{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.MonitorID") + } + mg.Spec.InitProvider.MonitorID = reference.ToFloatPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.MonitorIDRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/monitor/v1beta1/zz_groupversion_info.go b/apis/monitor/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..b124639 --- /dev/null +++ b/apis/monitor/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=monitor.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "monitor.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_monitor_terraformed.go b/apis/monitor/v1beta1/zz_monitor_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_monitor_terraformed.go rename to apis/monitor/v1beta1/zz_monitor_terraformed.go index bd90048..2ee75fc 100755 --- a/apis/datadog/v1alpha1/zz_monitor_terraformed.go +++ b/apis/monitor/v1beta1/zz_monitor_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_monitor_types.go b/apis/monitor/v1beta1/zz_monitor_types.go similarity index 85% rename from apis/datadog/v1alpha1/zz_monitor_types.go rename to apis/monitor/v1beta1/zz_monitor_types.go index 925588f..c977a84 100755 --- a/apis/datadog/v1alpha1/zz_monitor_types.go +++ b/apis/monitor/v1beta1/zz_monitor_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,6 +13,67 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type CloudCostQueryInitParameters struct { + + // (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + // The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`. + Aggregator *string `json:"aggregator,omitempty" tf:"aggregator,omitempty"` + + // (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + // The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (String) Name of Datadog monitor. + // The name of the query for use in formulas. + Name *string `json:"name,omitempty" tf:"name,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 cloud cost query definition. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type CloudCostQueryObservation struct { + + // (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + // The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`. + Aggregator *string `json:"aggregator,omitempty" tf:"aggregator,omitempty"` + + // (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + // The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` + + // (String) Name of Datadog monitor. + // The name of the query for use in formulas. + Name *string `json:"name,omitempty" tf:"name,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 cloud cost query definition. + Query *string `json:"query,omitempty" tf:"query,omitempty"` +} + +type CloudCostQueryParameters struct { + + // (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + // The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`. + // +kubebuilder:validation:Optional + Aggregator *string `json:"aggregator,omitempty" tf:"aggregator,omitempty"` + + // (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + // The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`. + // +kubebuilder:validation:Optional + DataSource *string `json:"dataSource" tf:"data_source,omitempty"` + + // (String) Name of Datadog monitor. + // The name of the query for use in formulas. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,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 cloud cost query definition. + // +kubebuilder:validation:Optional + Query *string `json:"query" tf:"query,omitempty"` +} + 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. @@ -69,14 +126,14 @@ 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"` + 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"` + Recurrence *CustomScheduleRecurrenceObservation `json:"recurrence,omitempty" tf:"recurrence,omitempty"` } type CustomScheduleParameters struct { @@ -84,7 +141,7 @@ 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"` + Recurrence *CustomScheduleRecurrenceParameters `json:"recurrence" tf:"recurrence,omitempty"` } type CustomScheduleRecurrenceInitParameters struct { @@ -189,8 +246,8 @@ type EventQueryInitParameters struct { // 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`. + // (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + // The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`, `network`. DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` // (Block List) Group by options. (see below for nested schema) @@ -207,7 +264,7 @@ type EventQueryInitParameters struct { // (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"` + Search *SearchInitParameters `json:"search,omitempty" tf:"search,omitempty"` } type EventQueryObservation struct { @@ -216,8 +273,8 @@ type EventQueryObservation struct { // 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`. + // (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + // The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`, `network`. DataSource *string `json:"dataSource,omitempty" tf:"data_source,omitempty"` // (Block List) Group by options. (see below for nested schema) @@ -234,7 +291,7 @@ type EventQueryObservation struct { // (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"` + Search *SearchObservation `json:"search,omitempty" tf:"search,omitempty"` } type EventQueryParameters struct { @@ -244,8 +301,8 @@ type EventQueryParameters struct { // +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`. + // (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + // The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`, `network`. // +kubebuilder:validation:Optional DataSource *string `json:"dataSource" tf:"data_source,omitempty"` @@ -267,7 +324,7 @@ type EventQueryParameters struct { // (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"` + Search *SearchParameters `json:"search" tf:"search,omitempty"` } type GroupByInitParameters struct { @@ -282,7 +339,7 @@ type GroupByInitParameters struct { // (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"` + Sort *SortInitParameters `json:"sort,omitempty" tf:"sort,omitempty"` } type GroupByObservation struct { @@ -297,7 +354,7 @@ type GroupByObservation struct { // (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"` + Sort *SortObservation `json:"sort,omitempty" tf:"sort,omitempty"` } type GroupByParameters struct { @@ -315,7 +372,7 @@ type GroupByParameters struct { // (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"` + Sort *SortParameters `json:"sort,omitempty" tf:"sort,omitempty"` } type MonitorInitParameters struct { @@ -324,6 +381,10 @@ type MonitorInitParameters struct { // 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"` @@ -362,11 +423,11 @@ type MonitorInitParameters struct { // (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"` + 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"` + MonitorThresholds *MonitorThresholdsInitParameters `json:"monitorThresholds,omitempty" tf:"monitor_thresholds,omitempty"` // (String) Name of Datadog monitor. // Name of Datadog monitor. @@ -405,13 +466,13 @@ type MonitorInitParameters struct { // 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`. + // (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 not available for Service Check, Composite, or SLO 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 not available for Service Check, Composite, or SLO 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. + // (String) 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"` + Priority *string `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. @@ -437,13 +498,13 @@ type MonitorInitParameters struct { 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. + // 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. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource. // +listType=set RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` - // (Block List) Configuration options for scheduling. (see below for nested schema) + // (Block List, Max: 1) Configuration options for scheduling. (see below for nested schema) // Configuration options for scheduling. - SchedulingOptions []SchedulingOptionsInitParameters `json:"schedulingOptions,omitempty" tf:"scheduling_options,omitempty"` + 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 @@ -454,8 +515,8 @@ type MonitorInitParameters struct { // 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`. + // analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert, network-performance alert, cost 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`, `network-performance alert`, `cost alert`. Type *string `json:"type,omitempty" tf:"type,omitempty"` // (Boolean) If set to false, skip the validation call done during plan. @@ -463,7 +524,7 @@ type MonitorInitParameters struct { 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"` + Variables *VariablesInitParameters `json:"variables,omitempty" tf:"variables,omitempty"` } type MonitorObservation struct { @@ -517,11 +578,11 @@ type MonitorObservation struct { // (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"` + 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"` + MonitorThresholds *MonitorThresholdsObservation `json:"monitorThresholds,omitempty" tf:"monitor_thresholds,omitempty"` // (String) Name of Datadog monitor. // Name of Datadog monitor. @@ -560,13 +621,13 @@ type MonitorObservation struct { // 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`. + // (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 not available for Service Check, Composite, or SLO 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 not available for Service Check, Composite, or SLO 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. + // (String) 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"` + Priority *string `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. @@ -592,13 +653,13 @@ type MonitorObservation struct { 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. + // 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. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource. // +listType=set RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` - // (Block List) Configuration options for scheduling. (see below for nested schema) + // (Block List, Max: 1) Configuration options for scheduling. (see below for nested schema) // Configuration options for scheduling. - SchedulingOptions []SchedulingOptionsObservation `json:"schedulingOptions,omitempty" tf:"scheduling_options,omitempty"` + 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 @@ -609,8 +670,8 @@ type MonitorObservation struct { // 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`. + // analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert, network-performance alert, cost 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`, `network-performance alert`, `cost alert`. Type *string `json:"type,omitempty" tf:"type,omitempty"` // (Boolean) If set to false, skip the validation call done during plan. @@ -618,7 +679,7 @@ type MonitorObservation struct { 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"` + Variables *VariablesObservation `json:"variables,omitempty" tf:"variables,omitempty"` } type MonitorParameters struct { @@ -628,6 +689,11 @@ type MonitorParameters struct { // +kubebuilder:validation:Optional 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. + // +kubebuilder:validation:Optional + 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. // +kubebuilder:validation:Optional @@ -675,12 +741,12 @@ type MonitorParameters struct { // (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"` + 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"` + MonitorThresholds *MonitorThresholdsParameters `json:"monitorThresholds,omitempty" tf:"monitor_thresholds,omitempty"` // (String) Name of Datadog monitor. // Name of Datadog monitor. @@ -727,15 +793,15 @@ type MonitorParameters struct { // +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`. + // (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 not available for Service Check, Composite, or SLO 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 not available for Service Check, Composite, or SLO 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. + // (String) 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"` + Priority *string `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. @@ -766,15 +832,15 @@ type MonitorParameters struct { 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. + // 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. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource. // +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) + // (Block List, Max: 1) 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"` + 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 @@ -787,8 +853,8 @@ type MonitorParameters struct { // +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`. + // analytics alert, slo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert, network-performance alert, cost 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`, `network-performance alert`, `cost alert`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -799,7 +865,7 @@ type MonitorParameters struct { // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Variables []VariablesParameters `json:"variables,omitempty" tf:"variables,omitempty"` + Variables *VariablesParameters `json:"variables,omitempty" tf:"variables,omitempty"` } type MonitorThresholdWindowsInitParameters struct { @@ -926,37 +992,37 @@ type MonitorThresholdsParameters struct { 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) + // (Block List, Max: 1) 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"` + 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) + // (Block List, Max: 1) 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"` + 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) + // (Block List, Max: 1) 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"` + 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) + // (Block List, Max: 1) 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"` + 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) + // (Block List, Max: 1) 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"` + 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) + // (Block List, Max: 1) 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"` + EvaluationWindow *EvaluationWindowParameters `json:"evaluationWindow,omitempty" tf:"evaluation_window,omitempty"` } type SearchInitParameters struct { @@ -1031,6 +1097,10 @@ type SortParameters struct { type VariablesInitParameters struct { + // (Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema) + // The Cloud Cost query using formulas and functions. + CloudCostQuery []CloudCostQueryInitParameters `json:"cloudCostQuery,omitempty" tf:"cloud_cost_query,omitempty"` + // (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"` @@ -1038,6 +1108,10 @@ type VariablesInitParameters struct { type VariablesObservation struct { + // (Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema) + // The Cloud Cost query using formulas and functions. + CloudCostQuery []CloudCostQueryObservation `json:"cloudCostQuery,omitempty" tf:"cloud_cost_query,omitempty"` + // (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"` @@ -1045,6 +1119,11 @@ type VariablesObservation struct { type VariablesParameters struct { + // (Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema) + // The Cloud Cost query using formulas and functions. + // +kubebuilder:validation:Optional + CloudCostQuery []CloudCostQueryParameters `json:"cloudCostQuery,omitempty" tf:"cloud_cost_query,omitempty"` + // (Block List) A timeseries formula and functions events query. (see below for nested schema) // A timeseries formula and functions events query. // +kubebuilder:validation:Optional @@ -1079,8 +1158,8 @@ type MonitorStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_monitorjson_terraformed.go b/apis/monitor/v1beta1/zz_monitorjson_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_monitorjson_terraformed.go rename to apis/monitor/v1beta1/zz_monitorjson_terraformed.go index ffbb055..4364130 100755 --- a/apis/datadog/v1alpha1/zz_monitorjson_terraformed.go +++ b/apis/monitor/v1beta1/zz_monitorjson_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_monitorjson_types.go b/apis/monitor/v1beta1/zz_monitorjson_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_monitorjson_types.go rename to apis/monitor/v1beta1/zz_monitorjson_types.go index 742e4f6..50a8e0e 100755 --- a/apis/datadog/v1alpha1/zz_monitorjson_types.go +++ b/apis/monitor/v1beta1/zz_monitorjson_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -83,8 +79,8 @@ type MonitorJSONStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/notification/v1beta1/zz_generated.conversion_hubs.go b/apis/notification/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..bc794e5 --- /dev/null +++ b/apis/notification/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,13 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// 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/notification/v1beta1/zz_generated.deepcopy.go b/apis/notification/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..1097f2c --- /dev/null +++ b/apis/notification/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,408 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *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 + } + out.ValueSecretRef = in.ValueSecretRef +} + +// 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/notification/v1beta1/zz_generated.managed.go b/apis/notification/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..ff61b18 --- /dev/null +++ b/apis/notification/v1beta1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// 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/notification/v1beta1/zz_generated.managedlist.go b/apis/notification/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..e66c6d8 --- /dev/null +++ b/apis/notification/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// 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/notification/v1beta1/zz_groupversion_info.go b/apis/notification/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..1e2410d --- /dev/null +++ b/apis/notification/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=notification.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "notification.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_webhook_terraformed.go b/apis/notification/v1beta1/zz_webhook_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_webhook_terraformed.go rename to apis/notification/v1beta1/zz_webhook_terraformed.go index d4d0768..86a63ba 100755 --- a/apis/datadog/v1alpha1/zz_webhook_terraformed.go +++ b/apis/notification/v1beta1/zz_webhook_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_webhook_types.go b/apis/notification/v1beta1/zz_webhook_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_webhook_types.go rename to apis/notification/v1beta1/zz_webhook_types.go index 6379edd..638c419 100755 --- a/apis/datadog/v1alpha1/zz_webhook_types.go +++ b/apis/notification/v1beta1/zz_webhook_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -122,8 +118,8 @@ type WebhookStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_webhookcustomvariable_terraformed.go b/apis/notification/v1beta1/zz_webhookcustomvariable_terraformed.go similarity index 95% rename from apis/datadog/v1alpha1/zz_webhookcustomvariable_terraformed.go rename to apis/notification/v1beta1/zz_webhookcustomvariable_terraformed.go index ce91f97..dfba2d0 100755 --- a/apis/datadog/v1alpha1/zz_webhookcustomvariable_terraformed.go +++ b/apis/notification/v1beta1/zz_webhookcustomvariable_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *WebhookCustomVariable) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this WebhookCustomVariable func (tr *WebhookCustomVariable) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"value": "spec.forProvider.valueSecretRef"} + return map[string]string{"value": "valueSecretRef"} } // GetObservation of this WebhookCustomVariable diff --git a/apis/datadog/v1alpha1/zz_webhookcustomvariable_types.go b/apis/notification/v1beta1/zz_webhookcustomvariable_types.go similarity index 97% rename from apis/datadog/v1alpha1/zz_webhookcustomvariable_types.go rename to apis/notification/v1beta1/zz_webhookcustomvariable_types.go index 24caaaa..9e4a40f 100755 --- a/apis/datadog/v1alpha1/zz_webhookcustomvariable_types.go +++ b/apis/notification/v1beta1/zz_webhookcustomvariable_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -26,6 +22,10 @@ type WebhookCustomVariableInitParameters struct { // (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"` + + // (String, Sensitive) The value of the custom variable. + // The value of the custom variable. + ValueSecretRef v1.SecretKeySelector `json:"valueSecretRef" tf:"-"` } type WebhookCustomVariableObservation struct { @@ -88,8 +88,8 @@ type WebhookCustomVariableStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/datadog/v1alpha1/zz_childorganization_terraformed.go b/apis/organization/v1beta1/zz_childorganization_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_childorganization_terraformed.go rename to apis/organization/v1beta1/zz_childorganization_terraformed.go index 7656267..525ddad 100755 --- a/apis/datadog/v1alpha1/zz_childorganization_terraformed.go +++ b/apis/organization/v1beta1/zz_childorganization_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_childorganization_types.go b/apis/organization/v1beta1/zz_childorganization_types.go similarity index 95% rename from apis/datadog/v1alpha1/zz_childorganization_types.go rename to apis/organization/v1beta1/zz_childorganization_types.go index 2da52e4..35415a4 100755 --- a/apis/datadog/v1alpha1/zz_childorganization_types.go +++ b/apis/organization/v1beta1/zz_childorganization_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,37 +13,37 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type ApplicationKeyInitParameters struct { +type APIKeyInitParameters struct { } -type ApplicationKeyObservation struct { +type APIKeyObservation struct { // (String) - Hash *string `json:"hash,omitempty" tf:"hash,omitempty"` + Key *string `json:"key,omitempty" tf:"key,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 APIKeyParameters struct { } -type ChildOrganizationAPIKeyInitParameters struct { +type ApplicationKeyInitParameters struct { } -type ChildOrganizationAPIKeyObservation struct { +type ApplicationKeyObservation struct { // (String) - Key *string `json:"key,omitempty" tf:"key,omitempty"` + 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 ChildOrganizationAPIKeyParameters struct { +type ApplicationKeyParameters struct { } type ChildOrganizationInitParameters struct { @@ -61,7 +57,7 @@ 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"` + APIKey []APIKeyObservation `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. @@ -235,8 +231,8 @@ type ChildOrganizationStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/organization/v1beta1/zz_generated.conversion_hubs.go b/apis/organization/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..5bd1da1 --- /dev/null +++ b/apis/organization/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,13 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *ChildOrganization) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *Settings) Hub() {} diff --git a/apis/organization/v1beta1/zz_generated.deepcopy.go b/apis/organization/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..5762577 --- /dev/null +++ b/apis/organization/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,1344 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *APIKeyInitParameters) DeepCopyInto(out *APIKeyInitParameters) { + *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 *APIKeyObservation) DeepCopyInto(out *APIKeyObservation) { + *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 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 +} + +// 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 *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 *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 *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([]APIKeyObservation, 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 *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 *Settings) DeepCopyInto(out *Settings) { + *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 Settings. +func (in *Settings) DeepCopy() *Settings { + if in == nil { + return nil + } + out := new(Settings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Settings) 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 *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 *SettingsInitParameters_2) DeepCopyInto(out *SettingsInitParameters_2) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.SecurityContacts != nil { + in, out := &in.SecurityContacts, &out.SecurityContacts + *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.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = new(SettingsSettingsInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsInitParameters_2. +func (in *SettingsInitParameters_2) DeepCopy() *SettingsInitParameters_2 { + if in == nil { + return nil + } + out := new(SettingsInitParameters_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 *SettingsList) DeepCopyInto(out *SettingsList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Settings, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsList. +func (in *SettingsList) DeepCopy() *SettingsList { + if in == nil { + return nil + } + out := new(SettingsList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SettingsList) 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 *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 *SettingsObservation_2) DeepCopyInto(out *SettingsObservation_2) { + *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.SecurityContacts != nil { + in, out := &in.SecurityContacts, &out.SecurityContacts + *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.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = new(SettingsSettingsObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsObservation_2. +func (in *SettingsObservation_2) DeepCopy() *SettingsObservation_2 { + if in == nil { + return nil + } + out := new(SettingsObservation_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 *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 *SettingsParameters_2) DeepCopyInto(out *SettingsParameters_2) { + *out = *in + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.SecurityContacts != nil { + in, out := &in.SecurityContacts, &out.SecurityContacts + *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.Settings != nil { + in, out := &in.Settings, &out.Settings + *out = new(SettingsSettingsParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsParameters_2. +func (in *SettingsParameters_2) DeepCopy() *SettingsParameters_2 { + if in == nil { + return nil + } + out := new(SettingsParameters_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 *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 *SettingsSettingsInitParameters) DeepCopyInto(out *SettingsSettingsInitParameters) { + *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 = new(SettingsSAMLInitParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(SettingsSAMLAutocreateUsersDomainsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SAMLIdpInitiatedLogin != nil { + in, out := &in.SAMLIdpInitiatedLogin, &out.SAMLIdpInitiatedLogin + *out = new(SettingsSAMLIdpInitiatedLoginInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SAMLStrictMode != nil { + in, out := &in.SAMLStrictMode, &out.SAMLStrictMode + *out = new(SettingsSAMLStrictModeInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSettingsInitParameters. +func (in *SettingsSettingsInitParameters) DeepCopy() *SettingsSettingsInitParameters { + if in == nil { + return nil + } + out := new(SettingsSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSettingsObservation) DeepCopyInto(out *SettingsSettingsObservation) { + *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 = new(SettingsSAMLObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(SettingsSAMLAutocreateUsersDomainsObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(SettingsSAMLIdpInitiatedLoginObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(SettingsSAMLStrictModeObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSettingsObservation. +func (in *SettingsSettingsObservation) DeepCopy() *SettingsSettingsObservation { + if in == nil { + return nil + } + out := new(SettingsSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSettingsParameters) DeepCopyInto(out *SettingsSettingsParameters) { + *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 = new(SettingsSAMLParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(SettingsSAMLAutocreateUsersDomainsParameters) + (*in).DeepCopyInto(*out) + } + if in.SAMLIdpInitiatedLogin != nil { + in, out := &in.SAMLIdpInitiatedLogin, &out.SAMLIdpInitiatedLogin + *out = new(SettingsSAMLIdpInitiatedLoginParameters) + (*in).DeepCopyInto(*out) + } + if in.SAMLStrictMode != nil { + in, out := &in.SAMLStrictMode, &out.SAMLStrictMode + *out = new(SettingsSAMLStrictModeParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsSettingsParameters. +func (in *SettingsSettingsParameters) DeepCopy() *SettingsSettingsParameters { + if in == nil { + return nil + } + out := new(SettingsSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsSpec) DeepCopyInto(out *SettingsSpec) { + *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 SettingsSpec. +func (in *SettingsSpec) DeepCopy() *SettingsSpec { + if in == nil { + return nil + } + out := new(SettingsSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SettingsStatus) DeepCopyInto(out *SettingsStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SettingsStatus. +func (in *SettingsStatus) DeepCopy() *SettingsStatus { + if in == nil { + return nil + } + out := new(SettingsStatus) + 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) 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 *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 *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 +} diff --git a/apis/organization/v1beta1/zz_generated.managed.go b/apis/organization/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..f7b5234 --- /dev/null +++ b/apis/organization/v1beta1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// 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 Settings. +func (mg *Settings) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Settings. +func (mg *Settings) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Settings. +func (mg *Settings) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Settings. +func (mg *Settings) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Settings. +func (mg *Settings) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Settings. +func (mg *Settings) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Settings. +func (mg *Settings) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Settings. +func (mg *Settings) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Settings. +func (mg *Settings) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Settings. +func (mg *Settings) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Settings. +func (mg *Settings) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Settings. +func (mg *Settings) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/organization/v1beta1/zz_generated.managedlist.go b/apis/organization/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..ee50cea --- /dev/null +++ b/apis/organization/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// 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 SettingsList. +func (l *SettingsList) 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/organization/v1beta1/zz_groupversion_info.go b/apis/organization/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..dd90216 --- /dev/null +++ b/apis/organization/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=organization.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "organization.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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/organization/v1beta1/zz_settings_terraformed.go b/apis/organization/v1beta1/zz_settings_terraformed.go new file mode 100755 index 0000000..a40a0cc --- /dev/null +++ b/apis/organization/v1beta1/zz_settings_terraformed.go @@ -0,0 +1,129 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +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 Settings +func (mg *Settings) GetTerraformResourceType() string { + return "datadog_organization_settings" +} + +// GetConnectionDetailsMapping for this Settings +func (tr *Settings) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Settings +func (tr *Settings) 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 Settings +func (tr *Settings) 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 Settings +func (tr *Settings) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Settings +func (tr *Settings) 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 Settings +func (tr *Settings) 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 Settings +func (tr *Settings) 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 Settings +func (tr *Settings) 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 Settings using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Settings) LateInitialize(attrs []byte) (bool, error) { + params := &SettingsParameters_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 *Settings) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_organizationsettings_types.go b/apis/organization/v1beta1/zz_settings_types.go similarity index 77% rename from apis/datadog/v1alpha1/zz_organizationsettings_types.go rename to apis/organization/v1beta1/zz_settings_types.go index 336fb5c..e1c8817 100755 --- a/apis/datadog/v1alpha1/zz_organizationsettings_types.go +++ b/apis/organization/v1beta1/zz_settings_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,18 +13,22 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type OrganizationSettingsInitParameters struct { +type SettingsInitParameters_2 struct { // (String) Name for Organization. // Name for Organization. Name *string `json:"name,omitempty" tf:"name,omitempty"` + // (List of String) List of emails used for security event notifications from the organization. + // List of emails used for security event notifications from the organization. + SecurityContacts []*string `json:"securityContacts,omitempty" tf:"security_contacts,omitempty"` + // (Block List, Max: 1) Organization settings (see below for nested schema) // Organization settings - Settings []OrganizationSettingsSettingsInitParameters `json:"settings,omitempty" tf:"settings,omitempty"` + Settings *SettingsSettingsInitParameters `json:"settings,omitempty" tf:"settings,omitempty"` } -type OrganizationSettingsObservation struct { +type SettingsObservation_2 struct { // (String) Description of the organization. // Description of the organization. @@ -45,125 +45,31 @@ type OrganizationSettingsObservation struct { // The `public_id` of the organization you are operating within. PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + // (List of String) List of emails used for security event notifications from the organization. + // List of emails used for security event notifications from the organization. + SecurityContacts []*string `json:"securityContacts,omitempty" tf:"security_contacts,omitempty"` + // (Block List, Max: 1) Organization settings (see below for nested schema) // Organization settings - Settings []OrganizationSettingsSettingsObservation `json:"settings,omitempty" tf:"settings,omitempty"` + Settings *SettingsSettingsObservation `json:"settings,omitempty" tf:"settings,omitempty"` } -type OrganizationSettingsParameters struct { +type SettingsParameters_2 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"`. + // (List of String) List of emails used for security event notifications from the organization. + // List of emails used for security event notifications from the organization. // +kubebuilder:validation:Optional - SAMLAutocreateAccessRole *string `json:"samlAutocreateAccessRole,omitempty" tf:"saml_autocreate_access_role,omitempty"` + SecurityContacts []*string `json:"securityContacts,omitempty" tf:"security_contacts,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. + // (Block List, Max: 1) Organization settings (see below for nested schema) + // Organization settings // +kubebuilder:validation:Optional - SAMLStrictMode []SettingsSAMLStrictModeParameters `json:"samlStrictMode" tf:"saml_strict_mode,omitempty"` + Settings *SettingsSettingsParameters `json:"settings,omitempty" tf:"settings,omitempty"` } type SettingsSAMLAutocreateUsersDomainsInitParameters struct { @@ -267,10 +173,113 @@ type SettingsSAMLStrictModeParameters struct { Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` } -// OrganizationSettingsSpec defines the desired state of OrganizationSettings -type OrganizationSettingsSpec struct { +type SettingsSettingsInitParameters 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 SettingsSettingsObservation 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 SettingsSettingsParameters 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"` +} + +// SettingsSpec defines the desired state of Settings +type SettingsSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider OrganizationSettingsParameters `json:"forProvider"` + ForProvider SettingsParameters_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 @@ -281,49 +290,49 @@ type OrganizationSettingsSpec 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 OrganizationSettingsInitParameters `json:"initProvider,omitempty"` + InitProvider SettingsInitParameters_2 `json:"initProvider,omitempty"` } -// OrganizationSettingsStatus defines the observed state of OrganizationSettings. -type OrganizationSettingsStatus struct { +// SettingsStatus defines the observed state of Settings. +type SettingsStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider OrganizationSettingsObservation `json:"atProvider,omitempty"` + AtProvider SettingsObservation_2 `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" +// Settings is the Schema for the Settingss API. Provides a Datadog Organization resource. This can be used to manage your Datadog organization's settings. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type Settings struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec OrganizationSettingsSpec `json:"spec"` - Status OrganizationSettingsStatus `json:"status,omitempty"` + Spec SettingsSpec `json:"spec"` + Status SettingsStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// OrganizationSettingsList contains a list of OrganizationSettingss -type OrganizationSettingsList struct { +// SettingsList contains a list of Settingss +type SettingsList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []OrganizationSettings `json:"items"` + Items []Settings `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) + Settings_Kind = "Settings" + Settings_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Settings_Kind}.String() + Settings_KindAPIVersion = Settings_Kind + "." + CRDGroupVersion.String() + Settings_GroupVersionKind = CRDGroupVersion.WithKind(Settings_Kind) ) func init() { - SchemeBuilder.Register(&OrganizationSettings{}, &OrganizationSettingsList{}) + SchemeBuilder.Register(&Settings{}, &SettingsList{}) } diff --git a/apis/rum/v1beta1/zz_application_terraformed.go b/apis/rum/v1beta1/zz_application_terraformed.go new file mode 100755 index 0000000..e990b01 --- /dev/null +++ b/apis/rum/v1beta1/zz_application_terraformed.go @@ -0,0 +1,129 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +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 Application +func (mg *Application) GetTerraformResourceType() string { + return "datadog_rum_application" +} + +// GetConnectionDetailsMapping for this Application +func (tr *Application) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Application +func (tr *Application) 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 Application +func (tr *Application) 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 Application +func (tr *Application) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Application +func (tr *Application) 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 Application +func (tr *Application) 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 Application +func (tr *Application) 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 Application +func (tr *Application) 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 Application using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Application) LateInitialize(attrs []byte) (bool, error) { + params := &ApplicationParameters{} + 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 *Application) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_rumapplication_types.go b/apis/rum/v1beta1/zz_application_types.go similarity index 70% rename from apis/datadog/v1alpha1/zz_rumapplication_types.go rename to apis/rum/v1beta1/zz_application_types.go index e202f9c..4862ea6 100755 --- a/apis/datadog/v1alpha1/zz_rumapplication_types.go +++ b/apis/rum/v1beta1/zz_application_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type RUMApplicationInitParameters struct { +type ApplicationInitParameters struct { // (String) Name of the RUM application. // Name of the RUM application. @@ -28,7 +24,7 @@ type RUMApplicationInitParameters struct { Type *string `json:"type,omitempty" tf:"type,omitempty"` } -type RUMApplicationObservation struct { +type ApplicationObservation struct { // (String) The client token. // The client token. @@ -46,7 +42,7 @@ type RUMApplicationObservation struct { Type *string `json:"type,omitempty" tf:"type,omitempty"` } -type RUMApplicationParameters struct { +type ApplicationParameters struct { // (String) Name of the RUM application. // Name of the RUM application. @@ -59,10 +55,10 @@ type RUMApplicationParameters struct { Type *string `json:"type,omitempty" tf:"type,omitempty"` } -// RUMApplicationSpec defines the desired state of RUMApplication -type RUMApplicationSpec struct { +// ApplicationSpec defines the desired state of Application +type ApplicationSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider RUMApplicationParameters `json:"forProvider"` + ForProvider ApplicationParameters `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 @@ -73,50 +69,50 @@ type RUMApplicationSpec 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 RUMApplicationInitParameters `json:"initProvider,omitempty"` + InitProvider ApplicationInitParameters `json:"initProvider,omitempty"` } -// RUMApplicationStatus defines the observed state of RUMApplication. -type RUMApplicationStatus struct { +// ApplicationStatus defines the observed state of Application. +type ApplicationStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider RUMApplicationObservation `json:"atProvider,omitempty"` + AtProvider ApplicationObservation `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" +// Application is the Schema for the Applications API. Provides a Datadog RUM application resource. This can be used to create and manage Datadog RUM applications. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type Application 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"` + Spec ApplicationSpec `json:"spec"` + Status ApplicationStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// RUMApplicationList contains a list of RUMApplications -type RUMApplicationList struct { +// ApplicationList contains a list of Applications +type ApplicationList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []RUMApplication `json:"items"` + Items []Application `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) + Application_Kind = "Application" + Application_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Application_Kind}.String() + Application_KindAPIVersion = Application_Kind + "." + CRDGroupVersion.String() + Application_GroupVersionKind = CRDGroupVersion.WithKind(Application_Kind) ) func init() { - SchemeBuilder.Register(&RUMApplication{}, &RUMApplicationList{}) + SchemeBuilder.Register(&Application{}, &ApplicationList{}) } diff --git a/apis/rum/v1beta1/zz_generated.conversion_hubs.go b/apis/rum/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..dc0e7bc --- /dev/null +++ b/apis/rum/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *Application) Hub() {} diff --git a/apis/rum/v1beta1/zz_generated.deepcopy.go b/apis/rum/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..b6546d5 --- /dev/null +++ b/apis/rum/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,192 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *Application) DeepCopyInto(out *Application) { + *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 Application. +func (in *Application) DeepCopy() *Application { + if in == nil { + return nil + } + out := new(Application) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Application) 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 *ApplicationInitParameters) DeepCopyInto(out *ApplicationInitParameters) { + *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 ApplicationInitParameters. +func (in *ApplicationInitParameters) DeepCopy() *ApplicationInitParameters { + if in == nil { + return nil + } + out := new(ApplicationInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationList) DeepCopyInto(out *ApplicationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Application, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationList. +func (in *ApplicationList) DeepCopy() *ApplicationList { + if in == nil { + return nil + } + out := new(ApplicationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ApplicationList) 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 *ApplicationObservation) DeepCopyInto(out *ApplicationObservation) { + *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 ApplicationObservation. +func (in *ApplicationObservation) DeepCopy() *ApplicationObservation { + if in == nil { + return nil + } + out := new(ApplicationObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationParameters) DeepCopyInto(out *ApplicationParameters) { + *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 ApplicationParameters. +func (in *ApplicationParameters) DeepCopy() *ApplicationParameters { + if in == nil { + return nil + } + out := new(ApplicationParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationSpec) DeepCopyInto(out *ApplicationSpec) { + *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 ApplicationSpec. +func (in *ApplicationSpec) DeepCopy() *ApplicationSpec { + if in == nil { + return nil + } + out := new(ApplicationSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ApplicationStatus) DeepCopyInto(out *ApplicationStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplicationStatus. +func (in *ApplicationStatus) DeepCopy() *ApplicationStatus { + if in == nil { + return nil + } + out := new(ApplicationStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/rum/v1beta1/zz_generated.managed.go b/apis/rum/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..17437a2 --- /dev/null +++ b/apis/rum/v1beta1/zz_generated.managed.go @@ -0,0 +1,68 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this Application. +func (mg *Application) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Application. +func (mg *Application) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Application. +func (mg *Application) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Application. +func (mg *Application) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Application. +func (mg *Application) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Application. +func (mg *Application) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Application. +func (mg *Application) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Application. +func (mg *Application) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Application. +func (mg *Application) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Application. +func (mg *Application) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Application. +func (mg *Application) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Application. +func (mg *Application) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/rum/v1beta1/zz_generated.managedlist.go b/apis/rum/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..62eba21 --- /dev/null +++ b/apis/rum/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,17 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ApplicationList. +func (l *ApplicationList) 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/rum/v1beta1/zz_groupversion_info.go b/apis/rum/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..70a9a37 --- /dev/null +++ b/apis/rum/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=rum.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "rum.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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/security/v1beta1/zz_generated.conversion_hubs.go b/apis/security/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..281e832 --- /dev/null +++ b/apis/security/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *IPAllowList) Hub() {} diff --git a/apis/security/v1beta1/zz_generated.deepcopy.go b/apis/security/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..4b715e6 --- /dev/null +++ b/apis/security/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,268 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *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 *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 +} diff --git a/apis/security/v1beta1/zz_generated.managed.go b/apis/security/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..dea3671 --- /dev/null +++ b/apis/security/v1beta1/zz_generated.managed.go @@ -0,0 +1,68 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// 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 +} diff --git a/apis/security/v1beta1/zz_generated.managedlist.go b/apis/security/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..91d0e6b --- /dev/null +++ b/apis/security/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,17 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// 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 +} diff --git a/apis/security/v1beta1/zz_groupversion_info.go b/apis/security/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..280d70f --- /dev/null +++ b/apis/security/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=security.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "security.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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/security/v1beta1/zz_ipallowlist_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_ipallowlist_terraformed.go rename to apis/security/v1beta1/zz_ipallowlist_terraformed.go index b5a4a3b..2fdeb76 100755 --- a/apis/datadog/v1alpha1/zz_ipallowlist_terraformed.go +++ b/apis/security/v1beta1/zz_ipallowlist_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_ipallowlist_types.go b/apis/security/v1beta1/zz_ipallowlist_types.go similarity index 76% rename from apis/datadog/v1alpha1/zz_ipallowlist_types.go rename to apis/security/v1beta1/zz_ipallowlist_types.go index beabee2..f61f0d5 100755 --- a/apis/datadog/v1alpha1/zz_ipallowlist_types.go +++ b/apis/security/v1beta1/zz_ipallowlist_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,28 +15,34 @@ import ( type EntryInitParameters struct { - // IP address or range of addresses. + // (String) IP address or range of addresses. String must be a valid CIDR block or IP address. + // IP address or range of addresses. String must be a valid CIDR block or IP address. CidrBlock *string `json:"cidrBlock,omitempty" tf:"cidr_block,omitempty"` + // (String) Note accompanying IP address. // Note accompanying IP address. Note *string `json:"note,omitempty" tf:"note,omitempty"` } type EntryObservation struct { - // IP address or range of addresses. + // (String) IP address or range of addresses. String must be a valid CIDR block or IP address. + // IP address or range of addresses. String must be a valid CIDR block or IP address. CidrBlock *string `json:"cidrBlock,omitempty" tf:"cidr_block,omitempty"` + // (String) Note accompanying IP address. // Note accompanying IP address. Note *string `json:"note,omitempty" tf:"note,omitempty"` } type EntryParameters struct { - // IP address or range of addresses. + // (String) IP address or range of addresses. String must be a valid CIDR block or IP address. + // IP address or range of addresses. String must be a valid CIDR block or IP address. // +kubebuilder:validation:Optional CidrBlock *string `json:"cidrBlock" tf:"cidr_block,omitempty"` + // (String) Note accompanying IP address. // Note accompanying IP address. // +kubebuilder:validation:Optional Note *string `json:"note,omitempty" tf:"note,omitempty"` @@ -48,30 +50,37 @@ type EntryParameters struct { type IPAllowListInitParameters struct { + // (Boolean) Whether the IP Allowlist is enabled. // Whether the IP Allowlist is enabled. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (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) // 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 { + // (Boolean) Whether the IP Allowlist is enabled. // Whether the IP Allowlist is enabled. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (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) // 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"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` } type IPAllowListParameters struct { + // (Boolean) Whether the IP Allowlist is enabled. // Whether the IP Allowlist is enabled. // +kubebuilder:validation:Optional Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` + // (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) // 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"` @@ -104,9 +113,9 @@ type IPAllowListStatus struct { // +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" +// IPAllowList is the Schema for the IPAllowLists API. Provides the Datadog IP allowlist resource. This can be used to manage the Datadog IP allowlist // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/securitymonitoring/v1alpha1/zz_defaultrule_terraformed.go b/apis/securitymonitoring/v1beta1/zz_defaultrule_terraformed.go similarity index 96% rename from apis/securitymonitoring/v1alpha1/zz_defaultrule_terraformed.go rename to apis/securitymonitoring/v1beta1/zz_defaultrule_terraformed.go index ea4d473..c3b808e 100755 --- a/apis/securitymonitoring/v1alpha1/zz_defaultrule_terraformed.go +++ b/apis/securitymonitoring/v1beta1/zz_defaultrule_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/securitymonitoring/v1alpha1/zz_defaultrule_types.go b/apis/securitymonitoring/v1beta1/zz_defaultrule_types.go similarity index 93% rename from apis/securitymonitoring/v1alpha1/zz_defaultrule_types.go rename to apis/securitymonitoring/v1beta1/zz_defaultrule_types.go index 7c03fe1..fb16ea9 100755 --- a/apis/securitymonitoring/v1alpha1/zz_defaultrule_types.go +++ b/apis/securitymonitoring/v1beta1/zz_defaultrule_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -58,6 +54,11 @@ type DefaultRuleInitParameters struct { // Cases of the rule, this is used to update notifications. Case []CaseInitParameters `json:"case,omitempty" tf:"case,omitempty"` + // (Set of String) Custom tags for generated signals. + // Custom tags for generated signals. + // +listType=set + CustomTags []*string `json:"customTags,omitempty" tf:"custom_tags,omitempty"` + // (Boolean) Enable the rule. Defaults to true. // Enable the rule. Defaults to `true`. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` @@ -68,7 +69,7 @@ type DefaultRuleInitParameters struct { // (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"` + Options *OptionsInitParameters `json:"options,omitempty" tf:"options,omitempty"` } type DefaultRuleObservation struct { @@ -77,6 +78,11 @@ type DefaultRuleObservation struct { // Cases of the rule, this is used to update notifications. Case []CaseObservation `json:"case,omitempty" tf:"case,omitempty"` + // (Set of String) Custom tags for generated signals. + // Custom tags for generated signals. + // +listType=set + CustomTags []*string `json:"customTags,omitempty" tf:"custom_tags,omitempty"` + // (Boolean) Enable the rule. Defaults to true. // Enable the rule. Defaults to `true`. Enabled *bool `json:"enabled,omitempty" tf:"enabled,omitempty"` @@ -90,7 +96,7 @@ type DefaultRuleObservation struct { // (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"` + Options *OptionsObservation `json:"options,omitempty" tf:"options,omitempty"` // (String) The rule type. // The rule type. @@ -104,6 +110,12 @@ type DefaultRuleParameters struct { // +kubebuilder:validation:Optional Case []CaseParameters `json:"case,omitempty" tf:"case,omitempty"` + // (Set of String) Custom tags for generated signals. + // Custom tags for generated signals. + // +kubebuilder:validation:Optional + // +listType=set + CustomTags []*string `json:"customTags,omitempty" tf:"custom_tags,omitempty"` + // (Boolean) Enable the rule. Defaults to true. // Enable the rule. Defaults to `true`. // +kubebuilder:validation:Optional @@ -117,7 +129,7 @@ type DefaultRuleParameters struct { // (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"` + Options *OptionsParameters `json:"options,omitempty" tf:"options,omitempty"` } type FilterInitParameters struct { @@ -205,8 +217,8 @@ type DefaultRuleStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/securitymonitoring/v1alpha1/zz_filter_terraformed.go b/apis/securitymonitoring/v1beta1/zz_filter_terraformed.go similarity index 96% rename from apis/securitymonitoring/v1alpha1/zz_filter_terraformed.go rename to apis/securitymonitoring/v1beta1/zz_filter_terraformed.go index d7828bb..3fda22f 100755 --- a/apis/securitymonitoring/v1alpha1/zz_filter_terraformed.go +++ b/apis/securitymonitoring/v1beta1/zz_filter_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/securitymonitoring/v1alpha1/zz_filter_types.go b/apis/securitymonitoring/v1beta1/zz_filter_types.go similarity index 98% rename from apis/securitymonitoring/v1alpha1/zz_filter_types.go rename to apis/securitymonitoring/v1beta1/zz_filter_types.go index 0c616a1..9d65fae 100755 --- a/apis/securitymonitoring/v1alpha1/zz_filter_types.go +++ b/apis/securitymonitoring/v1beta1/zz_filter_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -161,8 +157,8 @@ type FilterStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.conversion_hubs.go b/apis/securitymonitoring/v1beta1/zz_generated.conversion_hubs.go similarity index 68% rename from apis/securitymonitoring/v1alpha1/zz_generated.conversion_hubs.go rename to apis/securitymonitoring/v1beta1/zz_generated.conversion_hubs.go index 71223ed..c979b38 100755 --- a/apis/securitymonitoring/v1alpha1/zz_generated.conversion_hubs.go +++ b/apis/securitymonitoring/v1beta1/zz_generated.conversion_hubs.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 // Hub marks this type as a conversion hub. func (tr *DefaultRule) Hub() {} diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.deepcopy.go b/apis/securitymonitoring/v1beta1/zz_generated.deepcopy.go similarity index 85% rename from apis/securitymonitoring/v1alpha1/zz_generated.deepcopy.go rename to apis/securitymonitoring/v1beta1/zz_generated.deepcopy.go index e190fdb..18fed95 100644 --- a/apis/securitymonitoring/v1alpha1/zz_generated.deepcopy.go +++ b/apis/securitymonitoring/v1beta1/zz_generated.deepcopy.go @@ -6,12 +6,147 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 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 *ActionInitParameters) DeepCopyInto(out *ActionInitParameters) { + *out = *in + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(ActionOptionsInitParameters) + (*in).DeepCopyInto(*out) + } + 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 ActionInitParameters. +func (in *ActionInitParameters) DeepCopy() *ActionInitParameters { + if in == nil { + return nil + } + out := new(ActionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionObservation) DeepCopyInto(out *ActionObservation) { + *out = *in + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(ActionOptionsObservation) + (*in).DeepCopyInto(*out) + } + 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 ActionObservation. +func (in *ActionObservation) DeepCopy() *ActionObservation { + if in == nil { + return nil + } + out := new(ActionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionOptionsInitParameters) DeepCopyInto(out *ActionOptionsInitParameters) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionOptionsInitParameters. +func (in *ActionOptionsInitParameters) DeepCopy() *ActionOptionsInitParameters { + if in == nil { + return nil + } + out := new(ActionOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionOptionsObservation) DeepCopyInto(out *ActionOptionsObservation) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionOptionsObservation. +func (in *ActionOptionsObservation) DeepCopy() *ActionOptionsObservation { + if in == nil { + return nil + } + out := new(ActionOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionOptionsParameters) DeepCopyInto(out *ActionOptionsParameters) { + *out = *in + if in.Duration != nil { + in, out := &in.Duration, &out.Duration + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ActionOptionsParameters. +func (in *ActionOptionsParameters) DeepCopy() *ActionOptionsParameters { + if in == nil { + return nil + } + out := new(ActionOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ActionParameters) DeepCopyInto(out *ActionParameters) { + *out = *in + if in.Options != nil { + in, out := &in.Options, &out.Options + *out = new(ActionOptionsParameters) + (*in).DeepCopyInto(*out) + } + 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 ActionParameters. +func (in *ActionParameters) DeepCopy() *ActionParameters { + if in == nil { + return nil + } + out := new(ActionParameters) + in.DeepCopyInto(out) + return out +} + // 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 @@ -217,6 +352,17 @@ func (in *DefaultRuleInitParameters) DeepCopyInto(out *DefaultRuleInitParameters (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.CustomTags != nil { + in, out := &in.CustomTags, &out.CustomTags + *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) @@ -231,10 +377,8 @@ func (in *DefaultRuleInitParameters) DeepCopyInto(out *DefaultRuleInitParameters } if in.Options != nil { in, out := &in.Options, &out.Options - *out = make([]OptionsInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(OptionsInitParameters) + (*in).DeepCopyInto(*out) } } @@ -290,6 +434,17 @@ func (in *DefaultRuleObservation) DeepCopyInto(out *DefaultRuleObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.CustomTags != nil { + in, out := &in.CustomTags, &out.CustomTags + *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) @@ -309,10 +464,8 @@ func (in *DefaultRuleObservation) DeepCopyInto(out *DefaultRuleObservation) { } if in.Options != nil { in, out := &in.Options, &out.Options - *out = make([]OptionsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(OptionsObservation) + (*in).DeepCopyInto(*out) } if in.Type != nil { in, out := &in.Type, &out.Type @@ -341,6 +494,17 @@ func (in *DefaultRuleParameters) DeepCopyInto(out *DefaultRuleParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.CustomTags != nil { + in, out := &in.CustomTags, &out.CustomTags + *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) @@ -355,10 +519,8 @@ func (in *DefaultRuleParameters) DeepCopyInto(out *DefaultRuleParameters) { } if in.Options != nil { in, out := &in.Options, &out.Options - *out = make([]OptionsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(OptionsParameters) + (*in).DeepCopyInto(*out) } } @@ -1027,6 +1189,11 @@ func (in *QueryInitParameters) DeepCopyInto(out *QueryInitParameters) { *out = new(string) **out = **in } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } if in.DistinctFields != nil { in, out := &in.DistinctFields, &out.DistinctFields *out = make([]*string, len(*in)) @@ -1102,6 +1269,11 @@ func (in *QueryObservation) DeepCopyInto(out *QueryObservation) { *out = new(string) **out = **in } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } if in.DistinctFields != nil { in, out := &in.DistinctFields, &out.DistinctFields *out = make([]*string, len(*in)) @@ -1177,6 +1349,11 @@ func (in *QueryParameters) DeepCopyInto(out *QueryParameters) { *out = new(string) **out = **in } + if in.DataSource != nil { + in, out := &in.DataSource, &out.DataSource + *out = new(string) + **out = **in + } if in.DistinctFields != nil { in, out := &in.DistinctFields, &out.DistinctFields *out = make([]*string, len(*in)) @@ -1237,6 +1414,126 @@ func (in *QueryParameters) DeepCopy() *QueryParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReferenceTablesInitParameters) DeepCopyInto(out *ReferenceTablesInitParameters) { + *out = *in + if in.CheckPresence != nil { + in, out := &in.CheckPresence, &out.CheckPresence + *out = new(bool) + **out = **in + } + if in.ColumnName != nil { + in, out := &in.ColumnName, &out.ColumnName + *out = new(string) + **out = **in + } + if in.LogFieldPath != nil { + in, out := &in.LogFieldPath, &out.LogFieldPath + *out = new(string) + **out = **in + } + if in.RuleQueryName != nil { + in, out := &in.RuleQueryName, &out.RuleQueryName + *out = new(string) + **out = **in + } + if in.TableName != nil { + in, out := &in.TableName, &out.TableName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceTablesInitParameters. +func (in *ReferenceTablesInitParameters) DeepCopy() *ReferenceTablesInitParameters { + if in == nil { + return nil + } + out := new(ReferenceTablesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReferenceTablesObservation) DeepCopyInto(out *ReferenceTablesObservation) { + *out = *in + if in.CheckPresence != nil { + in, out := &in.CheckPresence, &out.CheckPresence + *out = new(bool) + **out = **in + } + if in.ColumnName != nil { + in, out := &in.ColumnName, &out.ColumnName + *out = new(string) + **out = **in + } + if in.LogFieldPath != nil { + in, out := &in.LogFieldPath, &out.LogFieldPath + *out = new(string) + **out = **in + } + if in.RuleQueryName != nil { + in, out := &in.RuleQueryName, &out.RuleQueryName + *out = new(string) + **out = **in + } + if in.TableName != nil { + in, out := &in.TableName, &out.TableName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceTablesObservation. +func (in *ReferenceTablesObservation) DeepCopy() *ReferenceTablesObservation { + if in == nil { + return nil + } + out := new(ReferenceTablesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReferenceTablesParameters) DeepCopyInto(out *ReferenceTablesParameters) { + *out = *in + if in.CheckPresence != nil { + in, out := &in.CheckPresence, &out.CheckPresence + *out = new(bool) + **out = **in + } + if in.ColumnName != nil { + in, out := &in.ColumnName, &out.ColumnName + *out = new(string) + **out = **in + } + if in.LogFieldPath != nil { + in, out := &in.LogFieldPath, &out.LogFieldPath + *out = new(string) + **out = **in + } + if in.RuleQueryName != nil { + in, out := &in.RuleQueryName, &out.RuleQueryName + *out = new(string) + **out = **in + } + if in.TableName != nil { + in, out := &in.TableName, &out.TableName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReferenceTablesParameters. +func (in *ReferenceTablesParameters) DeepCopy() *ReferenceTablesParameters { + if in == nil { + return nil + } + out := new(ReferenceTablesParameters) + 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 @@ -1360,6 +1657,13 @@ func (in *Rule) DeepCopyObject() runtime.Object { // 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.Action != nil { + in, out := &in.Action, &out.Action + *out = make([]ActionInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Condition != nil { in, out := &in.Condition, &out.Condition *out = new(string) @@ -1401,6 +1705,13 @@ func (in *RuleCaseInitParameters) DeepCopy() *RuleCaseInitParameters { // 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.Action != nil { + in, out := &in.Action, &out.Action + *out = make([]ActionObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Condition != nil { in, out := &in.Condition, &out.Condition *out = new(string) @@ -1442,6 +1753,13 @@ func (in *RuleCaseObservation) DeepCopy() *RuleCaseObservation { // 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.Action != nil { + in, out := &in.Action, &out.Action + *out = make([]ActionParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Condition != nil { in, out := &in.Condition, &out.Condition *out = new(string) @@ -1577,6 +1895,17 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.GroupSignalsBy != nil { + in, out := &in.GroupSignalsBy, &out.GroupSignalsBy + *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.HasExtendedTitle != nil { in, out := &in.HasExtendedTitle, &out.HasExtendedTitle *out = new(bool) @@ -1594,10 +1923,8 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { } if in.Options != nil { in, out := &in.Options, &out.Options - *out = make([]RuleOptionsInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RuleOptionsInitParameters) + (*in).DeepCopyInto(*out) } if in.Query != nil { in, out := &in.Query, &out.Query @@ -1606,6 +1933,13 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ReferenceTables != nil { + in, out := &in.ReferenceTables, &out.ReferenceTables + *out = make([]ReferenceTablesInitParameters, 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)) @@ -1636,6 +1970,11 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { *out = new(string) **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 RuleInitParameters. @@ -1702,6 +2041,17 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.GroupSignalsBy != nil { + in, out := &in.GroupSignalsBy, &out.GroupSignalsBy + *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.HasExtendedTitle != nil { in, out := &in.HasExtendedTitle, &out.HasExtendedTitle *out = new(bool) @@ -1724,10 +2074,8 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { } if in.Options != nil { in, out := &in.Options, &out.Options - *out = make([]RuleOptionsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RuleOptionsObservation) + (*in).DeepCopyInto(*out) } if in.Query != nil { in, out := &in.Query, &out.Query @@ -1736,6 +2084,13 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ReferenceTables != nil { + in, out := &in.ReferenceTables, &out.ReferenceTables + *out = make([]ReferenceTablesObservation, 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)) @@ -1766,6 +2121,11 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { *out = new(string) **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 RuleObservation. @@ -1798,10 +2158,8 @@ func (in *RuleOptionsInitParameters) DeepCopyInto(out *RuleOptionsInitParameters } if in.ImpossibleTravelOptions != nil { in, out := &in.ImpossibleTravelOptions, &out.ImpossibleTravelOptions - *out = make([]ImpossibleTravelOptionsInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ImpossibleTravelOptionsInitParameters) + (*in).DeepCopyInto(*out) } if in.KeepAlive != nil { in, out := &in.KeepAlive, &out.KeepAlive @@ -1815,17 +2173,13 @@ func (in *RuleOptionsInitParameters) DeepCopyInto(out *RuleOptionsInitParameters } if in.NewValueOptions != nil { in, out := &in.NewValueOptions, &out.NewValueOptions - *out = make([]NewValueOptionsInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(NewValueOptionsInitParameters) + (*in).DeepCopyInto(*out) } if in.ThirdPartyRuleOptions != nil { in, out := &in.ThirdPartyRuleOptions, &out.ThirdPartyRuleOptions - *out = make([]ThirdPartyRuleOptionsInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ThirdPartyRuleOptionsInitParameters) + (*in).DeepCopyInto(*out) } } @@ -1859,10 +2213,8 @@ func (in *RuleOptionsObservation) DeepCopyInto(out *RuleOptionsObservation) { } if in.ImpossibleTravelOptions != nil { in, out := &in.ImpossibleTravelOptions, &out.ImpossibleTravelOptions - *out = make([]ImpossibleTravelOptionsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ImpossibleTravelOptionsObservation) + (*in).DeepCopyInto(*out) } if in.KeepAlive != nil { in, out := &in.KeepAlive, &out.KeepAlive @@ -1876,17 +2228,13 @@ func (in *RuleOptionsObservation) DeepCopyInto(out *RuleOptionsObservation) { } if in.NewValueOptions != nil { in, out := &in.NewValueOptions, &out.NewValueOptions - *out = make([]NewValueOptionsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(NewValueOptionsObservation) + (*in).DeepCopyInto(*out) } if in.ThirdPartyRuleOptions != nil { in, out := &in.ThirdPartyRuleOptions, &out.ThirdPartyRuleOptions - *out = make([]ThirdPartyRuleOptionsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ThirdPartyRuleOptionsObservation) + (*in).DeepCopyInto(*out) } } @@ -1920,10 +2268,8 @@ func (in *RuleOptionsParameters) DeepCopyInto(out *RuleOptionsParameters) { } if in.ImpossibleTravelOptions != nil { in, out := &in.ImpossibleTravelOptions, &out.ImpossibleTravelOptions - *out = make([]ImpossibleTravelOptionsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ImpossibleTravelOptionsParameters) + (*in).DeepCopyInto(*out) } if in.KeepAlive != nil { in, out := &in.KeepAlive, &out.KeepAlive @@ -1937,17 +2283,13 @@ func (in *RuleOptionsParameters) DeepCopyInto(out *RuleOptionsParameters) { } if in.NewValueOptions != nil { in, out := &in.NewValueOptions, &out.NewValueOptions - *out = make([]NewValueOptionsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(NewValueOptionsParameters) + (*in).DeepCopyInto(*out) } if in.ThirdPartyRuleOptions != nil { in, out := &in.ThirdPartyRuleOptions, &out.ThirdPartyRuleOptions - *out = make([]ThirdPartyRuleOptionsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ThirdPartyRuleOptionsParameters) + (*in).DeepCopyInto(*out) } } @@ -1983,6 +2325,17 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.GroupSignalsBy != nil { + in, out := &in.GroupSignalsBy, &out.GroupSignalsBy + *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.HasExtendedTitle != nil { in, out := &in.HasExtendedTitle, &out.HasExtendedTitle *out = new(bool) @@ -2000,10 +2353,8 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { } if in.Options != nil { in, out := &in.Options, &out.Options - *out = make([]RuleOptionsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RuleOptionsParameters) + (*in).DeepCopyInto(*out) } if in.Query != nil { in, out := &in.Query, &out.Query @@ -2012,6 +2363,13 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ReferenceTables != nil { + in, out := &in.ReferenceTables, &out.ReferenceTables + *out = make([]ReferenceTablesParameters, 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)) @@ -2042,6 +2400,11 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { *out = new(string) **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 RuleParameters. diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.managed.go b/apis/securitymonitoring/v1beta1/zz_generated.managed.go similarity index 99% rename from apis/securitymonitoring/v1alpha1/zz_generated.managed.go rename to apis/securitymonitoring/v1beta1/zz_generated.managed.go index ab90d23..5886de0 100644 --- a/apis/securitymonitoring/v1alpha1/zz_generated.managed.go +++ b/apis/securitymonitoring/v1beta1/zz_generated.managed.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" diff --git a/apis/securitymonitoring/v1alpha1/zz_generated.managedlist.go b/apis/securitymonitoring/v1beta1/zz_generated.managedlist.go similarity index 97% rename from apis/securitymonitoring/v1alpha1/zz_generated.managedlist.go rename to apis/securitymonitoring/v1beta1/zz_generated.managedlist.go index 6771889..e041ea8 100644 --- a/apis/securitymonitoring/v1alpha1/zz_generated.managedlist.go +++ b/apis/securitymonitoring/v1beta1/zz_generated.managedlist.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" diff --git a/apis/securitymonitoring/v1alpha1/zz_groupversion_info.go b/apis/securitymonitoring/v1beta1/zz_groupversion_info.go similarity index 80% rename from apis/securitymonitoring/v1alpha1/zz_groupversion_info.go rename to apis/securitymonitoring/v1beta1/zz_groupversion_info.go index bf8e2a3..fb19ef4 100755 --- a/apis/securitymonitoring/v1alpha1/zz_groupversion_info.go +++ b/apis/securitymonitoring/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=securitymonitoring.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "securitymonitoring.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/securitymonitoring/v1alpha1/zz_rule_terraformed.go b/apis/securitymonitoring/v1beta1/zz_rule_terraformed.go similarity index 96% rename from apis/securitymonitoring/v1alpha1/zz_rule_terraformed.go rename to apis/securitymonitoring/v1beta1/zz_rule_terraformed.go index f939eb4..15c2ddc 100755 --- a/apis/securitymonitoring/v1alpha1/zz_rule_terraformed.go +++ b/apis/securitymonitoring/v1beta1/zz_rule_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/securitymonitoring/v1alpha1/zz_rule_types.go b/apis/securitymonitoring/v1beta1/zz_rule_types.go similarity index 80% rename from apis/securitymonitoring/v1alpha1/zz_rule_types.go rename to apis/securitymonitoring/v1beta1/zz_rule_types.go index aa45ba3..4365ea6 100755 --- a/apis/securitymonitoring/v1alpha1/zz_rule_types.go +++ b/apis/securitymonitoring/v1beta1/zz_rule_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,6 +13,63 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) +type ActionInitParameters struct { + + // (Block List, Max: 1) Options on rules. (see below for nested schema) + // Options for the action. + Options *ActionOptionsInitParameters `json:"options,omitempty" tf:"options,omitempty"` + + // (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + // Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ActionObservation struct { + + // (Block List, Max: 1) Options on rules. (see below for nested schema) + // Options for the action. + Options *ActionOptionsObservation `json:"options,omitempty" tf:"options,omitempty"` + + // (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + // Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type ActionOptionsInitParameters struct { + + // (Number) Duration of the action in seconds. + // Duration of the action in seconds. + Duration *float64 `json:"duration,omitempty" tf:"duration,omitempty"` +} + +type ActionOptionsObservation struct { + + // (Number) Duration of the action in seconds. + // Duration of the action in seconds. + Duration *float64 `json:"duration,omitempty" tf:"duration,omitempty"` +} + +type ActionOptionsParameters struct { + + // (Number) Duration of the action in seconds. + // Duration of the action in seconds. + // +kubebuilder:validation:Optional + Duration *float64 `json:"duration,omitempty" tf:"duration,omitempty"` +} + +type ActionParameters struct { + + // (Block List, Max: 1) Options on rules. (see below for nested schema) + // Options for the action. + // +kubebuilder:validation:Optional + Options *ActionOptionsParameters `json:"options,omitempty" tf:"options,omitempty"` + + // (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + // Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + type AgentRuleInitParameters struct { // (String) Deprecated. It won't be applied anymore. @@ -145,6 +198,10 @@ type QueryInitParameters struct { // 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"` + // (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". + // Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `"logs"`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,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"` @@ -180,6 +237,10 @@ type QueryObservation struct { // 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"` + // (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". + // Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `"logs"`. + DataSource *string `json:"dataSource,omitempty" tf:"data_source,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"` @@ -217,6 +278,11 @@ type QueryParameters struct { // +kubebuilder:validation:Optional Aggregation *string `json:"aggregation,omitempty" tf:"aggregation,omitempty"` + // (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". + // Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `"logs"`. + // +kubebuilder:validation:Optional + DataSource *string `json:"dataSource,omitempty" tf:"data_source,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 @@ -248,6 +314,80 @@ type QueryParameters struct { Query *string `json:"query" tf:"query,omitempty"` } +type ReferenceTablesInitParameters struct { + + // (Boolean) Whether to include or exclude logs that match the reference table. + // Whether to include or exclude logs that match the reference table. + CheckPresence *bool `json:"checkPresence,omitempty" tf:"check_presence,omitempty"` + + // (String) The name of the column in the reference table. + // The name of the column in the reference table. + ColumnName *string `json:"columnName,omitempty" tf:"column_name,omitempty"` + + // (String) The field in the log that should be matched against the reference table. + // The field in the log that should be matched against the reference table. + LogFieldPath *string `json:"logFieldPath,omitempty" tf:"log_field_path,omitempty"` + + // (String) The name of the query to filter. + // The name of the query to filter. + RuleQueryName *string `json:"ruleQueryName,omitempty" tf:"rule_query_name,omitempty"` + + // (String) The name of the reference table. + // The name of the reference table. + TableName *string `json:"tableName,omitempty" tf:"table_name,omitempty"` +} + +type ReferenceTablesObservation struct { + + // (Boolean) Whether to include or exclude logs that match the reference table. + // Whether to include or exclude logs that match the reference table. + CheckPresence *bool `json:"checkPresence,omitempty" tf:"check_presence,omitempty"` + + // (String) The name of the column in the reference table. + // The name of the column in the reference table. + ColumnName *string `json:"columnName,omitempty" tf:"column_name,omitempty"` + + // (String) The field in the log that should be matched against the reference table. + // The field in the log that should be matched against the reference table. + LogFieldPath *string `json:"logFieldPath,omitempty" tf:"log_field_path,omitempty"` + + // (String) The name of the query to filter. + // The name of the query to filter. + RuleQueryName *string `json:"ruleQueryName,omitempty" tf:"rule_query_name,omitempty"` + + // (String) The name of the reference table. + // The name of the reference table. + TableName *string `json:"tableName,omitempty" tf:"table_name,omitempty"` +} + +type ReferenceTablesParameters struct { + + // (Boolean) Whether to include or exclude logs that match the reference table. + // Whether to include or exclude logs that match the reference table. + // +kubebuilder:validation:Optional + CheckPresence *bool `json:"checkPresence" tf:"check_presence,omitempty"` + + // (String) The name of the column in the reference table. + // The name of the column in the reference table. + // +kubebuilder:validation:Optional + ColumnName *string `json:"columnName" tf:"column_name,omitempty"` + + // (String) The field in the log that should be matched against the reference table. + // The field in the log that should be matched against the reference table. + // +kubebuilder:validation:Optional + LogFieldPath *string `json:"logFieldPath" tf:"log_field_path,omitempty"` + + // (String) The name of the query to filter. + // The name of the query to filter. + // +kubebuilder:validation:Optional + RuleQueryName *string `json:"ruleQueryName" tf:"rule_query_name,omitempty"` + + // (String) The name of the reference table. + // The name of the reference table. + // +kubebuilder:validation:Optional + TableName *string `json:"tableName" tf:"table_name,omitempty"` +} + type RootQueryInitParameters struct { // (List of String) Fields to group by. If empty, each log triggers a signal. @@ -285,6 +425,10 @@ type RootQueryParameters struct { type RuleCaseInitParameters struct { + // (Block List) Action to perform when the case trigger (see below for nested schema) + // Action to perform when the case trigger + Action []ActionInitParameters `json:"action,omitempty" tf:"action,omitempty"` + // (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"` @@ -304,6 +448,10 @@ type RuleCaseInitParameters struct { type RuleCaseObservation struct { + // (Block List) Action to perform when the case trigger (see below for nested schema) + // Action to perform when the case trigger + Action []ActionObservation `json:"action,omitempty" tf:"action,omitempty"` + // (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"` @@ -323,6 +471,11 @@ type RuleCaseObservation struct { type RuleCaseParameters struct { + // (Block List) Action to perform when the case trigger (see below for nested schema) + // Action to perform when the case trigger + // +kubebuilder:validation:Optional + Action []ActionParameters `json:"action,omitempty" tf:"action,omitempty"` + // (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 @@ -346,7 +499,7 @@ type RuleCaseParameters struct { type RuleFilterInitParameters struct { - // (String) The type of filtering action. Valid values are require, suppress. + // (Block List) Action to perform when the case trigger (see below for nested schema) // The type of filtering action. Valid values are `require`, `suppress`. Action *string `json:"action,omitempty" tf:"action,omitempty"` @@ -357,7 +510,7 @@ type RuleFilterInitParameters struct { type RuleFilterObservation struct { - // (String) The type of filtering action. Valid values are require, suppress. + // (Block List) Action to perform when the case trigger (see below for nested schema) // The type of filtering action. Valid values are `require`, `suppress`. Action *string `json:"action,omitempty" tf:"action,omitempty"` @@ -368,7 +521,7 @@ type RuleFilterObservation struct { type RuleFilterParameters struct { - // (String) The type of filtering action. Valid values are require, suppress. + // (Block List) Action to perform when the case trigger (see below for nested schema) // The type of filtering action. Valid values are `require`, `suppress`. // +kubebuilder:validation:Optional Action *string `json:"action" tf:"action,omitempty"` @@ -389,10 +542,14 @@ type RuleInitParameters struct { // 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. + // (Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (see below for nested schema) + // Additional queries to filter matched events before they are processed. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules. Filter []RuleFilterInitParameters `json:"filter,omitempty" tf:"filter,omitempty"` + // (List of String) Additional grouping to perform on top of the query grouping. + // Additional grouping to perform on top of the query grouping. + GroupSignalsBy []*string `json:"groupSignalsBy,omitempty" tf:"group_signals_by,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"` @@ -407,18 +564,22 @@ type RuleInitParameters struct { // (Block List, Max: 1) Options on rules. (see below for nested schema) // Options on rules. - Options []RuleOptionsInitParameters `json:"options,omitempty" tf:"options,omitempty"` + 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) Reference tables for filtering query results. (see below for nested schema) + // Reference tables for filtering query results. + ReferenceTables []ReferenceTablesInitParameters `json:"referenceTables,omitempty" tf:"reference_tables,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. + // (Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. + // Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. // +listType=set Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` @@ -429,6 +590,10 @@ type RuleInitParameters struct { // (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"` + + // (Boolean) Whether or not to validate the Rule. + // Whether or not to validate the Rule. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` } type RuleObservation struct { @@ -441,10 +606,14 @@ type RuleObservation struct { // 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. + // (Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (see below for nested schema) + // Additional queries to filter matched events before they are processed. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules. Filter []RuleFilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` + // (List of String) Additional grouping to perform on top of the query grouping. + // Additional grouping to perform on top of the query grouping. + GroupSignalsBy []*string `json:"groupSignalsBy,omitempty" tf:"group_signals_by,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"` @@ -462,18 +631,22 @@ type RuleObservation struct { // (Block List, Max: 1) Options on rules. (see below for nested schema) // Options on rules. - Options []RuleOptionsObservation `json:"options,omitempty" tf:"options,omitempty"` + 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) Reference tables for filtering query results. (see below for nested schema) + // Reference tables for filtering query results. + ReferenceTables []ReferenceTablesObservation `json:"referenceTables,omitempty" tf:"reference_tables,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. + // (Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. + // Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. // +listType=set Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` @@ -484,6 +657,10 @@ type RuleObservation struct { // (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"` + + // (Boolean) Whether or not to validate the Rule. + // Whether or not to validate the Rule. + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` } type RuleOptionsInitParameters struct { @@ -492,20 +669,20 @@ type RuleOptionsInitParameters struct { // 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"`. + // (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party, anomaly_threshold. Defaults to "threshold". + // The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`, `anomaly_threshold`. 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`. + // (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, 10800, 21600, 43200, 86400. + // 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`, `10800`, `21600`, `43200`, `86400`. 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"` + 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`. + // (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, 43200, 86400. + // 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`, `43200`, `86400`. 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. @@ -514,11 +691,11 @@ type RuleOptionsInitParameters struct { // (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"` + 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"` + ThirdPartyRuleOptions *ThirdPartyRuleOptionsInitParameters `json:"thirdPartyRuleOptions,omitempty" tf:"third_party_rule_options,omitempty"` } type RuleOptionsObservation struct { @@ -527,20 +704,20 @@ type RuleOptionsObservation struct { // 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"`. + // (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party, anomaly_threshold. Defaults to "threshold". + // The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`, `anomaly_threshold`. 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`. + // (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, 10800, 21600, 43200, 86400. + // 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`, `10800`, `21600`, `43200`, `86400`. 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"` + 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`. + // (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, 43200, 86400. + // 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`, `43200`, `86400`. 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. @@ -549,11 +726,11 @@ type RuleOptionsObservation struct { // (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"` + 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"` + ThirdPartyRuleOptions *ThirdPartyRuleOptionsObservation `json:"thirdPartyRuleOptions,omitempty" tf:"third_party_rule_options,omitempty"` } type RuleOptionsParameters struct { @@ -563,23 +740,23 @@ type RuleOptionsParameters struct { // +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"`. + // (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party, anomaly_threshold. Defaults to "threshold". + // The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`, `anomaly_threshold`. 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`. + // (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, 10800, 21600, 43200, 86400. + // 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`, `10800`, `21600`, `43200`, `86400`. // +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"` + 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`. + // (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, 43200, 86400. + // 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`, `43200`, `86400`. // +kubebuilder:validation:Optional KeepAlive *float64 `json:"keepAlive,omitempty" tf:"keep_alive,omitempty"` @@ -591,12 +768,12 @@ type RuleOptionsParameters struct { // (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"` + 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"` + ThirdPartyRuleOptions *ThirdPartyRuleOptionsParameters `json:"thirdPartyRuleOptions,omitempty" tf:"third_party_rule_options,omitempty"` } type RuleParameters struct { @@ -611,11 +788,16 @@ type RuleParameters struct { // +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. + // (Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (see below for nested schema) + // Additional queries to filter matched events before they are processed. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules. // +kubebuilder:validation:Optional Filter []RuleFilterParameters `json:"filter,omitempty" tf:"filter,omitempty"` + // (List of String) Additional grouping to perform on top of the query grouping. + // Additional grouping to perform on top of the query grouping. + // +kubebuilder:validation:Optional + GroupSignalsBy []*string `json:"groupSignalsBy,omitempty" tf:"group_signals_by,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 @@ -634,20 +816,25 @@ type RuleParameters struct { // (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"` + 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) Reference tables for filtering query results. (see below for nested schema) + // Reference tables for filtering query results. + // +kubebuilder:validation:Optional + ReferenceTables []ReferenceTablesParameters `json:"referenceTables,omitempty" tf:"reference_tables,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. + // (Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. + // Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. // +kubebuilder:validation:Optional // +listType=set Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` @@ -661,6 +848,11 @@ type RuleParameters struct { // 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"` + + // (Boolean) Whether or not to validate the Rule. + // Whether or not to validate the Rule. + // +kubebuilder:validation:Optional + Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` } type SignalQueryInitParameters struct { @@ -900,8 +1092,8 @@ type RuleStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/sensitivedata/v1beta1/zz_generated.conversion_hubs.go b/apis/sensitivedata/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..29070d8 --- /dev/null +++ b/apis/sensitivedata/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,16 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *ScannerGroup) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ScannerGroupOrder) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ScannerRule) Hub() {} diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.deepcopy.go b/apis/sensitivedata/v1beta1/zz_generated.deepcopy.go similarity index 77% rename from apis/sensitivedatascanner/v1alpha1/zz_generated.deepcopy.go rename to apis/sensitivedata/v1beta1/zz_generated.deepcopy.go index 50234da..7903ea8 100644 --- a/apis/sensitivedatascanner/v1alpha1/zz_generated.deepcopy.go +++ b/apis/sensitivedata/v1beta1/zz_generated.deepcopy.go @@ -6,9 +6,10 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( + "github.com/crossplane/crossplane-runtime/apis/common/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -73,7 +74,100 @@ func (in *FilterParameters) DeepCopy() *FilterParameters { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Group) DeepCopyInto(out *Group) { +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 *ScannerGroup) DeepCopyInto(out *ScannerGroup) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -81,18 +175,18 @@ func (in *Group) DeepCopyInto(out *Group) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Group. -func (in *Group) DeepCopy() *Group { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroup. +func (in *ScannerGroup) DeepCopy() *ScannerGroup { if in == nil { return nil } - out := new(Group) + out := new(ScannerGroup) 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 { +func (in *ScannerGroup) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -100,7 +194,7 @@ func (in *Group) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GroupInitParameters) DeepCopyInto(out *GroupInitParameters) { +func (in *ScannerGroupInitParameters) DeepCopyInto(out *ScannerGroupInitParameters) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -109,10 +203,8 @@ func (in *GroupInitParameters) DeepCopyInto(out *GroupInitParameters) { } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]FilterInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(FilterInitParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -137,42 +229,42 @@ func (in *GroupInitParameters) DeepCopyInto(out *GroupInitParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupInitParameters. -func (in *GroupInitParameters) DeepCopy() *GroupInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupInitParameters. +func (in *ScannerGroupInitParameters) DeepCopy() *ScannerGroupInitParameters { if in == nil { return nil } - out := new(GroupInitParameters) + out := new(ScannerGroupInitParameters) 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) { +func (in *ScannerGroupList) DeepCopyInto(out *ScannerGroupList) { *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)) + *out = make([]ScannerGroup, 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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupList. +func (in *ScannerGroupList) DeepCopy() *ScannerGroupList { if in == nil { return nil } - out := new(GroupList) + out := new(ScannerGroupList) 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 { +func (in *ScannerGroupList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -180,7 +272,7 @@ func (in *GroupList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GroupObservation) DeepCopyInto(out *GroupObservation) { +func (in *ScannerGroupObservation) DeepCopyInto(out *ScannerGroupObservation) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -189,10 +281,8 @@ func (in *GroupObservation) DeepCopyInto(out *GroupObservation) { } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]FilterObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(FilterObservation) + (*in).DeepCopyInto(*out) } if in.ID != nil { in, out := &in.ID, &out.ID @@ -222,18 +312,18 @@ func (in *GroupObservation) DeepCopyInto(out *GroupObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupObservation. -func (in *GroupObservation) DeepCopy() *GroupObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupObservation. +func (in *ScannerGroupObservation) DeepCopy() *ScannerGroupObservation { if in == nil { return nil } - out := new(GroupObservation) + out := new(ScannerGroupObservation) 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) { +func (in *ScannerGroupOrder) DeepCopyInto(out *ScannerGroupOrder) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -241,18 +331,18 @@ func (in *GroupOrder) DeepCopyInto(out *GroupOrder) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrder. -func (in *GroupOrder) DeepCopy() *GroupOrder { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrder. +func (in *ScannerGroupOrder) DeepCopy() *ScannerGroupOrder { if in == nil { return nil } - out := new(GroupOrder) + out := new(ScannerGroupOrder) 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 { +func (in *ScannerGroupOrder) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -260,7 +350,7 @@ func (in *GroupOrder) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GroupOrderInitParameters) DeepCopyInto(out *GroupOrderInitParameters) { +func (in *ScannerGroupOrderInitParameters) DeepCopyInto(out *ScannerGroupOrderInitParameters) { *out = *in if in.GroupIds != nil { in, out := &in.GroupIds, &out.GroupIds @@ -275,42 +365,42 @@ func (in *GroupOrderInitParameters) DeepCopyInto(out *GroupOrderInitParameters) } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderInitParameters. -func (in *GroupOrderInitParameters) DeepCopy() *GroupOrderInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrderInitParameters. +func (in *ScannerGroupOrderInitParameters) DeepCopy() *ScannerGroupOrderInitParameters { if in == nil { return nil } - out := new(GroupOrderInitParameters) + out := new(ScannerGroupOrderInitParameters) 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) { +func (in *ScannerGroupOrderList) DeepCopyInto(out *ScannerGroupOrderList) { *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)) + *out = make([]ScannerGroupOrder, 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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrderList. +func (in *ScannerGroupOrderList) DeepCopy() *ScannerGroupOrderList { if in == nil { return nil } - out := new(GroupOrderList) + out := new(ScannerGroupOrderList) 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 { +func (in *ScannerGroupOrderList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -318,7 +408,7 @@ func (in *GroupOrderList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *GroupOrderObservation) DeepCopyInto(out *GroupOrderObservation) { +func (in *ScannerGroupOrderObservation) DeepCopyInto(out *ScannerGroupOrderObservation) { *out = *in if in.GroupIds != nil { in, out := &in.GroupIds, &out.GroupIds @@ -338,18 +428,18 @@ func (in *GroupOrderObservation) DeepCopyInto(out *GroupOrderObservation) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderObservation. -func (in *GroupOrderObservation) DeepCopy() *GroupOrderObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrderObservation. +func (in *ScannerGroupOrderObservation) DeepCopy() *ScannerGroupOrderObservation { if in == nil { return nil } - out := new(GroupOrderObservation) + out := new(ScannerGroupOrderObservation) 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) { +func (in *ScannerGroupOrderParameters) DeepCopyInto(out *ScannerGroupOrderParameters) { *out = *in if in.GroupIds != nil { in, out := &in.GroupIds, &out.GroupIds @@ -364,53 +454,53 @@ func (in *GroupOrderParameters) DeepCopyInto(out *GroupOrderParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupOrderParameters. -func (in *GroupOrderParameters) DeepCopy() *GroupOrderParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrderParameters. +func (in *ScannerGroupOrderParameters) DeepCopy() *ScannerGroupOrderParameters { if in == nil { return nil } - out := new(GroupOrderParameters) + out := new(ScannerGroupOrderParameters) 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) { +func (in *ScannerGroupOrderSpec) DeepCopyInto(out *ScannerGroupOrderSpec) { *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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrderSpec. +func (in *ScannerGroupOrderSpec) DeepCopy() *ScannerGroupOrderSpec { if in == nil { return nil } - out := new(GroupOrderSpec) + out := new(ScannerGroupOrderSpec) 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) { +func (in *ScannerGroupOrderStatus) DeepCopyInto(out *ScannerGroupOrderStatus) { *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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupOrderStatus. +func (in *ScannerGroupOrderStatus) DeepCopy() *ScannerGroupOrderStatus { if in == nil { return nil } - out := new(GroupOrderStatus) + out := new(ScannerGroupOrderStatus) 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) { +func (in *ScannerGroupParameters) DeepCopyInto(out *ScannerGroupParameters) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -419,10 +509,8 @@ func (in *GroupParameters) DeepCopyInto(out *GroupParameters) { } if in.Filter != nil { in, out := &in.Filter, &out.Filter - *out = make([]FilterParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(FilterParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -447,146 +535,53 @@ func (in *GroupParameters) DeepCopyInto(out *GroupParameters) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupParameters. -func (in *GroupParameters) DeepCopy() *GroupParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupParameters. +func (in *ScannerGroupParameters) DeepCopy() *ScannerGroupParameters { if in == nil { return nil } - out := new(GroupParameters) + out := new(ScannerGroupParameters) 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) { +func (in *ScannerGroupSpec) DeepCopyInto(out *ScannerGroupSpec) { *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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupSpec. +func (in *ScannerGroupSpec) DeepCopy() *ScannerGroupSpec { if in == nil { return nil } - out := new(GroupSpec) + out := new(ScannerGroupSpec) 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) { +func (in *ScannerGroupStatus) DeepCopyInto(out *ScannerGroupStatus) { *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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerGroupStatus. +func (in *ScannerGroupStatus) DeepCopy() *ScannerGroupStatus { if in == nil { return nil } - out := new(IncludedKeywordConfigurationInitParameters) + out := new(ScannerGroupStatus) 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) { +func (in *ScannerRule) DeepCopyInto(out *ScannerRule) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -594,18 +589,18 @@ func (in *Rule) DeepCopyInto(out *Rule) { in.Status.DeepCopyInto(&out.Status) } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Rule. -func (in *Rule) DeepCopy() *Rule { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRule. +func (in *ScannerRule) DeepCopy() *ScannerRule { if in == nil { return nil } - out := new(Rule) + out := new(ScannerRule) 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 { +func (in *ScannerRule) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -613,7 +608,7 @@ func (in *Rule) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { +func (in *ScannerRuleInitParameters) DeepCopyInto(out *ScannerRuleInitParameters) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -636,12 +631,20 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { *out = new(string) **out = **in } + if in.GroupIDRef != nil { + in, out := &in.GroupIDRef, &out.GroupIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.GroupIDSelector != nil { + in, out := &in.GroupIDSelector, &out.GroupIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.IncludedKeywordConfiguration != nil { in, out := &in.IncludedKeywordConfiguration, &out.IncludedKeywordConfiguration - *out = make([]IncludedKeywordConfigurationInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(IncludedKeywordConfigurationInitParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -669,6 +672,11 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { *out = new(string) **out = **in } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(float64) + **out = **in + } if in.StandardPatternID != nil { in, out := &in.StandardPatternID, &out.StandardPatternID *out = new(string) @@ -687,49 +695,47 @@ func (in *RuleInitParameters) DeepCopyInto(out *RuleInitParameters) { } if in.TextReplacement != nil { in, out := &in.TextReplacement, &out.TextReplacement - *out = make([]TextReplacementInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TextReplacementInitParameters) + (*in).DeepCopyInto(*out) } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleInitParameters. -func (in *RuleInitParameters) DeepCopy() *RuleInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRuleInitParameters. +func (in *ScannerRuleInitParameters) DeepCopy() *ScannerRuleInitParameters { if in == nil { return nil } - out := new(RuleInitParameters) + out := new(ScannerRuleInitParameters) 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) { +func (in *ScannerRuleList) DeepCopyInto(out *ScannerRuleList) { *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)) + *out = make([]ScannerRule, 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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRuleList. +func (in *ScannerRuleList) DeepCopy() *ScannerRuleList { if in == nil { return nil } - out := new(RuleList) + out := new(ScannerRuleList) 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 { +func (in *ScannerRuleList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -737,7 +743,7 @@ func (in *RuleList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { +func (in *ScannerRuleObservation) DeepCopyInto(out *ScannerRuleObservation) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -767,10 +773,8 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { } if in.IncludedKeywordConfiguration != nil { in, out := &in.IncludedKeywordConfiguration, &out.IncludedKeywordConfiguration - *out = make([]IncludedKeywordConfigurationObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(IncludedKeywordConfigurationObservation) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -798,6 +802,11 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { *out = new(string) **out = **in } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(float64) + **out = **in + } if in.StandardPatternID != nil { in, out := &in.StandardPatternID, &out.StandardPatternID *out = new(string) @@ -816,25 +825,23 @@ func (in *RuleObservation) DeepCopyInto(out *RuleObservation) { } if in.TextReplacement != nil { in, out := &in.TextReplacement, &out.TextReplacement - *out = make([]TextReplacementObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TextReplacementObservation) + (*in).DeepCopyInto(*out) } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleObservation. -func (in *RuleObservation) DeepCopy() *RuleObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRuleObservation. +func (in *ScannerRuleObservation) DeepCopy() *ScannerRuleObservation { if in == nil { return nil } - out := new(RuleObservation) + out := new(ScannerRuleObservation) 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) { +func (in *ScannerRuleParameters) DeepCopyInto(out *ScannerRuleParameters) { *out = *in if in.Description != nil { in, out := &in.Description, &out.Description @@ -857,12 +864,20 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { *out = new(string) **out = **in } + if in.GroupIDRef != nil { + in, out := &in.GroupIDRef, &out.GroupIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.GroupIDSelector != nil { + in, out := &in.GroupIDSelector, &out.GroupIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } if in.IncludedKeywordConfiguration != nil { in, out := &in.IncludedKeywordConfiguration, &out.IncludedKeywordConfiguration - *out = make([]IncludedKeywordConfigurationParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(IncludedKeywordConfigurationParameters) + (*in).DeepCopyInto(*out) } if in.IsEnabled != nil { in, out := &in.IsEnabled, &out.IsEnabled @@ -890,6 +905,11 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { *out = new(string) **out = **in } + if in.Priority != nil { + in, out := &in.Priority, &out.Priority + *out = new(float64) + **out = **in + } if in.StandardPatternID != nil { in, out := &in.StandardPatternID, &out.StandardPatternID *out = new(string) @@ -908,54 +928,52 @@ func (in *RuleParameters) DeepCopyInto(out *RuleParameters) { } if in.TextReplacement != nil { in, out := &in.TextReplacement, &out.TextReplacement - *out = make([]TextReplacementParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TextReplacementParameters) + (*in).DeepCopyInto(*out) } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuleParameters. -func (in *RuleParameters) DeepCopy() *RuleParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRuleParameters. +func (in *ScannerRuleParameters) DeepCopy() *ScannerRuleParameters { if in == nil { return nil } - out := new(RuleParameters) + out := new(ScannerRuleParameters) 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) { +func (in *ScannerRuleSpec) DeepCopyInto(out *ScannerRuleSpec) { *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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRuleSpec. +func (in *ScannerRuleSpec) DeepCopy() *ScannerRuleSpec { if in == nil { return nil } - out := new(RuleSpec) + out := new(ScannerRuleSpec) 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) { +func (in *ScannerRuleStatus) DeepCopyInto(out *ScannerRuleStatus) { *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 { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScannerRuleStatus. +func (in *ScannerRuleStatus) DeepCopy() *ScannerRuleStatus { if in == nil { return nil } - out := new(RuleStatus) + out := new(ScannerRuleStatus) in.DeepCopyInto(out) return out } diff --git a/apis/sensitivedata/v1beta1/zz_generated.managed.go b/apis/sensitivedata/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..96e73cf --- /dev/null +++ b/apis/sensitivedata/v1beta1/zz_generated.managed.go @@ -0,0 +1,188 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this ScannerGroup. +func (mg *ScannerGroup) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ScannerGroup. +func (mg *ScannerGroup) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ScannerGroup. +func (mg *ScannerGroup) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ScannerGroup. +func (mg *ScannerGroup) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ScannerGroup. +func (mg *ScannerGroup) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ScannerGroup. +func (mg *ScannerGroup) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ScannerGroup. +func (mg *ScannerGroup) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ScannerGroup. +func (mg *ScannerGroup) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ScannerGroup. +func (mg *ScannerGroup) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ScannerGroup. +func (mg *ScannerGroup) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ScannerGroup. +func (mg *ScannerGroup) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ScannerGroup. +func (mg *ScannerGroup) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ScannerGroupOrder. +func (mg *ScannerGroupOrder) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} + +// GetCondition of this ScannerRule. +func (mg *ScannerRule) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this ScannerRule. +func (mg *ScannerRule) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this ScannerRule. +func (mg *ScannerRule) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this ScannerRule. +func (mg *ScannerRule) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this ScannerRule. +func (mg *ScannerRule) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this ScannerRule. +func (mg *ScannerRule) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this ScannerRule. +func (mg *ScannerRule) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this ScannerRule. +func (mg *ScannerRule) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this ScannerRule. +func (mg *ScannerRule) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this ScannerRule. +func (mg *ScannerRule) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this ScannerRule. +func (mg *ScannerRule) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this ScannerRule. +func (mg *ScannerRule) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/sensitivedata/v1beta1/zz_generated.managedlist.go b/apis/sensitivedata/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..db8557e --- /dev/null +++ b/apis/sensitivedata/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,35 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this ScannerGroupList. +func (l *ScannerGroupList) 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 ScannerGroupOrderList. +func (l *ScannerGroupOrderList) 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 ScannerRuleList. +func (l *ScannerRuleList) 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/sensitivedata/v1beta1/zz_generated.resolvers.go b/apis/sensitivedata/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..abc6b2d --- /dev/null +++ b/apis/sensitivedata/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,55 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this ScannerRule. +func (mg *ScannerRule) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.GroupID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.GroupIDRef, + Selector: mg.Spec.ForProvider.GroupIDSelector, + To: reference.To{ + List: &ScannerGroupList{}, + Managed: &ScannerGroup{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.GroupID") + } + mg.Spec.ForProvider.GroupID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.GroupIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.GroupID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.GroupIDRef, + Selector: mg.Spec.InitProvider.GroupIDSelector, + To: reference.To{ + List: &ScannerGroupList{}, + Managed: &ScannerGroup{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.GroupID") + } + mg.Spec.InitProvider.GroupID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.GroupIDRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/sensitivedata/v1beta1/zz_groupversion_info.go b/apis/sensitivedata/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..12201c3 --- /dev/null +++ b/apis/sensitivedata/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=sensitivedata.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "sensitivedata.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_group_terraformed.go b/apis/sensitivedata/v1beta1/zz_scannergroup_terraformed.go similarity index 68% rename from apis/sensitivedatascanner/v1alpha1/zz_group_terraformed.go rename to apis/sensitivedata/v1beta1/zz_scannergroup_terraformed.go index c26368c..be57002 100755 --- a/apis/sensitivedatascanner/v1alpha1/zz_group_terraformed.go +++ b/apis/sensitivedata/v1beta1/zz_scannergroup_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this Group -func (mg *Group) GetTerraformResourceType() string { +// GetTerraformResourceType returns Terraform resource type for this ScannerGroup +func (mg *ScannerGroup) GetTerraformResourceType() string { return "datadog_sensitive_data_scanner_group" } -// GetConnectionDetailsMapping for this Group -func (tr *Group) GetConnectionDetailsMapping() map[string]string { +// GetConnectionDetailsMapping for this ScannerGroup +func (tr *ScannerGroup) GetConnectionDetailsMapping() map[string]string { return nil } -// GetObservation of this Group -func (tr *Group) GetObservation() (map[string]any, error) { +// GetObservation of this ScannerGroup +func (tr *ScannerGroup) GetObservation() (map[string]any, error) { o, err := json.TFParser.Marshal(tr.Status.AtProvider) if err != nil { return nil, err @@ -38,8 +34,8 @@ func (tr *Group) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this Group -func (tr *Group) SetObservation(obs map[string]any) error { +// SetObservation for this ScannerGroup +func (tr *ScannerGroup) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *Group) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this Group -func (tr *Group) GetID() string { +// GetID returns ID of underlying Terraform resource of this ScannerGroup +func (tr *ScannerGroup) 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) { +// GetParameters of this ScannerGroup +func (tr *ScannerGroup) GetParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.ForProvider) if err != nil { return nil, err @@ -65,8 +61,8 @@ func (tr *Group) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this Group -func (tr *Group) SetParameters(params map[string]any) error { +// SetParameters for this ScannerGroup +func (tr *ScannerGroup) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *Group) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this Group -func (tr *Group) GetInitParameters() (map[string]any, error) { +// GetInitParameters of this ScannerGroup +func (tr *ScannerGroup) GetInitParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.InitProvider) if err != nil { return nil, err @@ -84,8 +80,8 @@ func (tr *Group) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this Group -func (tr *Group) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// GetInitParameters of this ScannerGroup +func (tr *ScannerGroup) 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()) @@ -114,10 +110,10 @@ func (tr *Group) GetMergedParameters(shouldMergeInitProvider bool) (map[string]a return params, nil } -// LateInitialize this Group using its observed tfState. +// LateInitialize this ScannerGroup 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{} +func (tr *ScannerGroup) LateInitialize(attrs []byte) (bool, error) { + params := &ScannerGroupParameters{} if err := json.TFParser.Unmarshal(attrs, params); err != nil { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } @@ -128,6 +124,6 @@ func (tr *Group) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *Group) GetTerraformSchemaVersion() int { +func (tr *ScannerGroup) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/sensitivedatascanner/v1alpha1/zz_group_types.go b/apis/sensitivedata/v1beta1/zz_scannergroup_types.go similarity index 82% rename from apis/sensitivedatascanner/v1alpha1/zz_group_types.go rename to apis/sensitivedata/v1beta1/zz_scannergroup_types.go index 01ddb5c..e133374 100755 --- a/apis/sensitivedatascanner/v1alpha1/zz_group_types.go +++ b/apis/sensitivedata/v1beta1/zz_scannergroup_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -39,7 +35,7 @@ type FilterParameters struct { Query *string `json:"query" tf:"query,omitempty"` } -type GroupInitParameters struct { +type ScannerGroupInitParameters struct { // (String) Description of the Datadog scanning group. // Description of the Datadog scanning group. @@ -47,7 +43,7 @@ type GroupInitParameters struct { // (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"` + 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 @@ -63,7 +59,7 @@ type GroupInitParameters struct { ProductList []*string `json:"productList,omitempty" tf:"product_list,omitempty"` } -type GroupObservation struct { +type ScannerGroupObservation struct { // (String) Description of the Datadog scanning group. // Description of the Datadog scanning group. @@ -71,7 +67,7 @@ type GroupObservation struct { // (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"` + Filter *FilterObservation `json:"filter,omitempty" tf:"filter,omitempty"` // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -90,7 +86,7 @@ type GroupObservation struct { ProductList []*string `json:"productList,omitempty" tf:"product_list,omitempty"` } -type GroupParameters struct { +type ScannerGroupParameters struct { // (String) Description of the Datadog scanning group. // Description of the Datadog scanning group. @@ -100,7 +96,7 @@ type GroupParameters struct { // (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"` + 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 @@ -119,10 +115,10 @@ type GroupParameters struct { ProductList []*string `json:"productList,omitempty" tf:"product_list,omitempty"` } -// GroupSpec defines the desired state of Group -type GroupSpec struct { +// ScannerGroupSpec defines the desired state of ScannerGroup +type ScannerGroupSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider GroupParameters `json:"forProvider"` + ForProvider ScannerGroupParameters `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 @@ -133,53 +129,53 @@ type GroupSpec 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 GroupInitParameters `json:"initProvider,omitempty"` + InitProvider ScannerGroupInitParameters `json:"initProvider,omitempty"` } -// GroupStatus defines the observed state of Group. -type GroupStatus struct { +// ScannerGroupStatus defines the observed state of ScannerGroup. +type ScannerGroupStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider GroupObservation `json:"atProvider,omitempty"` + AtProvider ScannerGroupObservation `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" +// ScannerGroup is the Schema for the ScannerGroups API. Provides a Sensitive Data Scanner group resource. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type ScannerGroup 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"` + Spec ScannerGroupSpec `json:"spec"` + Status ScannerGroupStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// GroupList contains a list of Groups -type GroupList struct { +// ScannerGroupList contains a list of ScannerGroups +type ScannerGroupList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []Group `json:"items"` + Items []ScannerGroup `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) + ScannerGroup_Kind = "ScannerGroup" + ScannerGroup_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ScannerGroup_Kind}.String() + ScannerGroup_KindAPIVersion = ScannerGroup_Kind + "." + CRDGroupVersion.String() + ScannerGroup_GroupVersionKind = CRDGroupVersion.WithKind(ScannerGroup_Kind) ) func init() { - SchemeBuilder.Register(&Group{}, &GroupList{}) + SchemeBuilder.Register(&ScannerGroup{}, &ScannerGroupList{}) } diff --git a/apis/sensitivedatascanner/v1alpha1/zz_grouporder_terraformed.go b/apis/sensitivedata/v1beta1/zz_scannergrouporder_terraformed.go similarity index 66% rename from apis/sensitivedatascanner/v1alpha1/zz_grouporder_terraformed.go rename to apis/sensitivedata/v1beta1/zz_scannergrouporder_terraformed.go index b70a9e6..8afa849 100755 --- a/apis/sensitivedatascanner/v1alpha1/zz_grouporder_terraformed.go +++ b/apis/sensitivedata/v1beta1/zz_scannergrouporder_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this GroupOrder -func (mg *GroupOrder) GetTerraformResourceType() string { +// GetTerraformResourceType returns Terraform resource type for this ScannerGroupOrder +func (mg *ScannerGroupOrder) GetTerraformResourceType() string { return "datadog_sensitive_data_scanner_group_order" } -// GetConnectionDetailsMapping for this GroupOrder -func (tr *GroupOrder) GetConnectionDetailsMapping() map[string]string { +// GetConnectionDetailsMapping for this ScannerGroupOrder +func (tr *ScannerGroupOrder) GetConnectionDetailsMapping() map[string]string { return nil } -// GetObservation of this GroupOrder -func (tr *GroupOrder) GetObservation() (map[string]any, error) { +// GetObservation of this ScannerGroupOrder +func (tr *ScannerGroupOrder) GetObservation() (map[string]any, error) { o, err := json.TFParser.Marshal(tr.Status.AtProvider) if err != nil { return nil, err @@ -38,8 +34,8 @@ func (tr *GroupOrder) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this GroupOrder -func (tr *GroupOrder) SetObservation(obs map[string]any) error { +// SetObservation for this ScannerGroupOrder +func (tr *ScannerGroupOrder) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *GroupOrder) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this GroupOrder -func (tr *GroupOrder) GetID() string { +// GetID returns ID of underlying Terraform resource of this ScannerGroupOrder +func (tr *ScannerGroupOrder) 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) { +// GetParameters of this ScannerGroupOrder +func (tr *ScannerGroupOrder) GetParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.ForProvider) if err != nil { return nil, err @@ -65,8 +61,8 @@ func (tr *GroupOrder) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this GroupOrder -func (tr *GroupOrder) SetParameters(params map[string]any) error { +// SetParameters for this ScannerGroupOrder +func (tr *ScannerGroupOrder) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *GroupOrder) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this GroupOrder -func (tr *GroupOrder) GetInitParameters() (map[string]any, error) { +// GetInitParameters of this ScannerGroupOrder +func (tr *ScannerGroupOrder) GetInitParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.InitProvider) if err != nil { return nil, err @@ -84,8 +80,8 @@ func (tr *GroupOrder) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this GroupOrder -func (tr *GroupOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// GetInitParameters of this ScannerGroupOrder +func (tr *ScannerGroupOrder) 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()) @@ -114,10 +110,10 @@ func (tr *GroupOrder) GetMergedParameters(shouldMergeInitProvider bool) (map[str return params, nil } -// LateInitialize this GroupOrder using its observed tfState. +// LateInitialize this ScannerGroupOrder 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{} +func (tr *ScannerGroupOrder) LateInitialize(attrs []byte) (bool, error) { + params := &ScannerGroupOrderParameters{} if err := json.TFParser.Unmarshal(attrs, params); err != nil { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } @@ -128,6 +124,6 @@ func (tr *GroupOrder) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *GroupOrder) GetTerraformSchemaVersion() int { +func (tr *ScannerGroupOrder) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/sensitivedatascanner/v1alpha1/zz_grouporder_types.go b/apis/sensitivedata/v1beta1/zz_scannergrouporder_types.go similarity index 69% rename from apis/sensitivedatascanner/v1alpha1/zz_grouporder_types.go rename to apis/sensitivedata/v1beta1/zz_scannergrouporder_types.go index ba4244d..6b919f6 100755 --- a/apis/sensitivedatascanner/v1alpha1/zz_grouporder_types.go +++ b/apis/sensitivedata/v1beta1/zz_scannergrouporder_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,14 +13,14 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type GroupOrderInitParameters struct { +type ScannerGroupOrderInitParameters 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 { +type ScannerGroupOrderObservation 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. @@ -34,7 +30,7 @@ type GroupOrderObservation struct { ID *string `json:"id,omitempty" tf:"id,omitempty"` } -type GroupOrderParameters struct { +type ScannerGroupOrderParameters 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. @@ -42,10 +38,10 @@ type GroupOrderParameters struct { GroupIds []*string `json:"groupIds,omitempty" tf:"group_ids,omitempty"` } -// GroupOrderSpec defines the desired state of GroupOrder -type GroupOrderSpec struct { +// ScannerGroupOrderSpec defines the desired state of ScannerGroupOrder +type ScannerGroupOrderSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider GroupOrderParameters `json:"forProvider"` + ForProvider ScannerGroupOrderParameters `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 @@ -56,50 +52,50 @@ type GroupOrderSpec 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 GroupOrderInitParameters `json:"initProvider,omitempty"` + InitProvider ScannerGroupOrderInitParameters `json:"initProvider,omitempty"` } -// GroupOrderStatus defines the observed state of GroupOrder. -type GroupOrderStatus struct { +// ScannerGroupOrderStatus defines the observed state of ScannerGroupOrder. +type ScannerGroupOrderStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider GroupOrderObservation `json:"atProvider,omitempty"` + AtProvider ScannerGroupOrderObservation `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" +// ScannerGroupOrder is the Schema for the ScannerGroupOrders 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="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type ScannerGroupOrder 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"` + Spec ScannerGroupOrderSpec `json:"spec"` + Status ScannerGroupOrderStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// GroupOrderList contains a list of GroupOrders -type GroupOrderList struct { +// ScannerGroupOrderList contains a list of ScannerGroupOrders +type ScannerGroupOrderList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []GroupOrder `json:"items"` + Items []ScannerGroupOrder `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) + ScannerGroupOrder_Kind = "ScannerGroupOrder" + ScannerGroupOrder_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ScannerGroupOrder_Kind}.String() + ScannerGroupOrder_KindAPIVersion = ScannerGroupOrder_Kind + "." + CRDGroupVersion.String() + ScannerGroupOrder_GroupVersionKind = CRDGroupVersion.WithKind(ScannerGroupOrder_Kind) ) func init() { - SchemeBuilder.Register(&GroupOrder{}, &GroupOrderList{}) + SchemeBuilder.Register(&ScannerGroupOrder{}, &ScannerGroupOrderList{}) } diff --git a/apis/sensitivedatascanner/v1alpha1/zz_rule_terraformed.go b/apis/sensitivedata/v1beta1/zz_scannerrule_terraformed.go similarity index 68% rename from apis/sensitivedatascanner/v1alpha1/zz_rule_terraformed.go rename to apis/sensitivedata/v1beta1/zz_scannerrule_terraformed.go index 254c021..0564736 100755 --- a/apis/sensitivedatascanner/v1alpha1/zz_rule_terraformed.go +++ b/apis/sensitivedata/v1beta1/zz_scannerrule_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this Rule -func (mg *Rule) GetTerraformResourceType() string { +// GetTerraformResourceType returns Terraform resource type for this ScannerRule +func (mg *ScannerRule) GetTerraformResourceType() string { return "datadog_sensitive_data_scanner_rule" } -// GetConnectionDetailsMapping for this Rule -func (tr *Rule) GetConnectionDetailsMapping() map[string]string { +// GetConnectionDetailsMapping for this ScannerRule +func (tr *ScannerRule) GetConnectionDetailsMapping() map[string]string { return nil } -// GetObservation of this Rule -func (tr *Rule) GetObservation() (map[string]any, error) { +// GetObservation of this ScannerRule +func (tr *ScannerRule) GetObservation() (map[string]any, error) { o, err := json.TFParser.Marshal(tr.Status.AtProvider) if err != nil { return nil, err @@ -38,8 +34,8 @@ func (tr *Rule) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this Rule -func (tr *Rule) SetObservation(obs map[string]any) error { +// SetObservation for this ScannerRule +func (tr *ScannerRule) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *Rule) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this Rule -func (tr *Rule) GetID() string { +// GetID returns ID of underlying Terraform resource of this ScannerRule +func (tr *ScannerRule) 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) { +// GetParameters of this ScannerRule +func (tr *ScannerRule) GetParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.ForProvider) if err != nil { return nil, err @@ -65,8 +61,8 @@ func (tr *Rule) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this Rule -func (tr *Rule) SetParameters(params map[string]any) error { +// SetParameters for this ScannerRule +func (tr *ScannerRule) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *Rule) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this Rule -func (tr *Rule) GetInitParameters() (map[string]any, error) { +// GetInitParameters of this ScannerRule +func (tr *ScannerRule) GetInitParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.InitProvider) if err != nil { return nil, err @@ -84,8 +80,8 @@ func (tr *Rule) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this Rule -func (tr *Rule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// GetInitParameters of this ScannerRule +func (tr *ScannerRule) 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()) @@ -114,10 +110,10 @@ func (tr *Rule) GetMergedParameters(shouldMergeInitProvider bool) (map[string]an return params, nil } -// LateInitialize this Rule using its observed tfState. +// LateInitialize this ScannerRule 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{} +func (tr *ScannerRule) LateInitialize(attrs []byte) (bool, error) { + params := &ScannerRuleParameters{} if err := json.TFParser.Unmarshal(attrs, params); err != nil { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } @@ -128,6 +124,6 @@ func (tr *Rule) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *Rule) GetTerraformSchemaVersion() int { +func (tr *ScannerRule) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/sensitivedatascanner/v1alpha1/zz_rule_types.go b/apis/sensitivedata/v1beta1/zz_scannerrule_types.go similarity index 76% rename from apis/sensitivedatascanner/v1alpha1/zz_rule_types.go rename to apis/sensitivedata/v1beta1/zz_scannerrule_types.go index a1ccf18..0b2d756 100755 --- a/apis/sensitivedatascanner/v1alpha1/zz_rule_types.go +++ b/apis/sensitivedata/v1beta1/zz_scannerrule_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -52,7 +48,7 @@ type IncludedKeywordConfigurationParameters struct { Keywords []*string `json:"keywords" tf:"keywords,omitempty"` } -type RuleInitParameters struct { +type ScannerRuleInitParameters struct { // (String) Description of the rule. // Description of the rule. @@ -64,11 +60,20 @@ type RuleInitParameters struct { // (String) Id of the scanning group the rule belongs to. // Id of the scanning group the rule belongs to. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/sensitivedata/v1beta1.ScannerGroup GroupID *string `json:"groupId,omitempty" tf:"group_id,omitempty"` + // Reference to a ScannerGroup in sensitivedata to populate groupId. + // +kubebuilder:validation:Optional + GroupIDRef *v1.Reference `json:"groupIdRef,omitempty" tf:"-"` + + // Selector for a ScannerGroup in sensitivedata to populate groupId. + // +kubebuilder:validation:Optional + GroupIDSelector *v1.Selector `json:"groupIdSelector,omitempty" tf:"-"` + // 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"` + // 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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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. @@ -86,6 +91,10 @@ type RuleInitParameters struct { // Not included if there is a relationship to a standard pattern. Pattern *string `json:"pattern,omitempty" tf:"pattern,omitempty"` + // (Number) Priority level of the rule . Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + // Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + Priority *float64 `json:"priority,omitempty" tf:"priority,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"` @@ -96,10 +105,10 @@ type RuleInitParameters struct { // (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"` + TextReplacement *TextReplacementInitParameters `json:"textReplacement,omitempty" tf:"text_replacement,omitempty"` } -type RuleObservation struct { +type ScannerRuleObservation struct { // (String) Description of the rule. // Description of the rule. @@ -117,8 +126,8 @@ type RuleObservation struct { 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"` + // 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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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. @@ -136,6 +145,10 @@ type RuleObservation struct { // Not included if there is a relationship to a standard pattern. Pattern *string `json:"pattern,omitempty" tf:"pattern,omitempty"` + // (Number) Priority level of the rule . Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + // Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + Priority *float64 `json:"priority,omitempty" tf:"priority,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"` @@ -146,10 +159,10 @@ type RuleObservation struct { // (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"` + TextReplacement *TextReplacementObservation `json:"textReplacement,omitempty" tf:"text_replacement,omitempty"` } -type RuleParameters struct { +type ScannerRuleParameters struct { // (String) Description of the rule. // Description of the rule. @@ -163,13 +176,22 @@ type RuleParameters struct { // (String) Id of the scanning group the rule belongs to. // Id of the scanning group the rule belongs to. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/sensitivedata/v1beta1.ScannerGroup // +kubebuilder:validation:Optional GroupID *string `json:"groupId,omitempty" tf:"group_id,omitempty"` + // Reference to a ScannerGroup in sensitivedata to populate groupId. + // +kubebuilder:validation:Optional + GroupIDRef *v1.Reference `json:"groupIdRef,omitempty" tf:"-"` + + // Selector for a ScannerGroup in sensitivedata to populate groupId. + // +kubebuilder:validation:Optional + GroupIDSelector *v1.Selector `json:"groupIdSelector,omitempty" tf:"-"` + // 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. + // 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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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"` + 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. @@ -191,6 +213,11 @@ type RuleParameters struct { // +kubebuilder:validation:Optional Pattern *string `json:"pattern,omitempty" tf:"pattern,omitempty"` + // (Number) Priority level of the rule . Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + // Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + // +kubebuilder:validation:Optional + Priority *float64 `json:"priority,omitempty" tf:"priority,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 @@ -204,7 +231,7 @@ type RuleParameters struct { // (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"` + TextReplacement *TextReplacementParameters `json:"textReplacement,omitempty" tf:"text_replacement,omitempty"` } type TextReplacementInitParameters struct { @@ -255,10 +282,10 @@ type TextReplacementParameters struct { Type *string `json:"type" tf:"type,omitempty"` } -// RuleSpec defines the desired state of Rule -type RuleSpec struct { +// ScannerRuleSpec defines the desired state of ScannerRule +type ScannerRuleSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider RuleParameters `json:"forProvider"` + ForProvider ScannerRuleParameters `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 @@ -269,50 +296,49 @@ type RuleSpec 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 RuleInitParameters `json:"initProvider,omitempty"` + InitProvider ScannerRuleInitParameters `json:"initProvider,omitempty"` } -// RuleStatus defines the observed state of Rule. -type RuleStatus struct { +// ScannerRuleStatus defines the observed state of ScannerRule. +type ScannerRuleStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider RuleObservation `json:"atProvider,omitempty"` + AtProvider ScannerRuleObservation `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" +// ScannerRule is the Schema for the ScannerRules API. 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. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type ScannerRule 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"` + Spec ScannerRuleSpec `json:"spec"` + Status ScannerRuleStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// RuleList contains a list of Rules -type RuleList struct { +// ScannerRuleList contains a list of ScannerRules +type ScannerRuleList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []Rule `json:"items"` + Items []ScannerRule `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) + ScannerRule_Kind = "ScannerRule" + ScannerRule_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: ScannerRule_Kind}.String() + ScannerRule_KindAPIVersion = ScannerRule_Kind + "." + CRDGroupVersion.String() + ScannerRule_GroupVersionKind = CRDGroupVersion.WithKind(ScannerRule_Kind) ) func init() { - SchemeBuilder.Register(&Rule{}, &RuleList{}) + SchemeBuilder.Register(&ScannerRule{}, &ScannerRuleList{}) } diff --git a/apis/sensitivedatascanner/v1alpha1/zz_generated.conversion_hubs.go b/apis/sensitivedatascanner/v1alpha1/zz_generated.conversion_hubs.go deleted file mode 100755 index dded650..0000000 --- a/apis/sensitivedatascanner/v1alpha1/zz_generated.conversion_hubs.go +++ /dev/null @@ -1,20 +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 - -// 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.managed.go b/apis/sensitivedatascanner/v1alpha1/zz_generated.managed.go deleted file mode 100644 index 119a509..0000000 --- a/apis/sensitivedatascanner/v1alpha1/zz_generated.managed.go +++ /dev/null @@ -1,188 +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 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_groupversion_info.go b/apis/sensitivedatascanner/v1alpha1/zz_groupversion_info.go deleted file mode 100755 index d462961..0000000 --- a/apis/sensitivedatascanner/v1alpha1/zz_groupversion_info.go +++ /dev/null @@ -1,36 +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. - -// +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/datadog/v1alpha1/zz_rumapplication_terraformed.go b/apis/service/v1beta1/zz_definitionyaml_terraformed.go similarity index 66% rename from apis/datadog/v1alpha1/zz_rumapplication_terraformed.go rename to apis/service/v1beta1/zz_definitionyaml_terraformed.go index 68bf337..cb7db27 100755 --- a/apis/datadog/v1alpha1/zz_rumapplication_terraformed.go +++ b/apis/service/v1beta1/zz_definitionyaml_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -18,18 +14,18 @@ import ( "github.com/crossplane/upjet/pkg/resource/json" ) -// GetTerraformResourceType returns Terraform resource type for this RUMApplication -func (mg *RUMApplication) GetTerraformResourceType() string { - return "datadog_rum_application" +// GetTerraformResourceType returns Terraform resource type for this DefinitionYaml +func (mg *DefinitionYaml) GetTerraformResourceType() string { + return "datadog_service_definition_yaml" } -// GetConnectionDetailsMapping for this RUMApplication -func (tr *RUMApplication) GetConnectionDetailsMapping() map[string]string { +// GetConnectionDetailsMapping for this DefinitionYaml +func (tr *DefinitionYaml) GetConnectionDetailsMapping() map[string]string { return nil } -// GetObservation of this RUMApplication -func (tr *RUMApplication) GetObservation() (map[string]any, error) { +// GetObservation of this DefinitionYaml +func (tr *DefinitionYaml) GetObservation() (map[string]any, error) { o, err := json.TFParser.Marshal(tr.Status.AtProvider) if err != nil { return nil, err @@ -38,8 +34,8 @@ func (tr *RUMApplication) GetObservation() (map[string]any, error) { return base, json.TFParser.Unmarshal(o, &base) } -// SetObservation for this RUMApplication -func (tr *RUMApplication) SetObservation(obs map[string]any) error { +// SetObservation for this DefinitionYaml +func (tr *DefinitionYaml) SetObservation(obs map[string]any) error { p, err := json.TFParser.Marshal(obs) if err != nil { return err @@ -47,16 +43,16 @@ func (tr *RUMApplication) SetObservation(obs map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Status.AtProvider) } -// GetID returns ID of underlying Terraform resource of this RUMApplication -func (tr *RUMApplication) GetID() string { +// GetID returns ID of underlying Terraform resource of this DefinitionYaml +func (tr *DefinitionYaml) 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) { +// GetParameters of this DefinitionYaml +func (tr *DefinitionYaml) GetParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.ForProvider) if err != nil { return nil, err @@ -65,8 +61,8 @@ func (tr *RUMApplication) GetParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// SetParameters for this RUMApplication -func (tr *RUMApplication) SetParameters(params map[string]any) error { +// SetParameters for this DefinitionYaml +func (tr *DefinitionYaml) SetParameters(params map[string]any) error { p, err := json.TFParser.Marshal(params) if err != nil { return err @@ -74,8 +70,8 @@ func (tr *RUMApplication) SetParameters(params map[string]any) error { return json.TFParser.Unmarshal(p, &tr.Spec.ForProvider) } -// GetInitParameters of this RUMApplication -func (tr *RUMApplication) GetInitParameters() (map[string]any, error) { +// GetInitParameters of this DefinitionYaml +func (tr *DefinitionYaml) GetInitParameters() (map[string]any, error) { p, err := json.TFParser.Marshal(tr.Spec.InitProvider) if err != nil { return nil, err @@ -84,8 +80,8 @@ func (tr *RUMApplication) GetInitParameters() (map[string]any, error) { return base, json.TFParser.Unmarshal(p, &base) } -// GetInitParameters of this RUMApplication -func (tr *RUMApplication) GetMergedParameters(shouldMergeInitProvider bool) (map[string]any, error) { +// GetInitParameters of this DefinitionYaml +func (tr *DefinitionYaml) 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()) @@ -114,10 +110,10 @@ func (tr *RUMApplication) GetMergedParameters(shouldMergeInitProvider bool) (map return params, nil } -// LateInitialize this RUMApplication using its observed tfState. +// LateInitialize this DefinitionYaml 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{} +func (tr *DefinitionYaml) LateInitialize(attrs []byte) (bool, error) { + params := &DefinitionYamlParameters{} if err := json.TFParser.Unmarshal(attrs, params); err != nil { return false, errors.Wrap(err, "failed to unmarshal Terraform state parameters for late-initialization") } @@ -128,6 +124,6 @@ func (tr *RUMApplication) LateInitialize(attrs []byte) (bool, error) { } // GetTerraformSchemaVersion returns the associated Terraform schema version -func (tr *RUMApplication) GetTerraformSchemaVersion() int { +func (tr *DefinitionYaml) GetTerraformSchemaVersion() int { return 0 } diff --git a/apis/datadog/v1alpha1/zz_servicedefinitionyaml_types.go b/apis/service/v1beta1/zz_definitionyaml_types.go similarity index 62% rename from apis/datadog/v1alpha1/zz_servicedefinitionyaml_types.go rename to apis/service/v1beta1/zz_definitionyaml_types.go index f6a725d..ec18af7 100755 --- a/apis/datadog/v1alpha1/zz_servicedefinitionyaml_types.go +++ b/apis/service/v1beta1/zz_definitionyaml_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,14 +13,14 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type ServiceDefinitionYAMLInitParameters struct { +type DefinitionYamlInitParameters 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 { +type DefinitionYamlObservation struct { // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` @@ -34,7 +30,7 @@ type ServiceDefinitionYAMLObservation struct { ServiceDefinition *string `json:"serviceDefinition,omitempty" tf:"service_definition,omitempty"` } -type ServiceDefinitionYAMLParameters struct { +type DefinitionYamlParameters struct { // (String) The YAML/JSON formatted definition of the service // The YAML/JSON formatted definition of the service @@ -42,10 +38,10 @@ type ServiceDefinitionYAMLParameters struct { ServiceDefinition *string `json:"serviceDefinition,omitempty" tf:"service_definition,omitempty"` } -// ServiceDefinitionYAMLSpec defines the desired state of ServiceDefinitionYAML -type ServiceDefinitionYAMLSpec struct { +// DefinitionYamlSpec defines the desired state of DefinitionYaml +type DefinitionYamlSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider ServiceDefinitionYAMLParameters `json:"forProvider"` + ForProvider DefinitionYamlParameters `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 @@ -56,50 +52,50 @@ type ServiceDefinitionYAMLSpec 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 ServiceDefinitionYAMLInitParameters `json:"initProvider,omitempty"` + InitProvider DefinitionYamlInitParameters `json:"initProvider,omitempty"` } -// ServiceDefinitionYAMLStatus defines the observed state of ServiceDefinitionYAML. -type ServiceDefinitionYAMLStatus struct { +// DefinitionYamlStatus defines the observed state of DefinitionYaml. +type DefinitionYamlStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider ServiceDefinitionYAMLObservation `json:"atProvider,omitempty"` + AtProvider DefinitionYamlObservation `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" +// DefinitionYaml is the Schema for the DefinitionYamls 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="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type DefinitionYaml 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"` + Spec DefinitionYamlSpec `json:"spec"` + Status DefinitionYamlStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// ServiceDefinitionYAMLList contains a list of ServiceDefinitionYAMLs -type ServiceDefinitionYAMLList struct { +// DefinitionYamlList contains a list of DefinitionYamls +type DefinitionYamlList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []ServiceDefinitionYAML `json:"items"` + Items []DefinitionYaml `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) + DefinitionYaml_Kind = "DefinitionYaml" + DefinitionYaml_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: DefinitionYaml_Kind}.String() + DefinitionYaml_KindAPIVersion = DefinitionYaml_Kind + "." + CRDGroupVersion.String() + DefinitionYaml_GroupVersionKind = CRDGroupVersion.WithKind(DefinitionYaml_Kind) ) func init() { - SchemeBuilder.Register(&ServiceDefinitionYAML{}, &ServiceDefinitionYAMLList{}) + SchemeBuilder.Register(&DefinitionYaml{}, &DefinitionYamlList{}) } diff --git a/apis/service/v1beta1/zz_generated.conversion_hubs.go b/apis/service/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..4623d00 --- /dev/null +++ b/apis/service/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,10 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *DefinitionYaml) Hub() {} diff --git a/apis/service/v1beta1/zz_generated.deepcopy.go b/apis/service/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..8cd2806 --- /dev/null +++ b/apis/service/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,172 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *DefinitionYaml) DeepCopyInto(out *DefinitionYaml) { + *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 DefinitionYaml. +func (in *DefinitionYaml) DeepCopy() *DefinitionYaml { + if in == nil { + return nil + } + out := new(DefinitionYaml) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DefinitionYaml) 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 *DefinitionYamlInitParameters) DeepCopyInto(out *DefinitionYamlInitParameters) { + *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 DefinitionYamlInitParameters. +func (in *DefinitionYamlInitParameters) DeepCopy() *DefinitionYamlInitParameters { + if in == nil { + return nil + } + out := new(DefinitionYamlInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefinitionYamlList) DeepCopyInto(out *DefinitionYamlList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]DefinitionYaml, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefinitionYamlList. +func (in *DefinitionYamlList) DeepCopy() *DefinitionYamlList { + if in == nil { + return nil + } + out := new(DefinitionYamlList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DefinitionYamlList) 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 *DefinitionYamlObservation) DeepCopyInto(out *DefinitionYamlObservation) { + *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 DefinitionYamlObservation. +func (in *DefinitionYamlObservation) DeepCopy() *DefinitionYamlObservation { + if in == nil { + return nil + } + out := new(DefinitionYamlObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefinitionYamlParameters) DeepCopyInto(out *DefinitionYamlParameters) { + *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 DefinitionYamlParameters. +func (in *DefinitionYamlParameters) DeepCopy() *DefinitionYamlParameters { + if in == nil { + return nil + } + out := new(DefinitionYamlParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefinitionYamlSpec) DeepCopyInto(out *DefinitionYamlSpec) { + *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 DefinitionYamlSpec. +func (in *DefinitionYamlSpec) DeepCopy() *DefinitionYamlSpec { + if in == nil { + return nil + } + out := new(DefinitionYamlSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefinitionYamlStatus) DeepCopyInto(out *DefinitionYamlStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefinitionYamlStatus. +func (in *DefinitionYamlStatus) DeepCopy() *DefinitionYamlStatus { + if in == nil { + return nil + } + out := new(DefinitionYamlStatus) + in.DeepCopyInto(out) + return out +} diff --git a/apis/service/v1beta1/zz_generated.managed.go b/apis/service/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..67f7717 --- /dev/null +++ b/apis/service/v1beta1/zz_generated.managed.go @@ -0,0 +1,68 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this DefinitionYaml. +func (mg *DefinitionYaml) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this DefinitionYaml. +func (mg *DefinitionYaml) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this DefinitionYaml. +func (mg *DefinitionYaml) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this DefinitionYaml. +func (mg *DefinitionYaml) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this DefinitionYaml. +func (mg *DefinitionYaml) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this DefinitionYaml. +func (mg *DefinitionYaml) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this DefinitionYaml. +func (mg *DefinitionYaml) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this DefinitionYaml. +func (mg *DefinitionYaml) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this DefinitionYaml. +func (mg *DefinitionYaml) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this DefinitionYaml. +func (mg *DefinitionYaml) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this DefinitionYaml. +func (mg *DefinitionYaml) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this DefinitionYaml. +func (mg *DefinitionYaml) SetWriteConnectionSecretToReference(r *xpv1.SecretReference) { + mg.Spec.WriteConnectionSecretToReference = r +} diff --git a/apis/service/v1beta1/zz_generated.managedlist.go b/apis/service/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..f6f8531 --- /dev/null +++ b/apis/service/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,17 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this DefinitionYamlList. +func (l *DefinitionYamlList) 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/service/v1beta1/zz_groupversion_info.go b/apis/service/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..4cca523 --- /dev/null +++ b/apis/service/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=service.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "service.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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/slo/v1beta1/zz_correction_terraformed.go b/apis/slo/v1beta1/zz_correction_terraformed.go new file mode 100755 index 0000000..23dd3e6 --- /dev/null +++ b/apis/slo/v1beta1/zz_correction_terraformed.go @@ -0,0 +1,129 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +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 Correction +func (mg *Correction) GetTerraformResourceType() string { + return "datadog_slo_correction" +} + +// GetConnectionDetailsMapping for this Correction +func (tr *Correction) GetConnectionDetailsMapping() map[string]string { + return nil +} + +// GetObservation of this Correction +func (tr *Correction) 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 Correction +func (tr *Correction) 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 Correction +func (tr *Correction) GetID() string { + if tr.Status.AtProvider.ID == nil { + return "" + } + return *tr.Status.AtProvider.ID +} + +// GetParameters of this Correction +func (tr *Correction) 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 Correction +func (tr *Correction) 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 Correction +func (tr *Correction) 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 Correction +func (tr *Correction) 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 Correction using its observed tfState. +// returns True if there are any spec changes for the resource. +func (tr *Correction) LateInitialize(attrs []byte) (bool, error) { + params := &CorrectionParameters{} + 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 *Correction) GetTerraformSchemaVersion() int { + return 0 +} diff --git a/apis/datadog/v1alpha1/zz_slocorrection_types.go b/apis/slo/v1beta1/zz_correction_types.go similarity index 81% rename from apis/datadog/v1alpha1/zz_slocorrection_types.go rename to apis/slo/v1beta1/zz_correction_types.go index 169cea6..f62f6c6 100755 --- a/apis/datadog/v1alpha1/zz_slocorrection_types.go +++ b/apis/slo/v1beta1/zz_correction_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,7 +13,7 @@ import ( v1 "github.com/crossplane/crossplane-runtime/apis/common/v1" ) -type SLOCorrectionInitParameters struct { +type CorrectionInitParameters 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`. @@ -41,8 +37,17 @@ type SLOCorrectionInitParameters struct { // (String) ID of the SLO that this correction will be applied to. // ID of the SLO that this correction will be applied to. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/slo/v1beta1.ServiceLevelObjective SLOID *string `json:"sloId,omitempty" tf:"slo_id,omitempty"` + // Reference to a ServiceLevelObjective in slo to populate sloId. + // +kubebuilder:validation:Optional + SLOIDRef *v1.Reference `json:"sloIdRef,omitempty" tf:"-"` + + // Selector for a ServiceLevelObjective in slo to populate sloId. + // +kubebuilder:validation:Optional + SLOIDSelector *v1.Selector `json:"sloIdSelector,omitempty" tf:"-"` + // (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"` @@ -52,7 +57,7 @@ type SLOCorrectionInitParameters struct { Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` } -type SLOCorrectionObservation struct { +type CorrectionObservation 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`. @@ -90,7 +95,7 @@ type SLOCorrectionObservation struct { Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` } -type SLOCorrectionParameters struct { +type CorrectionParameters 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`. @@ -119,9 +124,18 @@ type SLOCorrectionParameters struct { // (String) ID of the SLO that this correction will be applied to. // ID of the SLO that this correction will be applied to. + // +crossplane:generate:reference:type=github.com/upbound/provider-datadog/apis/slo/v1beta1.ServiceLevelObjective // +kubebuilder:validation:Optional SLOID *string `json:"sloId,omitempty" tf:"slo_id,omitempty"` + // Reference to a ServiceLevelObjective in slo to populate sloId. + // +kubebuilder:validation:Optional + SLOIDRef *v1.Reference `json:"sloIdRef,omitempty" tf:"-"` + + // Selector for a ServiceLevelObjective in slo to populate sloId. + // +kubebuilder:validation:Optional + SLOIDSelector *v1.Selector `json:"sloIdSelector,omitempty" tf:"-"` + // (Number) Starting time of the correction in epoch seconds. // Starting time of the correction in epoch seconds. // +kubebuilder:validation:Optional @@ -133,10 +147,10 @@ type SLOCorrectionParameters struct { Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` } -// SLOCorrectionSpec defines the desired state of SLOCorrection -type SLOCorrectionSpec struct { +// CorrectionSpec defines the desired state of Correction +type CorrectionSpec struct { v1.ResourceSpec `json:",inline"` - ForProvider SLOCorrectionParameters `json:"forProvider"` + ForProvider CorrectionParameters `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 @@ -147,52 +161,51 @@ type SLOCorrectionSpec 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 SLOCorrectionInitParameters `json:"initProvider,omitempty"` + InitProvider CorrectionInitParameters `json:"initProvider,omitempty"` } -// SLOCorrectionStatus defines the observed state of SLOCorrection. -type SLOCorrectionStatus struct { +// CorrectionStatus defines the observed state of Correction. +type CorrectionStatus struct { v1.ResourceStatus `json:",inline"` - AtProvider SLOCorrectionObservation `json:"atProvider,omitempty"` + AtProvider CorrectionObservation `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" +// Correction is the Schema for the Corrections API. Resource for interacting with the slo_correction API. // +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status" +// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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 { +type Correction 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"` + Spec CorrectionSpec `json:"spec"` + Status CorrectionStatus `json:"status,omitempty"` } // +kubebuilder:object:root=true -// SLOCorrectionList contains a list of SLOCorrections -type SLOCorrectionList struct { +// CorrectionList contains a list of Corrections +type CorrectionList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` - Items []SLOCorrection `json:"items"` + Items []Correction `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) + Correction_Kind = "Correction" + Correction_GroupKind = schema.GroupKind{Group: CRDGroup, Kind: Correction_Kind}.String() + Correction_KindAPIVersion = Correction_Kind + "." + CRDGroupVersion.String() + Correction_GroupVersionKind = CRDGroupVersion.WithKind(Correction_Kind) ) func init() { - SchemeBuilder.Register(&SLOCorrection{}, &SLOCorrectionList{}) + SchemeBuilder.Register(&Correction{}, &CorrectionList{}) } diff --git a/apis/slo/v1beta1/zz_generated.conversion_hubs.go b/apis/slo/v1beta1/zz_generated.conversion_hubs.go new file mode 100755 index 0000000..811ca59 --- /dev/null +++ b/apis/slo/v1beta1/zz_generated.conversion_hubs.go @@ -0,0 +1,13 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package v1beta1 + +// Hub marks this type as a conversion hub. +func (tr *Correction) Hub() {} + +// Hub marks this type as a conversion hub. +func (tr *ServiceLevelObjective) Hub() {} diff --git a/apis/slo/v1beta1/zz_generated.deepcopy.go b/apis/slo/v1beta1/zz_generated.deepcopy.go new file mode 100644 index 0000000..8313e61 --- /dev/null +++ b/apis/slo/v1beta1/zz_generated.deepcopy.go @@ -0,0 +1,1343 @@ +//go:build !ignore_autogenerated + +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1beta1 + +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 *Correction) DeepCopyInto(out *Correction) { + *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 Correction. +func (in *Correction) DeepCopy() *Correction { + if in == nil { + return nil + } + out := new(Correction) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Correction) 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 *CorrectionInitParameters) DeepCopyInto(out *CorrectionInitParameters) { + *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.SLOIDRef != nil { + in, out := &in.SLOIDRef, &out.SLOIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.SLOIDSelector != nil { + in, out := &in.SLOIDSelector, &out.SLOIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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 CorrectionInitParameters. +func (in *CorrectionInitParameters) DeepCopy() *CorrectionInitParameters { + if in == nil { + return nil + } + out := new(CorrectionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CorrectionList) DeepCopyInto(out *CorrectionList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Correction, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CorrectionList. +func (in *CorrectionList) DeepCopy() *CorrectionList { + if in == nil { + return nil + } + out := new(CorrectionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *CorrectionList) 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 *CorrectionObservation) DeepCopyInto(out *CorrectionObservation) { + *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 CorrectionObservation. +func (in *CorrectionObservation) DeepCopy() *CorrectionObservation { + if in == nil { + return nil + } + out := new(CorrectionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CorrectionParameters) DeepCopyInto(out *CorrectionParameters) { + *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.SLOIDRef != nil { + in, out := &in.SLOIDRef, &out.SLOIDRef + *out = new(v1.Reference) + (*in).DeepCopyInto(*out) + } + if in.SLOIDSelector != nil { + in, out := &in.SLOIDSelector, &out.SLOIDSelector + *out = new(v1.Selector) + (*in).DeepCopyInto(*out) + } + 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 CorrectionParameters. +func (in *CorrectionParameters) DeepCopy() *CorrectionParameters { + if in == nil { + return nil + } + out := new(CorrectionParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CorrectionSpec) DeepCopyInto(out *CorrectionSpec) { + *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 CorrectionSpec. +func (in *CorrectionSpec) DeepCopy() *CorrectionSpec { + if in == nil { + return nil + } + out := new(CorrectionSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CorrectionStatus) DeepCopyInto(out *CorrectionStatus) { + *out = *in + in.ResourceStatus.DeepCopyInto(&out.ResourceStatus) + in.AtProvider.DeepCopyInto(&out.AtProvider) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CorrectionStatus. +func (in *CorrectionStatus) DeepCopy() *CorrectionStatus { + if in == nil { + return nil + } + out := new(CorrectionStatus) + 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 *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 *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 = new(MetricQueryInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(MetricQueryObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(MetricQueryParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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 = new(QueryInitParameters) + (*in).DeepCopyInto(*out) + } + if in.SliSpecification != nil { + in, out := &in.SliSpecification, &out.SliSpecification + *out = new(SliSpecificationInitParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(QueryObservation) + (*in).DeepCopyInto(*out) + } + if in.SliSpecification != nil { + in, out := &in.SliSpecification, &out.SliSpecification + *out = new(SliSpecificationObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(QueryParameters) + (*in).DeepCopyInto(*out) + } + if in.SliSpecification != nil { + in, out := &in.SliSpecification, &out.SliSpecification + *out = new(SliSpecificationParameters) + (*in).DeepCopyInto(*out) + } + 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 *SliSpecificationInitParameters) DeepCopyInto(out *SliSpecificationInitParameters) { + *out = *in + if in.TimeSlice != nil { + in, out := &in.TimeSlice, &out.TimeSlice + *out = new(TimeSliceInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(TimeSliceObservation) + (*in).DeepCopyInto(*out) + } +} + +// 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 = new(TimeSliceParameters) + (*in).DeepCopyInto(*out) + } +} + +// 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 *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 = new(TimeSliceQueryInitParameters) + (*in).DeepCopyInto(*out) + } + if in.QueryIntervalSeconds != nil { + in, out := &in.QueryIntervalSeconds, &out.QueryIntervalSeconds + *out = new(float64) + **out = **in + } + 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 = new(TimeSliceQueryObservation) + (*in).DeepCopyInto(*out) + } + if in.QueryIntervalSeconds != nil { + in, out := &in.QueryIntervalSeconds, &out.QueryIntervalSeconds + *out = new(float64) + **out = **in + } + 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 = new(TimeSliceQueryParameters) + (*in).DeepCopyInto(*out) + } + if in.QueryIntervalSeconds != nil { + in, out := &in.QueryIntervalSeconds, &out.QueryIntervalSeconds + *out = new(float64) + **out = **in + } + 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 = new(FormulaInitParameters) + (*in).DeepCopyInto(*out) + } + 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 = new(FormulaObservation) + (*in).DeepCopyInto(*out) + } + 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 = new(FormulaParameters) + (*in).DeepCopyInto(*out) + } + 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 +} diff --git a/apis/slo/v1beta1/zz_generated.managed.go b/apis/slo/v1beta1/zz_generated.managed.go new file mode 100644 index 0000000..e856c32 --- /dev/null +++ b/apis/slo/v1beta1/zz_generated.managed.go @@ -0,0 +1,128 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + +// GetCondition of this Correction. +func (mg *Correction) GetCondition(ct xpv1.ConditionType) xpv1.Condition { + return mg.Status.GetCondition(ct) +} + +// GetDeletionPolicy of this Correction. +func (mg *Correction) GetDeletionPolicy() xpv1.DeletionPolicy { + return mg.Spec.DeletionPolicy +} + +// GetManagementPolicies of this Correction. +func (mg *Correction) GetManagementPolicies() xpv1.ManagementPolicies { + return mg.Spec.ManagementPolicies +} + +// GetProviderConfigReference of this Correction. +func (mg *Correction) GetProviderConfigReference() *xpv1.Reference { + return mg.Spec.ProviderConfigReference +} + +// GetPublishConnectionDetailsTo of this Correction. +func (mg *Correction) GetPublishConnectionDetailsTo() *xpv1.PublishConnectionDetailsTo { + return mg.Spec.PublishConnectionDetailsTo +} + +// GetWriteConnectionSecretToReference of this Correction. +func (mg *Correction) GetWriteConnectionSecretToReference() *xpv1.SecretReference { + return mg.Spec.WriteConnectionSecretToReference +} + +// SetConditions of this Correction. +func (mg *Correction) SetConditions(c ...xpv1.Condition) { + mg.Status.SetConditions(c...) +} + +// SetDeletionPolicy of this Correction. +func (mg *Correction) SetDeletionPolicy(r xpv1.DeletionPolicy) { + mg.Spec.DeletionPolicy = r +} + +// SetManagementPolicies of this Correction. +func (mg *Correction) SetManagementPolicies(r xpv1.ManagementPolicies) { + mg.Spec.ManagementPolicies = r +} + +// SetProviderConfigReference of this Correction. +func (mg *Correction) SetProviderConfigReference(r *xpv1.Reference) { + mg.Spec.ProviderConfigReference = r +} + +// SetPublishConnectionDetailsTo of this Correction. +func (mg *Correction) SetPublishConnectionDetailsTo(r *xpv1.PublishConnectionDetailsTo) { + mg.Spec.PublishConnectionDetailsTo = r +} + +// SetWriteConnectionSecretToReference of this Correction. +func (mg *Correction) 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 +} diff --git a/apis/slo/v1beta1/zz_generated.managedlist.go b/apis/slo/v1beta1/zz_generated.managedlist.go new file mode 100644 index 0000000..cc3f3c0 --- /dev/null +++ b/apis/slo/v1beta1/zz_generated.managedlist.go @@ -0,0 +1,26 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import resource "github.com/crossplane/crossplane-runtime/pkg/resource" + +// GetItems of this CorrectionList. +func (l *CorrectionList) 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 +} diff --git a/apis/slo/v1beta1/zz_generated.resolvers.go b/apis/slo/v1beta1/zz_generated.resolvers.go new file mode 100644 index 0000000..e489e27 --- /dev/null +++ b/apis/slo/v1beta1/zz_generated.resolvers.go @@ -0,0 +1,55 @@ +/* +Copyright 2022 Upbound Inc. +*/ +// Code generated by angryjet. DO NOT EDIT. + +package v1beta1 + +import ( + "context" + reference "github.com/crossplane/crossplane-runtime/pkg/reference" + errors "github.com/pkg/errors" + client "sigs.k8s.io/controller-runtime/pkg/client" +) + +// ResolveReferences of this Correction. +func (mg *Correction) ResolveReferences(ctx context.Context, c client.Reader) error { + r := reference.NewAPIResolver(c, mg) + + var rsp reference.ResolutionResponse + var err error + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.ForProvider.SLOID), + Extract: reference.ExternalName(), + Reference: mg.Spec.ForProvider.SLOIDRef, + Selector: mg.Spec.ForProvider.SLOIDSelector, + To: reference.To{ + List: &ServiceLevelObjectiveList{}, + Managed: &ServiceLevelObjective{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.ForProvider.SLOID") + } + mg.Spec.ForProvider.SLOID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.ForProvider.SLOIDRef = rsp.ResolvedReference + + rsp, err = r.Resolve(ctx, reference.ResolutionRequest{ + CurrentValue: reference.FromPtrValue(mg.Spec.InitProvider.SLOID), + Extract: reference.ExternalName(), + Reference: mg.Spec.InitProvider.SLOIDRef, + Selector: mg.Spec.InitProvider.SLOIDSelector, + To: reference.To{ + List: &ServiceLevelObjectiveList{}, + Managed: &ServiceLevelObjective{}, + }, + }) + if err != nil { + return errors.Wrap(err, "mg.Spec.InitProvider.SLOID") + } + mg.Spec.InitProvider.SLOID = reference.ToPtrValue(rsp.ResolvedValue) + mg.Spec.InitProvider.SLOIDRef = rsp.ResolvedReference + + return nil +} diff --git a/apis/slo/v1beta1/zz_groupversion_info.go b/apis/slo/v1beta1/zz_groupversion_info.go new file mode 100755 index 0000000..312955d --- /dev/null +++ b/apis/slo/v1beta1/zz_groupversion_info.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +// +kubebuilder:object:generate=true +// +groupName=slo.datadog.upbound.io +// +versionName=v1beta1 +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +// Package type metadata. +const ( + CRDGroup = "slo.datadog.upbound.io" + CRDVersion = "v1beta1" +) + +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_servicelevelobjective_terraformed.go b/apis/slo/v1beta1/zz_servicelevelobjective_terraformed.go similarity index 96% rename from apis/datadog/v1alpha1/zz_servicelevelobjective_terraformed.go rename to apis/slo/v1beta1/zz_servicelevelobjective_terraformed.go index 6bd57e3..992f69f 100755 --- a/apis/datadog/v1alpha1/zz_servicelevelobjective_terraformed.go +++ b/apis/slo/v1beta1/zz_servicelevelobjective_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/datadog/v1alpha1/zz_servicelevelobjective_types.go b/apis/slo/v1beta1/zz_servicelevelobjective_types.go similarity index 85% rename from apis/datadog/v1alpha1/zz_servicelevelobjective_types.go rename to apis/slo/v1beta1/zz_servicelevelobjective_types.go index 9708af6..ffaa64d 100755 --- a/apis/datadog/v1alpha1/zz_servicelevelobjective_types.go +++ b/apis/slo/v1beta1/zz_servicelevelobjective_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -126,14 +122,14 @@ 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"` + 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"` + MetricQuery *MetricQueryObservation `json:"metricQuery,omitempty" tf:"metric_query,omitempty"` } type QueryQueryParameters struct { @@ -141,7 +137,7 @@ 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"` + MetricQuery *MetricQueryParameters `json:"metricQuery,omitempty" tf:"metric_query,omitempty"` } type ServiceLevelObjectiveInitParameters struct { @@ -170,14 +166,14 @@ type ServiceLevelObjectiveInitParameters struct { // (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"` + 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"` + 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 + // (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. If default tags are present at the provider level, they will be added to this resource. + // 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. If default tags are present at the provider level, they will be added to this resource. // +listType=set Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` @@ -197,8 +193,8 @@ type ServiceLevelObjectiveInitParameters struct { // 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. + // (Boolean) Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. + // Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. 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. @@ -235,14 +231,14 @@ type ServiceLevelObjectiveObservation struct { // (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"` + 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"` + 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 + // (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. If default tags are present at the provider level, they will be added to this resource. + // 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. If default tags are present at the provider level, they will be added to this resource. // +listType=set Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` @@ -262,8 +258,8 @@ type ServiceLevelObjectiveObservation struct { // 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. + // (Boolean) Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. + // Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. 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. @@ -303,15 +299,15 @@ type ServiceLevelObjectiveParameters struct { // (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"` + 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"` + 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 + // (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. If default tags are present at the provider level, they will be added to this resource. + // 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. If default tags are present at the provider level, they will be added to this resource. // +kubebuilder:validation:Optional // +listType=set Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` @@ -336,8 +332,8 @@ type ServiceLevelObjectiveParameters struct { // +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. + // (Boolean) Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. + // Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. // +kubebuilder:validation:Optional Validate *bool `json:"validate,omitempty" tf:"validate,omitempty"` @@ -349,24 +345,24 @@ type ServiceLevelObjectiveParameters struct { 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"` + // (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. Optionally, a fourth part, the query interval, can be provided. (see below for nested schema) + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. Optionally, a fourth part, the query interval, can be provided. + 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"` + // (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. Optionally, a fourth part, the query interval, can be provided. (see below for nested schema) + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. Optionally, a fourth part, the query interval, can be provided. + 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. + // (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. Optionally, a fourth part, the query interval, can be provided. (see below for nested schema) + // The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. Optionally, a fourth part, the query interval, can be provided. // +kubebuilder:validation:Optional - TimeSlice []TimeSliceParameters `json:"timeSlice" tf:"time_slice,omitempty"` + TimeSlice *TimeSliceParameters `json:"timeSlice" tf:"time_slice,omitempty"` } type ThresholdsInitParameters struct { @@ -433,7 +429,11 @@ type TimeSliceInitParameters struct { // (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"` + Query *TimeSliceQueryInitParameters `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. + // The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`. + QueryIntervalSeconds *float64 `json:"queryIntervalSeconds,omitempty" tf:"query_interval_seconds,omitempty"` // (Number) The threshold value to which each SLI value will be compared. // The threshold value to which each SLI value will be compared. @@ -448,7 +448,11 @@ type TimeSliceObservation struct { // (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"` + Query *TimeSliceQueryObservation `json:"query,omitempty" tf:"query,omitempty"` + + // (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. + // The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`. + QueryIntervalSeconds *float64 `json:"queryIntervalSeconds,omitempty" tf:"query_interval_seconds,omitempty"` // (Number) The threshold value to which each SLI value will be compared. // The threshold value to which each SLI value will be compared. @@ -465,7 +469,12 @@ type TimeSliceParameters struct { // (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"` + Query *TimeSliceQueryParameters `json:"query" tf:"query,omitempty"` + + // (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. + // The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`. + // +kubebuilder:validation:Optional + QueryIntervalSeconds *float64 `json:"queryIntervalSeconds,omitempty" tf:"query_interval_seconds,omitempty"` // (Number) The threshold value to which each SLI value will be compared. // The threshold value to which each SLI value will be compared. @@ -477,7 +486,7 @@ 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"` + 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. @@ -488,7 +497,7 @@ 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"` + 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. @@ -500,7 +509,7 @@ 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"` + 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. @@ -536,8 +545,8 @@ type ServiceLevelObjectiveStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/synthetics/v1alpha1/zz_concurrencycap_terraformed.go b/apis/synthetics/v1beta1/zz_concurrencycap_terraformed.go similarity index 96% rename from apis/synthetics/v1alpha1/zz_concurrencycap_terraformed.go rename to apis/synthetics/v1beta1/zz_concurrencycap_terraformed.go index 0dfdfd7..ab18f0d 100755 --- a/apis/synthetics/v1alpha1/zz_concurrencycap_terraformed.go +++ b/apis/synthetics/v1beta1/zz_concurrencycap_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" diff --git a/apis/synthetics/v1alpha1/zz_concurrencycap_types.go b/apis/synthetics/v1beta1/zz_concurrencycap_types.go similarity index 92% rename from apis/synthetics/v1alpha1/zz_concurrencycap_types.go rename to apis/synthetics/v1beta1/zz_concurrencycap_types.go index 3c9775b..2925bf2 100755 --- a/apis/synthetics/v1alpha1/zz_concurrencycap_types.go +++ b/apis/synthetics/v1beta1/zz_concurrencycap_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,8 +15,8 @@ import ( 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. + // demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. + // Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. OnDemandConcurrencyCap *float64 `json:"onDemandConcurrencyCap,omitempty" tf:"on_demand_concurrency_cap,omitempty"` } @@ -29,15 +25,15 @@ 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. + // demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. + // Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. 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. + // demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. + // Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. // +kubebuilder:validation:Optional OnDemandConcurrencyCap *float64 `json:"onDemandConcurrencyCap,omitempty" tf:"on_demand_concurrency_cap,omitempty"` } @@ -70,8 +66,8 @@ type ConcurrencyCapStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/synthetics/v1alpha1/zz_generated.conversion_hubs.go b/apis/synthetics/v1beta1/zz_generated.conversion_hubs.go similarity index 73% rename from apis/synthetics/v1alpha1/zz_generated.conversion_hubs.go rename to apis/synthetics/v1beta1/zz_generated.conversion_hubs.go index d271874..ef104c3 100755 --- a/apis/synthetics/v1alpha1/zz_generated.conversion_hubs.go +++ b/apis/synthetics/v1beta1/zz_generated.conversion_hubs.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 // Hub marks this type as a conversion hub. func (tr *ConcurrencyCap) Hub() {} diff --git a/apis/synthetics/v1alpha1/zz_generated.deepcopy.go b/apis/synthetics/v1beta1/zz_generated.deepcopy.go similarity index 65% rename from apis/synthetics/v1alpha1/zz_generated.deepcopy.go rename to apis/synthetics/v1beta1/zz_generated.deepcopy.go index 9ad36b6..40e6e15 100644 --- a/apis/synthetics/v1alpha1/zz_generated.deepcopy.go +++ b/apis/synthetics/v1beta1/zz_generated.deepcopy.go @@ -6,7 +6,7 @@ Copyright 2022 Upbound Inc. // Code generated by controller-gen. DO NOT EDIT. -package v1alpha1 +package v1beta1 import ( "github.com/crossplane/crossplane-runtime/apis/common/v1" @@ -28,6 +28,11 @@ func (in *APIStepInitParameters) DeepCopyInto(out *APIStepInitParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ExitIfSucceed != nil { + in, out := &in.ExitIfSucceed, &out.ExitIfSucceed + *out = new(bool) + **out = **in + } if in.ExtractedValue != nil { in, out := &in.ExtractedValue, &out.ExtractedValue *out = make([]ExtractedValueInitParameters, len(*in)) @@ -35,6 +40,11 @@ func (in *APIStepInitParameters) DeepCopyInto(out *APIStepInitParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ExtractedValuesFromScript != nil { + in, out := &in.ExtractedValuesFromScript, &out.ExtractedValuesFromScript + *out = new(string) + **out = **in + } if in.IsCritical != nil { in, out := &in.IsCritical, &out.IsCritical *out = new(bool) @@ -47,21 +57,22 @@ func (in *APIStepInitParameters) DeepCopyInto(out *APIStepInitParameters) { } if in.RequestBasicauth != nil { in, out := &in.RequestBasicauth, &out.RequestBasicauth - *out = make([]RequestBasicauthInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestBasicauthInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestClientCertificate != nil { in, out := &in.RequestClientCertificate, &out.RequestClientCertificate - *out = make([]RequestClientCertificateInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestDefinition != nil { in, out := &in.RequestDefinition, &out.RequestDefinition - *out = make([]RequestDefinitionInitParameters, len(*in)) + *out = new(RequestDefinitionInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RequestFile != nil { + in, out := &in.RequestFile, &out.RequestFile + *out = make([]RequestFileInitParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -82,12 +93,26 @@ func (in *APIStepInitParameters) DeepCopyInto(out *APIStepInitParameters) { (*out)[key] = outVal } } + if in.RequestMetadata != nil { + in, out := &in.RequestMetadata, &out.RequestMetadata + *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 + } + } if in.RequestProxy != nil { in, out := &in.RequestProxy, &out.RequestProxy - *out = make([]RequestProxyInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestProxyInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestQuery != nil { in, out := &in.RequestQuery, &out.RequestQuery @@ -107,16 +132,19 @@ func (in *APIStepInitParameters) DeepCopyInto(out *APIStepInitParameters) { } if in.Retry != nil { in, out := &in.Retry, &out.Retry - *out = make([]RetryInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RetryInitParameters) + (*in).DeepCopyInto(*out) } if in.Subtype != nil { in, out := &in.Subtype, &out.Subtype *out = new(string) **out = **in } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(float64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIStepInitParameters. @@ -144,6 +172,11 @@ func (in *APIStepObservation) DeepCopyInto(out *APIStepObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ExitIfSucceed != nil { + in, out := &in.ExitIfSucceed, &out.ExitIfSucceed + *out = new(bool) + **out = **in + } if in.ExtractedValue != nil { in, out := &in.ExtractedValue, &out.ExtractedValue *out = make([]ExtractedValueObservation, len(*in)) @@ -151,6 +184,11 @@ func (in *APIStepObservation) DeepCopyInto(out *APIStepObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ExtractedValuesFromScript != nil { + in, out := &in.ExtractedValuesFromScript, &out.ExtractedValuesFromScript + *out = new(string) + **out = **in + } if in.IsCritical != nil { in, out := &in.IsCritical, &out.IsCritical *out = new(bool) @@ -163,21 +201,22 @@ func (in *APIStepObservation) DeepCopyInto(out *APIStepObservation) { } if in.RequestBasicauth != nil { in, out := &in.RequestBasicauth, &out.RequestBasicauth - *out = make([]RequestBasicauthObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestBasicauthObservation) + (*in).DeepCopyInto(*out) } if in.RequestClientCertificate != nil { in, out := &in.RequestClientCertificate, &out.RequestClientCertificate - *out = make([]RequestClientCertificateObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateObservation) + (*in).DeepCopyInto(*out) } if in.RequestDefinition != nil { in, out := &in.RequestDefinition, &out.RequestDefinition - *out = make([]RequestDefinitionObservation, len(*in)) + *out = new(RequestDefinitionObservation) + (*in).DeepCopyInto(*out) + } + if in.RequestFile != nil { + in, out := &in.RequestFile, &out.RequestFile + *out = make([]RequestFileObservation, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -198,12 +237,26 @@ func (in *APIStepObservation) DeepCopyInto(out *APIStepObservation) { (*out)[key] = outVal } } + if in.RequestMetadata != nil { + in, out := &in.RequestMetadata, &out.RequestMetadata + *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 + } + } if in.RequestProxy != nil { in, out := &in.RequestProxy, &out.RequestProxy - *out = make([]RequestProxyObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestProxyObservation) + (*in).DeepCopyInto(*out) } if in.RequestQuery != nil { in, out := &in.RequestQuery, &out.RequestQuery @@ -223,16 +276,19 @@ func (in *APIStepObservation) DeepCopyInto(out *APIStepObservation) { } if in.Retry != nil { in, out := &in.Retry, &out.Retry - *out = make([]RetryObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RetryObservation) + (*in).DeepCopyInto(*out) } if in.Subtype != nil { in, out := &in.Subtype, &out.Subtype *out = new(string) **out = **in } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(float64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIStepObservation. @@ -260,6 +316,11 @@ func (in *APIStepParameters) DeepCopyInto(out *APIStepParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ExitIfSucceed != nil { + in, out := &in.ExitIfSucceed, &out.ExitIfSucceed + *out = new(bool) + **out = **in + } if in.ExtractedValue != nil { in, out := &in.ExtractedValue, &out.ExtractedValue *out = make([]ExtractedValueParameters, len(*in)) @@ -267,6 +328,11 @@ func (in *APIStepParameters) DeepCopyInto(out *APIStepParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ExtractedValuesFromScript != nil { + in, out := &in.ExtractedValuesFromScript, &out.ExtractedValuesFromScript + *out = new(string) + **out = **in + } if in.IsCritical != nil { in, out := &in.IsCritical, &out.IsCritical *out = new(bool) @@ -279,21 +345,22 @@ func (in *APIStepParameters) DeepCopyInto(out *APIStepParameters) { } if in.RequestBasicauth != nil { in, out := &in.RequestBasicauth, &out.RequestBasicauth - *out = make([]RequestBasicauthParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestBasicauthParameters) + (*in).DeepCopyInto(*out) } if in.RequestClientCertificate != nil { in, out := &in.RequestClientCertificate, &out.RequestClientCertificate - *out = make([]RequestClientCertificateParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateParameters) + (*in).DeepCopyInto(*out) } if in.RequestDefinition != nil { in, out := &in.RequestDefinition, &out.RequestDefinition - *out = make([]RequestDefinitionParameters, len(*in)) + *out = new(RequestDefinitionParameters) + (*in).DeepCopyInto(*out) + } + if in.RequestFile != nil { + in, out := &in.RequestFile, &out.RequestFile + *out = make([]RequestFileParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -314,12 +381,26 @@ func (in *APIStepParameters) DeepCopyInto(out *APIStepParameters) { (*out)[key] = outVal } } + if in.RequestMetadata != nil { + in, out := &in.RequestMetadata, &out.RequestMetadata + *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 + } + } if in.RequestProxy != nil { in, out := &in.RequestProxy, &out.RequestProxy - *out = make([]RequestProxyParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestProxyParameters) + (*in).DeepCopyInto(*out) } if in.RequestQuery != nil { in, out := &in.RequestQuery, &out.RequestQuery @@ -339,16 +420,19 @@ func (in *APIStepParameters) DeepCopyInto(out *APIStepParameters) { } if in.Retry != nil { in, out := &in.Retry, &out.Retry - *out = make([]RetryParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RetryParameters) + (*in).DeepCopyInto(*out) } if in.Subtype != nil { in, out := &in.Subtype, &out.Subtype *out = new(string) **out = **in } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(float64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIStepParameters. @@ -364,6 +448,11 @@ func (in *APIStepParameters) DeepCopy() *APIStepParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionInitParameters) DeepCopyInto(out *AssertionInitParameters) { *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } if in.Operator != nil { in, out := &in.Operator, &out.Operator *out = new(string) @@ -381,17 +470,18 @@ func (in *AssertionInitParameters) DeepCopyInto(out *AssertionInitParameters) { } if in.Targetjsonpath != nil { in, out := &in.Targetjsonpath, &out.Targetjsonpath - *out = make([]TargetjsonpathInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TargetjsonpathInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Targetjsonschema != nil { + in, out := &in.Targetjsonschema, &out.Targetjsonschema + *out = new(TargetjsonschemaInitParameters) + (*in).DeepCopyInto(*out) } if in.Targetxpath != nil { in, out := &in.Targetxpath, &out.Targetxpath - *out = make([]TargetxpathInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TargetxpathInitParameters) + (*in).DeepCopyInto(*out) } if in.TimingsScope != nil { in, out := &in.TimingsScope, &out.TimingsScope @@ -418,6 +508,11 @@ func (in *AssertionInitParameters) DeepCopy() *AssertionInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionObservation) DeepCopyInto(out *AssertionObservation) { *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } if in.Operator != nil { in, out := &in.Operator, &out.Operator *out = new(string) @@ -435,17 +530,18 @@ func (in *AssertionObservation) DeepCopyInto(out *AssertionObservation) { } if in.Targetjsonpath != nil { in, out := &in.Targetjsonpath, &out.Targetjsonpath - *out = make([]TargetjsonpathObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TargetjsonpathObservation) + (*in).DeepCopyInto(*out) + } + if in.Targetjsonschema != nil { + in, out := &in.Targetjsonschema, &out.Targetjsonschema + *out = new(TargetjsonschemaObservation) + (*in).DeepCopyInto(*out) } if in.Targetxpath != nil { in, out := &in.Targetxpath, &out.Targetxpath - *out = make([]TargetxpathObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TargetxpathObservation) + (*in).DeepCopyInto(*out) } if in.TimingsScope != nil { in, out := &in.TimingsScope, &out.TimingsScope @@ -472,6 +568,11 @@ func (in *AssertionObservation) DeepCopy() *AssertionObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionParameters) DeepCopyInto(out *AssertionParameters) { *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } if in.Operator != nil { in, out := &in.Operator, &out.Operator *out = new(string) @@ -489,17 +590,18 @@ func (in *AssertionParameters) DeepCopyInto(out *AssertionParameters) { } if in.Targetjsonpath != nil { in, out := &in.Targetjsonpath, &out.Targetjsonpath - *out = make([]TargetjsonpathParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TargetjsonpathParameters) + (*in).DeepCopyInto(*out) + } + if in.Targetjsonschema != nil { + in, out := &in.Targetjsonschema, &out.Targetjsonschema + *out = new(TargetjsonschemaParameters) + (*in).DeepCopyInto(*out) } if in.Targetxpath != nil { in, out := &in.Targetxpath, &out.Targetxpath - *out = make([]TargetxpathParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TargetxpathParameters) + (*in).DeepCopyInto(*out) } if in.TimingsScope != nil { in, out := &in.TimingsScope, &out.TimingsScope @@ -526,6 +628,11 @@ func (in *AssertionParameters) DeepCopy() *AssertionParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionTargetjsonpathInitParameters) DeepCopyInto(out *AssertionTargetjsonpathInitParameters) { *out = *in + if in.Elementsoperator != nil { + in, out := &in.Elementsoperator, &out.Elementsoperator + *out = new(string) + **out = **in + } if in.Jsonpath != nil { in, out := &in.Jsonpath, &out.Jsonpath *out = new(string) @@ -556,6 +663,11 @@ func (in *AssertionTargetjsonpathInitParameters) DeepCopy() *AssertionTargetjson // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionTargetjsonpathObservation) DeepCopyInto(out *AssertionTargetjsonpathObservation) { *out = *in + if in.Elementsoperator != nil { + in, out := &in.Elementsoperator, &out.Elementsoperator + *out = new(string) + **out = **in + } if in.Jsonpath != nil { in, out := &in.Jsonpath, &out.Jsonpath *out = new(string) @@ -586,6 +698,11 @@ func (in *AssertionTargetjsonpathObservation) DeepCopy() *AssertionTargetjsonpat // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionTargetjsonpathParameters) DeepCopyInto(out *AssertionTargetjsonpathParameters) { *out = *in + if in.Elementsoperator != nil { + in, out := &in.Elementsoperator, &out.Elementsoperator + *out = new(string) + **out = **in + } if in.Jsonpath != nil { in, out := &in.Jsonpath, &out.Jsonpath *out = new(string) @@ -613,6 +730,81 @@ func (in *AssertionTargetjsonpathParameters) DeepCopy() *AssertionTargetjsonpath return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AssertionTargetjsonschemaInitParameters) DeepCopyInto(out *AssertionTargetjsonschemaInitParameters) { + *out = *in + if in.Jsonschema != nil { + in, out := &in.Jsonschema, &out.Jsonschema + *out = new(string) + **out = **in + } + if in.Metaschema != nil { + in, out := &in.Metaschema, &out.Metaschema + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AssertionTargetjsonschemaInitParameters. +func (in *AssertionTargetjsonschemaInitParameters) DeepCopy() *AssertionTargetjsonschemaInitParameters { + if in == nil { + return nil + } + out := new(AssertionTargetjsonschemaInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AssertionTargetjsonschemaObservation) DeepCopyInto(out *AssertionTargetjsonschemaObservation) { + *out = *in + if in.Jsonschema != nil { + in, out := &in.Jsonschema, &out.Jsonschema + *out = new(string) + **out = **in + } + if in.Metaschema != nil { + in, out := &in.Metaschema, &out.Metaschema + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AssertionTargetjsonschemaObservation. +func (in *AssertionTargetjsonschemaObservation) DeepCopy() *AssertionTargetjsonschemaObservation { + if in == nil { + return nil + } + out := new(AssertionTargetjsonschemaObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AssertionTargetjsonschemaParameters) DeepCopyInto(out *AssertionTargetjsonschemaParameters) { + *out = *in + if in.Jsonschema != nil { + in, out := &in.Jsonschema, &out.Jsonschema + *out = new(string) + **out = **in + } + if in.Metaschema != nil { + in, out := &in.Metaschema, &out.Metaschema + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AssertionTargetjsonschemaParameters. +func (in *AssertionTargetjsonschemaParameters) DeepCopy() *AssertionTargetjsonschemaParameters { + if in == nil { + return nil + } + out := new(AssertionTargetjsonschemaParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AssertionTargetxpathInitParameters) DeepCopyInto(out *AssertionTargetxpathInitParameters) { *out = *in @@ -704,46 +896,152 @@ func (in *AssertionTargetxpathParameters) DeepCopy() *AssertionTargetxpathParame } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BrowserStepInitParameters) DeepCopyInto(out *BrowserStepInitParameters) { +func (in *BindingsInitParameters) DeepCopyInto(out *BindingsInitParameters) { *out = *in - if in.AllowFailure != nil { - in, out := &in.AllowFailure, &out.AllowFailure - *out = new(bool) - **out = **in - } - if in.ForceElementUpdate != nil { - in, out := &in.ForceElementUpdate, &out.ForceElementUpdate - *out = new(bool) - **out = **in - } - if in.IsCritical != nil { - in, out := &in.IsCritical, &out.IsCritical - *out = new(bool) - **out = **in - } - if in.Name != nil { - in, out := &in.Name, &out.Name - *out = new(string) - **out = **in - } - if in.NoScreenshot != nil { - in, out := &in.NoScreenshot, &out.NoScreenshot - *out = new(bool) - **out = **in - } - if in.Params != nil { - in, out := &in.Params, &out.Params - *out = make([]ParamsInitParameters, len(*in)) + if in.Principals != nil { + in, out := &in.Principals, &out.Principals + *out = make([]*string, len(*in)) for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } } } - if in.Timeout != nil { - in, out := &in.Timeout, &out.Timeout - *out = new(float64) + if in.Relation != nil { + in, out := &in.Relation, &out.Relation + *out = new(string) **out = **in } - if in.Type != nil { +} + +// 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 *BrowserStepInitParameters) DeepCopyInto(out *BrowserStepInitParameters) { + *out = *in + if in.AllowFailure != nil { + in, out := &in.AllowFailure, &out.AllowFailure + *out = new(bool) + **out = **in + } + if in.AlwaysExecute != nil { + in, out := &in.AlwaysExecute, &out.AlwaysExecute + *out = new(bool) + **out = **in + } + if in.ExitIfSucceed != nil { + in, out := &in.ExitIfSucceed, &out.ExitIfSucceed + *out = new(bool) + **out = **in + } + if in.ForceElementUpdate != nil { + in, out := &in.ForceElementUpdate, &out.ForceElementUpdate + *out = new(bool) + **out = **in + } + if in.IsCritical != nil { + in, out := &in.IsCritical, &out.IsCritical + *out = new(bool) + **out = **in + } + if in.LocalKey != nil { + in, out := &in.LocalKey, &out.LocalKey + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *out = new(bool) + **out = **in + } + if in.Params != nil { + in, out := &in.Params, &out.Params + *out = new(ParamsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *out = new(float64) + **out = **in + } + if in.Type != nil { in, out := &in.Type, &out.Type *out = new(string) **out = **in @@ -768,6 +1066,16 @@ func (in *BrowserStepObservation) DeepCopyInto(out *BrowserStepObservation) { *out = new(bool) **out = **in } + if in.AlwaysExecute != nil { + in, out := &in.AlwaysExecute, &out.AlwaysExecute + *out = new(bool) + **out = **in + } + if in.ExitIfSucceed != nil { + in, out := &in.ExitIfSucceed, &out.ExitIfSucceed + *out = new(bool) + **out = **in + } if in.ForceElementUpdate != nil { in, out := &in.ForceElementUpdate, &out.ForceElementUpdate *out = new(bool) @@ -778,6 +1086,11 @@ func (in *BrowserStepObservation) DeepCopyInto(out *BrowserStepObservation) { *out = new(bool) **out = **in } + if in.LocalKey != nil { + in, out := &in.LocalKey, &out.LocalKey + *out = new(string) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -790,10 +1103,13 @@ func (in *BrowserStepObservation) DeepCopyInto(out *BrowserStepObservation) { } if in.Params != nil { in, out := &in.Params, &out.Params - *out = make([]ParamsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ParamsObservation) + (*in).DeepCopyInto(*out) + } + if in.PublicID != nil { + in, out := &in.PublicID, &out.PublicID + *out = new(string) + **out = **in } if in.Timeout != nil { in, out := &in.Timeout, &out.Timeout @@ -825,6 +1141,16 @@ func (in *BrowserStepParameters) DeepCopyInto(out *BrowserStepParameters) { *out = new(bool) **out = **in } + if in.AlwaysExecute != nil { + in, out := &in.AlwaysExecute, &out.AlwaysExecute + *out = new(bool) + **out = **in + } + if in.ExitIfSucceed != nil { + in, out := &in.ExitIfSucceed, &out.ExitIfSucceed + *out = new(bool) + **out = **in + } if in.ForceElementUpdate != nil { in, out := &in.ForceElementUpdate, &out.ForceElementUpdate *out = new(bool) @@ -835,6 +1161,11 @@ func (in *BrowserStepParameters) DeepCopyInto(out *BrowserStepParameters) { *out = new(bool) **out = **in } + if in.LocalKey != nil { + in, out := &in.LocalKey, &out.LocalKey + *out = new(string) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -847,10 +1178,8 @@ func (in *BrowserStepParameters) DeepCopyInto(out *BrowserStepParameters) { } if in.Params != nil { in, out := &in.Params, &out.Params - *out = make([]ParamsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ParamsParameters) + (*in).DeepCopyInto(*out) } if in.Timeout != nil { in, out := &in.Timeout, &out.Timeout @@ -1012,6 +1341,7 @@ func (in *BrowserVariableParameters) DeepCopy() *BrowserVariableParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CertInitParameters) DeepCopyInto(out *CertInitParameters) { *out = *in + out.ContentSecretRef = in.ContentSecretRef if in.Filename != nil { in, out := &in.Filename, &out.Filename *out = new(string) @@ -1425,154 +1755,342 @@ func (in *ConfigVariableParameters) DeepCopy() *ConfigVariableParameters { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ElementUserLocatorInitParameters) DeepCopyInto(out *ElementUserLocatorInitParameters) { +func (in *ElementInitParameters) DeepCopyInto(out *ElementInitParameters) { *out = *in - if in.FailTestOnCannotLocate != nil { - in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate - *out = new(bool) + if in.Context != nil { + in, out := &in.Context, &out.Context + *out = new(string) **out = **in } - if in.Value != nil { - in, out := &in.Value, &out.Value - *out = make([]ValueInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementUserLocatorInitParameters. -func (in *ElementUserLocatorInitParameters) DeepCopy() *ElementUserLocatorInitParameters { - if in == nil { - return nil + if in.ContextType != nil { + in, out := &in.ContextType, &out.ContextType + *out = new(string) + **out = **in } - out := new(ElementUserLocatorInitParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ElementUserLocatorObservation) DeepCopyInto(out *ElementUserLocatorObservation) { - *out = *in - if in.FailTestOnCannotLocate != nil { - in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate - *out = new(bool) + if in.ElementDescription != nil { + in, out := &in.ElementDescription, &out.ElementDescription + *out = new(string) **out = **in } - if in.Value != nil { - in, out := &in.Value, &out.Value - *out = make([]ValueObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) + if in.MultiLocator != nil { + in, out := &in.MultiLocator, &out.MultiLocator + *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 ElementUserLocatorObservation. -func (in *ElementUserLocatorObservation) DeepCopy() *ElementUserLocatorObservation { - if in == nil { - return nil + if in.RelativePosition != nil { + in, out := &in.RelativePosition, &out.RelativePosition + *out = new(RelativePositionInitParameters) + (*in).DeepCopyInto(*out) } - out := new(ElementUserLocatorObservation) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ElementUserLocatorParameters) DeepCopyInto(out *ElementUserLocatorParameters) { - *out = *in - if in.FailTestOnCannotLocate != nil { - in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate - *out = new(bool) + if in.TextContent != nil { + in, out := &in.TextContent, &out.TextContent + *out = new(string) **out = **in } - if in.Value != nil { - in, out := &in.Value, &out.Value - *out = make([]ValueParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.UserLocator != nil { + in, out := &in.UserLocator, &out.UserLocator + *out = new(UserLocatorInitParameters) + (*in).DeepCopyInto(*out) + } + if in.ViewName != nil { + in, out := &in.ViewName, &out.ViewName + *out = new(string) + **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementUserLocatorParameters. -func (in *ElementUserLocatorParameters) DeepCopy() *ElementUserLocatorParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementInitParameters. +func (in *ElementInitParameters) DeepCopy() *ElementInitParameters { if in == nil { return nil } - out := new(ElementUserLocatorParameters) + out := new(ElementInitParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ExtractedValueInitParameters) DeepCopyInto(out *ExtractedValueInitParameters) { +func (in *ElementObservation) DeepCopyInto(out *ElementObservation) { *out = *in - if in.Field != nil { - in, out := &in.Field, &out.Field + if in.Context != nil { + in, out := &in.Context, &out.Context *out = new(string) **out = **in } - if in.Name != nil { - in, out := &in.Name, &out.Name + if in.ContextType != nil { + in, out := &in.ContextType, &out.ContextType *out = new(string) **out = **in } - if in.Parser != nil { - in, out := &in.Parser, &out.Parser - *out = make([]ExtractedValueParserInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) + if in.ElementDescription != nil { + in, out := &in.ElementDescription, &out.ElementDescription + *out = new(string) + **out = **in + } + if in.MultiLocator != nil { + in, out := &in.MultiLocator, &out.MultiLocator + *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 } } - if in.Secure != nil { - in, out := &in.Secure, &out.Secure - *out = new(bool) + if in.RelativePosition != nil { + in, out := &in.RelativePosition, &out.RelativePosition + *out = new(RelativePositionObservation) + (*in).DeepCopyInto(*out) + } + if in.TextContent != nil { + in, out := &in.TextContent, &out.TextContent + *out = new(string) **out = **in } - if in.Type != nil { - in, out := &in.Type, &out.Type + if in.UserLocator != nil { + in, out := &in.UserLocator, &out.UserLocator + *out = new(UserLocatorObservation) + (*in).DeepCopyInto(*out) + } + if in.ViewName != nil { + in, out := &in.ViewName, &out.ViewName *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtractedValueInitParameters. -func (in *ExtractedValueInitParameters) DeepCopy() *ExtractedValueInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementObservation. +func (in *ElementObservation) DeepCopy() *ElementObservation { if in == nil { return nil } - out := new(ExtractedValueInitParameters) + out := new(ElementObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ExtractedValueObservation) DeepCopyInto(out *ExtractedValueObservation) { +func (in *ElementParameters) DeepCopyInto(out *ElementParameters) { *out = *in - if in.Field != nil { - in, out := &in.Field, &out.Field + if in.Context != nil { + in, out := &in.Context, &out.Context *out = new(string) **out = **in } - if in.Name != nil { - in, out := &in.Name, &out.Name + if in.ContextType != nil { + in, out := &in.ContextType, &out.ContextType *out = new(string) **out = **in } - if in.Parser != nil { - in, out := &in.Parser, &out.Parser - *out = make([]ExtractedValueParserObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Secure != nil { - in, out := &in.Secure, &out.Secure - *out = new(bool) + if in.ElementDescription != nil { + in, out := &in.ElementDescription, &out.ElementDescription + *out = new(string) **out = **in } - if in.Type != nil { + if in.MultiLocator != nil { + in, out := &in.MultiLocator, &out.MultiLocator + *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 + } + } + if in.RelativePosition != nil { + in, out := &in.RelativePosition, &out.RelativePosition + *out = new(RelativePositionParameters) + (*in).DeepCopyInto(*out) + } + if in.TextContent != nil { + in, out := &in.TextContent, &out.TextContent + *out = new(string) + **out = **in + } + if in.UserLocator != nil { + in, out := &in.UserLocator, &out.UserLocator + *out = new(UserLocatorParameters) + (*in).DeepCopyInto(*out) + } + if in.ViewName != nil { + in, out := &in.ViewName, &out.ViewName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementParameters. +func (in *ElementParameters) DeepCopy() *ElementParameters { + if in == nil { + return nil + } + out := new(ElementParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ElementUserLocatorInitParameters) DeepCopyInto(out *ElementUserLocatorInitParameters) { + *out = *in + if in.FailTestOnCannotLocate != nil { + in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate + *out = new(bool) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(ValueInitParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementUserLocatorInitParameters. +func (in *ElementUserLocatorInitParameters) DeepCopy() *ElementUserLocatorInitParameters { + if in == nil { + return nil + } + out := new(ElementUserLocatorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ElementUserLocatorObservation) DeepCopyInto(out *ElementUserLocatorObservation) { + *out = *in + if in.FailTestOnCannotLocate != nil { + in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate + *out = new(bool) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(ValueObservation) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementUserLocatorObservation. +func (in *ElementUserLocatorObservation) DeepCopy() *ElementUserLocatorObservation { + if in == nil { + return nil + } + out := new(ElementUserLocatorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ElementUserLocatorParameters) DeepCopyInto(out *ElementUserLocatorParameters) { + *out = *in + if in.FailTestOnCannotLocate != nil { + in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate + *out = new(bool) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(ValueParameters) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElementUserLocatorParameters. +func (in *ElementUserLocatorParameters) DeepCopy() *ElementUserLocatorParameters { + if in == nil { + return nil + } + out := new(ElementUserLocatorParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExtractedValueInitParameters) DeepCopyInto(out *ExtractedValueInitParameters) { + *out = *in + if in.Field != nil { + in, out := &in.Field, &out.Field + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Parser != nil { + in, out := &in.Parser, &out.Parser + *out = new(ExtractedValueParserInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **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 ExtractedValueInitParameters. +func (in *ExtractedValueInitParameters) DeepCopy() *ExtractedValueInitParameters { + if in == nil { + return nil + } + out := new(ExtractedValueInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExtractedValueObservation) DeepCopyInto(out *ExtractedValueObservation) { + *out = *in + if in.Field != nil { + in, out := &in.Field, &out.Field + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.Parser != nil { + in, out := &in.Parser, &out.Parser + *out = new(ExtractedValueParserObservation) + (*in).DeepCopyInto(*out) + } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } + if in.Type != nil { in, out := &in.Type, &out.Type *out = new(string) **out = **in @@ -1604,10 +2122,8 @@ func (in *ExtractedValueParameters) DeepCopyInto(out *ExtractedValueParameters) } if in.Parser != nil { in, out := &in.Parser, &out.Parser - *out = make([]ExtractedValueParserParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ExtractedValueParserParameters) + (*in).DeepCopyInto(*out) } if in.Secure != nil { in, out := &in.Secure, &out.Secure @@ -1741,6 +2257,16 @@ func (in *GlobalVariableInitParameters) DeepCopyInto(out *GlobalVariableInitPara *out = new(string) **out = **in } + if in.IsFido != nil { + in, out := &in.IsFido, &out.IsFido + *out = new(bool) + **out = **in + } + if in.IsTotp != nil { + in, out := &in.IsTotp, &out.IsTotp + *out = new(bool) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1792,6 +2318,11 @@ func (in *GlobalVariableInitParameters) DeepCopyInto(out *GlobalVariableInitPara } } } + if in.ValueSecretRef != nil { + in, out := &in.ValueSecretRef, &out.ValueSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableInitParameters. @@ -1849,6 +2380,16 @@ func (in *GlobalVariableObservation) DeepCopyInto(out *GlobalVariableObservation *out = new(string) **out = **in } + if in.IsFido != nil { + in, out := &in.IsFido, &out.IsFido + *out = new(bool) + **out = **in + } + if in.IsTotp != nil { + in, out := &in.IsTotp, &out.IsTotp + *out = new(bool) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1920,6 +2461,16 @@ func (in *GlobalVariableParameters) DeepCopyInto(out *GlobalVariableParameters) *out = new(string) **out = **in } + if in.IsFido != nil { + in, out := &in.IsFido, &out.IsFido + *out = new(bool) + **out = **in + } + if in.IsTotp != nil { + in, out := &in.IsTotp, &out.IsTotp + *out = new(bool) + **out = **in + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -1971,7 +2522,11 @@ func (in *GlobalVariableParameters) DeepCopyInto(out *GlobalVariableParameters) } } } - out.ValueSecretRef = in.ValueSecretRef + if in.ValueSecretRef != nil { + in, out := &in.ValueSecretRef, &out.ValueSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVariableParameters. @@ -2022,6 +2577,7 @@ func (in *GlobalVariableStatus) DeepCopy() *GlobalVariableStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *KeyInitParameters) DeepCopyInto(out *KeyInitParameters) { *out = *in + out.ContentSecretRef = in.ContentSecretRef if in.Filename != nil { in, out := &in.Filename, &out.Filename *out = new(string) @@ -2159,151 +2715,145 @@ func (in *MetadataParameters) DeepCopy() *MetadataParameters { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MonitorOptionsInitParameters) DeepCopyInto(out *MonitorOptionsInitParameters) { +func (in *MobileApplicationInitParameters) DeepCopyInto(out *MobileApplicationInitParameters) { *out = *in - if in.RenotifyInterval != nil { - in, out := &in.RenotifyInterval, &out.RenotifyInterval - *out = new(float64) + if in.ApplicationID != nil { + in, out := &in.ApplicationID, &out.ApplicationID + *out = new(string) **out = **in } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorOptionsInitParameters. -func (in *MonitorOptionsInitParameters) DeepCopy() *MonitorOptionsInitParameters { - if in == nil { - return nil + if in.ReferenceID != nil { + in, out := &in.ReferenceID, &out.ReferenceID + *out = new(string) + **out = **in } - out := new(MonitorOptionsInitParameters) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MonitorOptionsObservation) DeepCopyInto(out *MonitorOptionsObservation) { - *out = *in - if in.RenotifyInterval != nil { - in, out := &in.RenotifyInterval, &out.RenotifyInterval - *out = new(float64) + if in.ReferenceType != nil { + in, out := &in.ReferenceType, &out.ReferenceType + *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorOptionsObservation. -func (in *MonitorOptionsObservation) DeepCopy() *MonitorOptionsObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileApplicationInitParameters. +func (in *MobileApplicationInitParameters) DeepCopy() *MobileApplicationInitParameters { if in == nil { return nil } - out := new(MonitorOptionsObservation) + out := new(MobileApplicationInitParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *MonitorOptionsParameters) DeepCopyInto(out *MonitorOptionsParameters) { +func (in *MobileApplicationObservation) DeepCopyInto(out *MobileApplicationObservation) { *out = *in - if in.RenotifyInterval != nil { - in, out := &in.RenotifyInterval, &out.RenotifyInterval - *out = new(float64) + if in.ApplicationID != nil { + in, out := &in.ApplicationID, &out.ApplicationID + *out = new(string) + **out = **in + } + if in.ReferenceID != nil { + in, out := &in.ReferenceID, &out.ReferenceID + *out = new(string) + **out = **in + } + if in.ReferenceType != nil { + in, out := &in.ReferenceType, &out.ReferenceType + *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorOptionsParameters. -func (in *MonitorOptionsParameters) DeepCopy() *MonitorOptionsParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileApplicationObservation. +func (in *MobileApplicationObservation) DeepCopy() *MobileApplicationObservation { if in == nil { return nil } - out := new(MonitorOptionsParameters) + out := new(MobileApplicationObservation) 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) { +func (in *MobileApplicationParameters) DeepCopyInto(out *MobileApplicationParameters) { *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]) - } + if in.ApplicationID != nil { + in, out := &in.ApplicationID, &out.ApplicationID + *out = new(string) + **out = **in + } + if in.ReferenceID != nil { + in, out := &in.ReferenceID, &out.ReferenceID + *out = new(string) + **out = **in + } + if in.ReferenceType != nil { + in, out := &in.ReferenceType, &out.ReferenceType + *out = new(string) + **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsInitParameters. -func (in *OptionsInitParameters) DeepCopy() *OptionsInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileApplicationParameters. +func (in *MobileApplicationParameters) DeepCopy() *MobileApplicationParameters { if in == nil { return nil } - out := new(OptionsInitParameters) + out := new(MobileApplicationParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OptionsListInitParameters) DeepCopyInto(out *OptionsListInitParameters) { +func (in *MobileOptionsListInitParameters) DeepCopyInto(out *MobileOptionsListInitParameters) { *out = *in - if in.AcceptSelfSigned != nil { - in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned - *out = new(bool) - **out = **in - } - if in.AllowInsecure != nil { - in, out := &in.AllowInsecure, &out.AllowInsecure + if in.AllowApplicationCrash != nil { + in, out := &in.AllowApplicationCrash, &out.AllowApplicationCrash *out = new(bool) **out = **in } - if in.CheckCertificateRevocation != nil { - in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation - *out = new(bool) - **out = **in - } - if in.Ci != nil { - in, out := &in.Ci, &out.Ci - *out = make([]CiInitParameters, len(*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.DisableCors != nil { - in, out := &in.DisableCors, &out.DisableCors - *out = new(bool) - **out = **in - } - if in.DisableCsp != nil { - in, out := &in.DisableCsp, &out.DisableCsp - *out = new(bool) - **out = **in + if in.Ci != nil { + in, out := &in.Ci, &out.Ci + *out = new(CiInitParameters) + (*in).DeepCopyInto(*out) } - if in.FollowRedirects != nil { - in, out := &in.FollowRedirects, &out.FollowRedirects - *out = new(bool) + if in.DefaultStepTimeout != nil { + in, out := &in.DefaultStepTimeout, &out.DefaultStepTimeout + *out = new(float64) **out = **in } - if in.HTTPVersion != nil { - in, out := &in.HTTPVersion, &out.HTTPVersion - *out = new(string) - **out = **in + if in.DeviceIds != nil { + in, out := &in.DeviceIds, &out.DeviceIds + *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.IgnoreServerCertificateError != nil { - in, out := &in.IgnoreServerCertificateError, &out.IgnoreServerCertificateError + if in.DisableAutoAcceptAlert != nil { + in, out := &in.DisableAutoAcceptAlert, &out.DisableAutoAcceptAlert *out = new(bool) **out = **in } - if in.InitialNavigationTimeout != nil { - in, out := &in.InitialNavigationTimeout, &out.InitialNavigationTimeout - *out = new(float64) - **out = **in - } if in.MinFailureDuration != nil { in, out := &in.MinFailureDuration, &out.MinFailureDuration *out = new(float64) **out = **in } - if in.MinLocationFailed != nil { - in, out := &in.MinLocationFailed, &out.MinLocationFailed - *out = new(float64) - **out = **in + if in.MobileApplication != nil { + in, out := &in.MobileApplication, &out.MobileApplication + *out = new(MobileApplicationInitParameters) + (*in).DeepCopyInto(*out) } if in.MonitorName != nil { in, out := &in.MonitorName, &out.MonitorName @@ -2312,10 +2862,8 @@ func (in *OptionsListInitParameters) DeepCopyInto(out *OptionsListInitParameters } if in.MonitorOptions != nil { in, out := &in.MonitorOptions, &out.MonitorOptions - *out = make([]MonitorOptionsInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MonitorOptionsInitParameters) + (*in).DeepCopyInto(*out) } if in.MonitorPriority != nil { in, out := &in.MonitorPriority, &out.MonitorPriority @@ -2340,104 +2888,86 @@ func (in *OptionsListInitParameters) DeepCopyInto(out *OptionsListInitParameters } if in.Retry != nil { in, out := &in.Retry, &out.Retry - *out = make([]OptionsListRetryInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.RumSettings != nil { - in, out := &in.RumSettings, &out.RumSettings - *out = make([]string, len(*in)) - copy(*out, *in) + *out = new(MobileOptionsListRetryInitParameters) + (*in).DeepCopyInto(*out) } if in.Scheduling != nil { in, out := &in.Scheduling, &out.Scheduling - *out = make([]SchedulingInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(SchedulingInitParameters) + (*in).DeepCopyInto(*out) } if in.TickEvery != nil { in, out := &in.TickEvery, &out.TickEvery *out = new(float64) **out = **in } + if in.Verbosity != nil { + in, out := &in.Verbosity, &out.Verbosity + *out = new(float64) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListInitParameters. -func (in *OptionsListInitParameters) DeepCopy() *OptionsListInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileOptionsListInitParameters. +func (in *MobileOptionsListInitParameters) DeepCopy() *MobileOptionsListInitParameters { if in == nil { return nil } - out := new(OptionsListInitParameters) + out := new(MobileOptionsListInitParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OptionsListObservation) DeepCopyInto(out *OptionsListObservation) { +func (in *MobileOptionsListObservation) DeepCopyInto(out *MobileOptionsListObservation) { *out = *in - if in.AcceptSelfSigned != nil { - in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned - *out = new(bool) - **out = **in - } - if in.AllowInsecure != nil { - in, out := &in.AllowInsecure, &out.AllowInsecure - *out = new(bool) - **out = **in - } - if in.CheckCertificateRevocation != nil { - in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + if in.AllowApplicationCrash != nil { + in, out := &in.AllowApplicationCrash, &out.AllowApplicationCrash *out = new(bool) **out = **in } - if in.Ci != nil { - in, out := &in.Ci, &out.Ci - *out = make([]CiObservation, len(*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.DisableCors != nil { - in, out := &in.DisableCors, &out.DisableCors - *out = new(bool) - **out = **in - } - if in.DisableCsp != nil { - in, out := &in.DisableCsp, &out.DisableCsp - *out = new(bool) - **out = **in + if in.Ci != nil { + in, out := &in.Ci, &out.Ci + *out = new(CiObservation) + (*in).DeepCopyInto(*out) } - if in.FollowRedirects != nil { - in, out := &in.FollowRedirects, &out.FollowRedirects - *out = new(bool) + if in.DefaultStepTimeout != nil { + in, out := &in.DefaultStepTimeout, &out.DefaultStepTimeout + *out = new(float64) **out = **in } - if in.HTTPVersion != nil { - in, out := &in.HTTPVersion, &out.HTTPVersion - *out = new(string) - **out = **in + if in.DeviceIds != nil { + in, out := &in.DeviceIds, &out.DeviceIds + *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.IgnoreServerCertificateError != nil { - in, out := &in.IgnoreServerCertificateError, &out.IgnoreServerCertificateError + if in.DisableAutoAcceptAlert != nil { + in, out := &in.DisableAutoAcceptAlert, &out.DisableAutoAcceptAlert *out = new(bool) **out = **in } - if in.InitialNavigationTimeout != nil { - in, out := &in.InitialNavigationTimeout, &out.InitialNavigationTimeout - *out = new(float64) - **out = **in - } if in.MinFailureDuration != nil { in, out := &in.MinFailureDuration, &out.MinFailureDuration *out = new(float64) **out = **in } - if in.MinLocationFailed != nil { - in, out := &in.MinLocationFailed, &out.MinLocationFailed - *out = new(float64) - **out = **in + if in.MobileApplication != nil { + in, out := &in.MobileApplication, &out.MobileApplication + *out = new(MobileApplicationObservation) + (*in).DeepCopyInto(*out) } if in.MonitorName != nil { in, out := &in.MonitorName, &out.MonitorName @@ -2446,10 +2976,8 @@ func (in *OptionsListObservation) DeepCopyInto(out *OptionsListObservation) { } if in.MonitorOptions != nil { in, out := &in.MonitorOptions, &out.MonitorOptions - *out = make([]MonitorOptionsObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MonitorOptionsObservation) + (*in).DeepCopyInto(*out) } if in.MonitorPriority != nil { in, out := &in.MonitorPriority, &out.MonitorPriority @@ -2474,104 +3002,86 @@ func (in *OptionsListObservation) DeepCopyInto(out *OptionsListObservation) { } if in.Retry != nil { in, out := &in.Retry, &out.Retry - *out = make([]OptionsListRetryObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.RumSettings != nil { - in, out := &in.RumSettings, &out.RumSettings - *out = make([]string, len(*in)) - copy(*out, *in) + *out = new(MobileOptionsListRetryObservation) + (*in).DeepCopyInto(*out) } if in.Scheduling != nil { in, out := &in.Scheduling, &out.Scheduling - *out = make([]SchedulingObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(SchedulingObservation) + (*in).DeepCopyInto(*out) } if in.TickEvery != nil { in, out := &in.TickEvery, &out.TickEvery *out = new(float64) **out = **in } + if in.Verbosity != nil { + in, out := &in.Verbosity, &out.Verbosity + *out = new(float64) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListObservation. -func (in *OptionsListObservation) DeepCopy() *OptionsListObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileOptionsListObservation. +func (in *MobileOptionsListObservation) DeepCopy() *MobileOptionsListObservation { if in == nil { return nil } - out := new(OptionsListObservation) + out := new(MobileOptionsListObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OptionsListParameters) DeepCopyInto(out *OptionsListParameters) { +func (in *MobileOptionsListParameters) DeepCopyInto(out *MobileOptionsListParameters) { *out = *in - if in.AcceptSelfSigned != nil { - in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned - *out = new(bool) - **out = **in - } - if in.AllowInsecure != nil { - in, out := &in.AllowInsecure, &out.AllowInsecure - *out = new(bool) - **out = **in - } - if in.CheckCertificateRevocation != nil { - in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + if in.AllowApplicationCrash != nil { + in, out := &in.AllowApplicationCrash, &out.AllowApplicationCrash *out = new(bool) **out = **in } - if in.Ci != nil { - in, out := &in.Ci, &out.Ci - *out = make([]CiParameters, len(*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.DisableCors != nil { - in, out := &in.DisableCors, &out.DisableCors - *out = new(bool) - **out = **in - } - if in.DisableCsp != nil { - in, out := &in.DisableCsp, &out.DisableCsp - *out = new(bool) - **out = **in + if in.Ci != nil { + in, out := &in.Ci, &out.Ci + *out = new(CiParameters) + (*in).DeepCopyInto(*out) } - if in.FollowRedirects != nil { - in, out := &in.FollowRedirects, &out.FollowRedirects - *out = new(bool) + if in.DefaultStepTimeout != nil { + in, out := &in.DefaultStepTimeout, &out.DefaultStepTimeout + *out = new(float64) **out = **in } - if in.HTTPVersion != nil { - in, out := &in.HTTPVersion, &out.HTTPVersion - *out = new(string) - **out = **in + if in.DeviceIds != nil { + in, out := &in.DeviceIds, &out.DeviceIds + *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.IgnoreServerCertificateError != nil { - in, out := &in.IgnoreServerCertificateError, &out.IgnoreServerCertificateError + if in.DisableAutoAcceptAlert != nil { + in, out := &in.DisableAutoAcceptAlert, &out.DisableAutoAcceptAlert *out = new(bool) **out = **in } - if in.InitialNavigationTimeout != nil { - in, out := &in.InitialNavigationTimeout, &out.InitialNavigationTimeout - *out = new(float64) - **out = **in - } if in.MinFailureDuration != nil { in, out := &in.MinFailureDuration, &out.MinFailureDuration *out = new(float64) **out = **in } - if in.MinLocationFailed != nil { - in, out := &in.MinLocationFailed, &out.MinLocationFailed - *out = new(float64) - **out = **in + if in.MobileApplication != nil { + in, out := &in.MobileApplication, &out.MobileApplication + *out = new(MobileApplicationParameters) + (*in).DeepCopyInto(*out) } if in.MonitorName != nil { in, out := &in.MonitorName, &out.MonitorName @@ -2580,10 +3090,8 @@ func (in *OptionsListParameters) DeepCopyInto(out *OptionsListParameters) { } if in.MonitorOptions != nil { in, out := &in.MonitorOptions, &out.MonitorOptions - *out = make([]MonitorOptionsParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(MonitorOptionsParameters) + (*in).DeepCopyInto(*out) } if in.MonitorPriority != nil { in, out := &in.MonitorPriority, &out.MonitorPriority @@ -2608,42 +3116,38 @@ func (in *OptionsListParameters) DeepCopyInto(out *OptionsListParameters) { } if in.Retry != nil { in, out := &in.Retry, &out.Retry - *out = make([]OptionsListRetryParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.RumSettings != nil { - in, out := &in.RumSettings, &out.RumSettings - *out = make([]string, len(*in)) - copy(*out, *in) + *out = new(MobileOptionsListRetryParameters) + (*in).DeepCopyInto(*out) } if in.Scheduling != nil { in, out := &in.Scheduling, &out.Scheduling - *out = make([]SchedulingParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(SchedulingParameters) + (*in).DeepCopyInto(*out) } if in.TickEvery != nil { in, out := &in.TickEvery, &out.TickEvery *out = new(float64) **out = **in } + if in.Verbosity != nil { + in, out := &in.Verbosity, &out.Verbosity + *out = new(float64) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListParameters. -func (in *OptionsListParameters) DeepCopy() *OptionsListParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileOptionsListParameters. +func (in *MobileOptionsListParameters) DeepCopy() *MobileOptionsListParameters { if in == nil { return nil } - out := new(OptionsListParameters) + out := new(MobileOptionsListParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OptionsListRetryInitParameters) DeepCopyInto(out *OptionsListRetryInitParameters) { +func (in *MobileOptionsListRetryInitParameters) DeepCopyInto(out *MobileOptionsListRetryInitParameters) { *out = *in if in.Count != nil { in, out := &in.Count, &out.Count @@ -2657,18 +3161,18 @@ func (in *OptionsListRetryInitParameters) DeepCopyInto(out *OptionsListRetryInit } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListRetryInitParameters. -func (in *OptionsListRetryInitParameters) DeepCopy() *OptionsListRetryInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileOptionsListRetryInitParameters. +func (in *MobileOptionsListRetryInitParameters) DeepCopy() *MobileOptionsListRetryInitParameters { if in == nil { return nil } - out := new(OptionsListRetryInitParameters) + out := new(MobileOptionsListRetryInitParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OptionsListRetryObservation) DeepCopyInto(out *OptionsListRetryObservation) { +func (in *MobileOptionsListRetryObservation) DeepCopyInto(out *MobileOptionsListRetryObservation) { *out = *in if in.Count != nil { in, out := &in.Count, &out.Count @@ -2682,18 +3186,18 @@ func (in *OptionsListRetryObservation) DeepCopyInto(out *OptionsListRetryObserva } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListRetryObservation. -func (in *OptionsListRetryObservation) DeepCopy() *OptionsListRetryObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileOptionsListRetryObservation. +func (in *MobileOptionsListRetryObservation) DeepCopy() *MobileOptionsListRetryObservation { if in == nil { return nil } - out := new(OptionsListRetryObservation) + out := new(MobileOptionsListRetryObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OptionsListRetryParameters) DeepCopyInto(out *OptionsListRetryParameters) { +func (in *MobileOptionsListRetryParameters) DeepCopyInto(out *MobileOptionsListRetryParameters) { *out = *in if in.Count != nil { in, out := &in.Count, &out.Count @@ -2707,47 +3211,1299 @@ func (in *OptionsListRetryParameters) DeepCopyInto(out *OptionsListRetryParamete } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListRetryParameters. -func (in *OptionsListRetryParameters) DeepCopy() *OptionsListRetryParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MobileOptionsListRetryParameters. +func (in *MobileOptionsListRetryParameters) DeepCopy() *MobileOptionsListRetryParameters { if in == nil { return nil } - out := new(OptionsListRetryParameters) + out := new(MobileOptionsListRetryParameters) 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) { +func (in *MobileStepInitParameters) DeepCopyInto(out *MobileStepInitParameters) { *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]) - } + if in.AllowFailure != nil { + in, out := &in.AllowFailure, &out.AllowFailure + *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 + if in.HasNewStepElement != nil { + in, out := &in.HasNewStepElement, &out.HasNewStepElement + *out = new(bool) + **out = **in } - 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]) - } + if in.IsCritical != nil { + in, out := &in.IsCritical, &out.IsCritical + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *out = new(bool) + **out = **in + } + if in.Params != nil { + in, out := &in.Params, &out.Params + *out = new(MobileStepParamsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.PublicID != nil { + in, out := &in.PublicID, &out.PublicID + *out = new(string) + **out = **in + } + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *out = new(float64) + **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 MobileStepInitParameters. +func (in *MobileStepInitParameters) DeepCopy() *MobileStepInitParameters { + if in == nil { + return nil + } + out := new(MobileStepInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MobileStepObservation) DeepCopyInto(out *MobileStepObservation) { + *out = *in + if in.AllowFailure != nil { + in, out := &in.AllowFailure, &out.AllowFailure + *out = new(bool) + **out = **in + } + if in.HasNewStepElement != nil { + in, out := &in.HasNewStepElement, &out.HasNewStepElement + *out = new(bool) + **out = **in + } + if in.IsCritical != nil { + in, out := &in.IsCritical, &out.IsCritical + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *out = new(bool) + **out = **in + } + if in.Params != nil { + in, out := &in.Params, &out.Params + *out = new(MobileStepParamsObservation) + (*in).DeepCopyInto(*out) + } + if in.PublicID != nil { + in, out := &in.PublicID, &out.PublicID + *out = new(string) + **out = **in + } + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *out = new(float64) + **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 MobileStepObservation. +func (in *MobileStepObservation) DeepCopy() *MobileStepObservation { + if in == nil { + return nil + } + out := new(MobileStepObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MobileStepParameters) DeepCopyInto(out *MobileStepParameters) { + *out = *in + if in.AllowFailure != nil { + in, out := &in.AllowFailure, &out.AllowFailure + *out = new(bool) + **out = **in + } + if in.HasNewStepElement != nil { + in, out := &in.HasNewStepElement, &out.HasNewStepElement + *out = new(bool) + **out = **in + } + if in.IsCritical != nil { + in, out := &in.IsCritical, &out.IsCritical + *out = new(bool) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *out = new(bool) + **out = **in + } + if in.Params != nil { + in, out := &in.Params, &out.Params + *out = new(MobileStepParamsParameters) + (*in).DeepCopyInto(*out) + } + if in.PublicID != nil { + in, out := &in.PublicID, &out.PublicID + *out = new(string) + **out = **in + } + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *out = new(float64) + **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 MobileStepParameters. +func (in *MobileStepParameters) DeepCopy() *MobileStepParameters { + if in == nil { + return nil + } + out := new(MobileStepParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MobileStepParamsInitParameters) DeepCopyInto(out *MobileStepParamsInitParameters) { + *out = *in + if in.Check != nil { + in, out := &in.Check, &out.Check + *out = new(string) + **out = **in + } + if in.Delay != nil { + in, out := &in.Delay, &out.Delay + *out = new(float64) + **out = **in + } + if in.Direction != nil { + in, out := &in.Direction, &out.Direction + *out = new(string) + **out = **in + } + if in.Element != nil { + in, out := &in.Element, &out.Element + *out = new(ElementInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Enable != nil { + in, out := &in.Enable, &out.Enable + *out = new(bool) + **out = **in + } + if in.MaxScrolls != nil { + in, out := &in.MaxScrolls, &out.MaxScrolls + *out = new(float64) + **out = **in + } + if in.Positions != nil { + in, out := &in.Positions, &out.Positions + *out = make([]PositionsInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SubtestPublicID != nil { + in, out := &in.SubtestPublicID, &out.SubtestPublicID + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } + if in.Variable != nil { + in, out := &in.Variable, &out.Variable + *out = new(ParamsVariableInitParameters) + (*in).DeepCopyInto(*out) + } + if in.WithEnter != nil { + in, out := &in.WithEnter, &out.WithEnter + *out = new(bool) + **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 MobileStepParamsInitParameters. +func (in *MobileStepParamsInitParameters) DeepCopy() *MobileStepParamsInitParameters { + if in == nil { + return nil + } + out := new(MobileStepParamsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MobileStepParamsObservation) DeepCopyInto(out *MobileStepParamsObservation) { + *out = *in + if in.Check != nil { + in, out := &in.Check, &out.Check + *out = new(string) + **out = **in + } + if in.Delay != nil { + in, out := &in.Delay, &out.Delay + *out = new(float64) + **out = **in + } + if in.Direction != nil { + in, out := &in.Direction, &out.Direction + *out = new(string) + **out = **in + } + if in.Element != nil { + in, out := &in.Element, &out.Element + *out = new(ElementObservation) + (*in).DeepCopyInto(*out) + } + if in.Enable != nil { + in, out := &in.Enable, &out.Enable + *out = new(bool) + **out = **in + } + if in.MaxScrolls != nil { + in, out := &in.MaxScrolls, &out.MaxScrolls + *out = new(float64) + **out = **in + } + if in.Positions != nil { + in, out := &in.Positions, &out.Positions + *out = make([]PositionsObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SubtestPublicID != nil { + in, out := &in.SubtestPublicID, &out.SubtestPublicID + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } + if in.Variable != nil { + in, out := &in.Variable, &out.Variable + *out = new(ParamsVariableObservation) + (*in).DeepCopyInto(*out) + } + if in.WithEnter != nil { + in, out := &in.WithEnter, &out.WithEnter + *out = new(bool) + **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 MobileStepParamsObservation. +func (in *MobileStepParamsObservation) DeepCopy() *MobileStepParamsObservation { + if in == nil { + return nil + } + out := new(MobileStepParamsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MobileStepParamsParameters) DeepCopyInto(out *MobileStepParamsParameters) { + *out = *in + if in.Check != nil { + in, out := &in.Check, &out.Check + *out = new(string) + **out = **in + } + if in.Delay != nil { + in, out := &in.Delay, &out.Delay + *out = new(float64) + **out = **in + } + if in.Direction != nil { + in, out := &in.Direction, &out.Direction + *out = new(string) + **out = **in + } + if in.Element != nil { + in, out := &in.Element, &out.Element + *out = new(ElementParameters) + (*in).DeepCopyInto(*out) + } + if in.Enable != nil { + in, out := &in.Enable, &out.Enable + *out = new(bool) + **out = **in + } + if in.MaxScrolls != nil { + in, out := &in.MaxScrolls, &out.MaxScrolls + *out = new(float64) + **out = **in + } + if in.Positions != nil { + in, out := &in.Positions, &out.Positions + *out = make([]PositionsParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.SubtestPublicID != nil { + in, out := &in.SubtestPublicID, &out.SubtestPublicID + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } + if in.Variable != nil { + in, out := &in.Variable, &out.Variable + *out = new(ParamsVariableParameters) + (*in).DeepCopyInto(*out) + } + if in.WithEnter != nil { + in, out := &in.WithEnter, &out.WithEnter + *out = new(bool) + **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 MobileStepParamsParameters. +func (in *MobileStepParamsParameters) DeepCopy() *MobileStepParamsParameters { + if in == nil { + return nil + } + out := new(MobileStepParamsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorOptionsInitParameters) DeepCopyInto(out *MonitorOptionsInitParameters) { + *out = *in + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorOptionsInitParameters. +func (in *MonitorOptionsInitParameters) DeepCopy() *MonitorOptionsInitParameters { + if in == nil { + return nil + } + out := new(MonitorOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorOptionsObservation) DeepCopyInto(out *MonitorOptionsObservation) { + *out = *in + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorOptionsObservation. +func (in *MonitorOptionsObservation) DeepCopy() *MonitorOptionsObservation { + if in == nil { + return nil + } + out := new(MonitorOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MonitorOptionsParameters) DeepCopyInto(out *MonitorOptionsParameters) { + *out = *in + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorOptionsParameters. +func (in *MonitorOptionsParameters) DeepCopy() *MonitorOptionsParameters { + if in == nil { + return nil + } + out := new(MonitorOptionsParameters) + 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 *OptionsListCiInitParameters) DeepCopyInto(out *OptionsListCiInitParameters) { + *out = *in + if in.ExecutionRule != nil { + in, out := &in.ExecutionRule, &out.ExecutionRule + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListCiInitParameters. +func (in *OptionsListCiInitParameters) DeepCopy() *OptionsListCiInitParameters { + if in == nil { + return nil + } + out := new(OptionsListCiInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListCiObservation) DeepCopyInto(out *OptionsListCiObservation) { + *out = *in + if in.ExecutionRule != nil { + in, out := &in.ExecutionRule, &out.ExecutionRule + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListCiObservation. +func (in *OptionsListCiObservation) DeepCopy() *OptionsListCiObservation { + if in == nil { + return nil + } + out := new(OptionsListCiObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListCiParameters) DeepCopyInto(out *OptionsListCiParameters) { + *out = *in + if in.ExecutionRule != nil { + in, out := &in.ExecutionRule, &out.ExecutionRule + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListCiParameters. +func (in *OptionsListCiParameters) DeepCopy() *OptionsListCiParameters { + if in == nil { + return nil + } + out := new(OptionsListCiParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListInitParameters) DeepCopyInto(out *OptionsListInitParameters) { + *out = *in + if in.AcceptSelfSigned != nil { + in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned + *out = new(bool) + **out = **in + } + if in.AllowInsecure != nil { + in, out := &in.AllowInsecure, &out.AllowInsecure + *out = new(bool) + **out = **in + } + if in.CheckCertificateRevocation != nil { + in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + *out = new(bool) + **out = **in + } + if in.Ci != nil { + in, out := &in.Ci, &out.Ci + *out = new(OptionsListCiInitParameters) + (*in).DeepCopyInto(*out) + } + if in.DisableCors != nil { + in, out := &in.DisableCors, &out.DisableCors + *out = new(bool) + **out = **in + } + if in.DisableCsp != nil { + in, out := &in.DisableCsp, &out.DisableCsp + *out = new(bool) + **out = **in + } + if in.FollowRedirects != nil { + in, out := &in.FollowRedirects, &out.FollowRedirects + *out = new(bool) + **out = **in + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } + if in.IgnoreServerCertificateError != nil { + in, out := &in.IgnoreServerCertificateError, &out.IgnoreServerCertificateError + *out = new(bool) + **out = **in + } + if in.InitialNavigationTimeout != nil { + in, out := &in.InitialNavigationTimeout, &out.InitialNavigationTimeout + *out = new(float64) + **out = **in + } + if in.MinFailureDuration != nil { + in, out := &in.MinFailureDuration, &out.MinFailureDuration + *out = new(float64) + **out = **in + } + if in.MinLocationFailed != nil { + in, out := &in.MinLocationFailed, &out.MinLocationFailed + *out = new(float64) + **out = **in + } + if in.MonitorName != nil { + in, out := &in.MonitorName, &out.MonitorName + *out = new(string) + **out = **in + } + if in.MonitorOptions != nil { + in, out := &in.MonitorOptions, &out.MonitorOptions + *out = new(OptionsListMonitorOptionsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MonitorPriority != nil { + in, out := &in.MonitorPriority, &out.MonitorPriority + *out = new(float64) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *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.Retry != nil { + in, out := &in.Retry, &out.Retry + *out = new(OptionsListRetryInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RumSettings != nil { + in, out := &in.RumSettings, &out.RumSettings + *out = new(RumSettingsInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Scheduling != nil { + in, out := &in.Scheduling, &out.Scheduling + *out = new(OptionsListSchedulingInitParameters) + (*in).DeepCopyInto(*out) + } + if in.TickEvery != nil { + in, out := &in.TickEvery, &out.TickEvery + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListInitParameters. +func (in *OptionsListInitParameters) DeepCopy() *OptionsListInitParameters { + if in == nil { + return nil + } + out := new(OptionsListInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListMonitorOptionsInitParameters) DeepCopyInto(out *OptionsListMonitorOptionsInitParameters) { + *out = *in + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListMonitorOptionsInitParameters. +func (in *OptionsListMonitorOptionsInitParameters) DeepCopy() *OptionsListMonitorOptionsInitParameters { + if in == nil { + return nil + } + out := new(OptionsListMonitorOptionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListMonitorOptionsObservation) DeepCopyInto(out *OptionsListMonitorOptionsObservation) { + *out = *in + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListMonitorOptionsObservation. +func (in *OptionsListMonitorOptionsObservation) DeepCopy() *OptionsListMonitorOptionsObservation { + if in == nil { + return nil + } + out := new(OptionsListMonitorOptionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListMonitorOptionsParameters) DeepCopyInto(out *OptionsListMonitorOptionsParameters) { + *out = *in + if in.EscalationMessage != nil { + in, out := &in.EscalationMessage, &out.EscalationMessage + *out = new(string) + **out = **in + } + if in.NotificationPresetName != nil { + in, out := &in.NotificationPresetName, &out.NotificationPresetName + *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 + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListMonitorOptionsParameters. +func (in *OptionsListMonitorOptionsParameters) DeepCopy() *OptionsListMonitorOptionsParameters { + if in == nil { + return nil + } + out := new(OptionsListMonitorOptionsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListObservation) DeepCopyInto(out *OptionsListObservation) { + *out = *in + if in.AcceptSelfSigned != nil { + in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned + *out = new(bool) + **out = **in + } + if in.AllowInsecure != nil { + in, out := &in.AllowInsecure, &out.AllowInsecure + *out = new(bool) + **out = **in + } + if in.CheckCertificateRevocation != nil { + in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + *out = new(bool) + **out = **in + } + if in.Ci != nil { + in, out := &in.Ci, &out.Ci + *out = new(OptionsListCiObservation) + (*in).DeepCopyInto(*out) + } + if in.DisableCors != nil { + in, out := &in.DisableCors, &out.DisableCors + *out = new(bool) + **out = **in + } + if in.DisableCsp != nil { + in, out := &in.DisableCsp, &out.DisableCsp + *out = new(bool) + **out = **in + } + if in.FollowRedirects != nil { + in, out := &in.FollowRedirects, &out.FollowRedirects + *out = new(bool) + **out = **in + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } + if in.IgnoreServerCertificateError != nil { + in, out := &in.IgnoreServerCertificateError, &out.IgnoreServerCertificateError + *out = new(bool) + **out = **in + } + if in.InitialNavigationTimeout != nil { + in, out := &in.InitialNavigationTimeout, &out.InitialNavigationTimeout + *out = new(float64) + **out = **in + } + if in.MinFailureDuration != nil { + in, out := &in.MinFailureDuration, &out.MinFailureDuration + *out = new(float64) + **out = **in + } + if in.MinLocationFailed != nil { + in, out := &in.MinLocationFailed, &out.MinLocationFailed + *out = new(float64) + **out = **in + } + if in.MonitorName != nil { + in, out := &in.MonitorName, &out.MonitorName + *out = new(string) + **out = **in + } + if in.MonitorOptions != nil { + in, out := &in.MonitorOptions, &out.MonitorOptions + *out = new(OptionsListMonitorOptionsObservation) + (*in).DeepCopyInto(*out) + } + if in.MonitorPriority != nil { + in, out := &in.MonitorPriority, &out.MonitorPriority + *out = new(float64) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *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.Retry != nil { + in, out := &in.Retry, &out.Retry + *out = new(OptionsListRetryObservation) + (*in).DeepCopyInto(*out) + } + if in.RumSettings != nil { + in, out := &in.RumSettings, &out.RumSettings + *out = new(RumSettingsObservation) + (*in).DeepCopyInto(*out) + } + if in.Scheduling != nil { + in, out := &in.Scheduling, &out.Scheduling + *out = new(OptionsListSchedulingObservation) + (*in).DeepCopyInto(*out) + } + if in.TickEvery != nil { + in, out := &in.TickEvery, &out.TickEvery + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListObservation. +func (in *OptionsListObservation) DeepCopy() *OptionsListObservation { + if in == nil { + return nil + } + out := new(OptionsListObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListParameters) DeepCopyInto(out *OptionsListParameters) { + *out = *in + if in.AcceptSelfSigned != nil { + in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned + *out = new(bool) + **out = **in + } + if in.AllowInsecure != nil { + in, out := &in.AllowInsecure, &out.AllowInsecure + *out = new(bool) + **out = **in + } + if in.CheckCertificateRevocation != nil { + in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + *out = new(bool) + **out = **in + } + if in.Ci != nil { + in, out := &in.Ci, &out.Ci + *out = new(OptionsListCiParameters) + (*in).DeepCopyInto(*out) + } + if in.DisableCors != nil { + in, out := &in.DisableCors, &out.DisableCors + *out = new(bool) + **out = **in + } + if in.DisableCsp != nil { + in, out := &in.DisableCsp, &out.DisableCsp + *out = new(bool) + **out = **in + } + if in.FollowRedirects != nil { + in, out := &in.FollowRedirects, &out.FollowRedirects + *out = new(bool) + **out = **in + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } + if in.IgnoreServerCertificateError != nil { + in, out := &in.IgnoreServerCertificateError, &out.IgnoreServerCertificateError + *out = new(bool) + **out = **in + } + if in.InitialNavigationTimeout != nil { + in, out := &in.InitialNavigationTimeout, &out.InitialNavigationTimeout + *out = new(float64) + **out = **in + } + if in.MinFailureDuration != nil { + in, out := &in.MinFailureDuration, &out.MinFailureDuration + *out = new(float64) + **out = **in + } + if in.MinLocationFailed != nil { + in, out := &in.MinLocationFailed, &out.MinLocationFailed + *out = new(float64) + **out = **in + } + if in.MonitorName != nil { + in, out := &in.MonitorName, &out.MonitorName + *out = new(string) + **out = **in + } + if in.MonitorOptions != nil { + in, out := &in.MonitorOptions, &out.MonitorOptions + *out = new(OptionsListMonitorOptionsParameters) + (*in).DeepCopyInto(*out) + } + if in.MonitorPriority != nil { + in, out := &in.MonitorPriority, &out.MonitorPriority + *out = new(float64) + **out = **in + } + if in.NoScreenshot != nil { + in, out := &in.NoScreenshot, &out.NoScreenshot + *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.Retry != nil { + in, out := &in.Retry, &out.Retry + *out = new(OptionsListRetryParameters) + (*in).DeepCopyInto(*out) + } + if in.RumSettings != nil { + in, out := &in.RumSettings, &out.RumSettings + *out = new(RumSettingsParameters) + (*in).DeepCopyInto(*out) + } + if in.Scheduling != nil { + in, out := &in.Scheduling, &out.Scheduling + *out = new(OptionsListSchedulingParameters) + (*in).DeepCopyInto(*out) + } + if in.TickEvery != nil { + in, out := &in.TickEvery, &out.TickEvery + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListParameters. +func (in *OptionsListParameters) DeepCopy() *OptionsListParameters { + if in == nil { + return nil + } + out := new(OptionsListParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListRetryInitParameters) DeepCopyInto(out *OptionsListRetryInitParameters) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListRetryInitParameters. +func (in *OptionsListRetryInitParameters) DeepCopy() *OptionsListRetryInitParameters { + if in == nil { + return nil + } + out := new(OptionsListRetryInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListRetryObservation) DeepCopyInto(out *OptionsListRetryObservation) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListRetryObservation. +func (in *OptionsListRetryObservation) DeepCopy() *OptionsListRetryObservation { + if in == nil { + return nil + } + out := new(OptionsListRetryObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListRetryParameters) DeepCopyInto(out *OptionsListRetryParameters) { + *out = *in + if in.Count != nil { + in, out := &in.Count, &out.Count + *out = new(float64) + **out = **in + } + if in.Interval != nil { + in, out := &in.Interval, &out.Interval + *out = new(float64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptionsListRetryParameters. +func (in *OptionsListRetryParameters) DeepCopy() *OptionsListRetryParameters { + if in == nil { + return nil + } + out := new(OptionsListRetryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListSchedulingInitParameters) DeepCopyInto(out *OptionsListSchedulingInitParameters) { + *out = *in + if in.Timeframes != nil { + in, out := &in.Timeframes, &out.Timeframes + *out = make([]SchedulingTimeframesInitParameters, 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 OptionsListSchedulingInitParameters. +func (in *OptionsListSchedulingInitParameters) DeepCopy() *OptionsListSchedulingInitParameters { + if in == nil { + return nil + } + out := new(OptionsListSchedulingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListSchedulingObservation) DeepCopyInto(out *OptionsListSchedulingObservation) { + *out = *in + if in.Timeframes != nil { + in, out := &in.Timeframes, &out.Timeframes + *out = make([]SchedulingTimeframesObservation, 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 OptionsListSchedulingObservation. +func (in *OptionsListSchedulingObservation) DeepCopy() *OptionsListSchedulingObservation { + if in == nil { + return nil + } + out := new(OptionsListSchedulingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OptionsListSchedulingParameters) DeepCopyInto(out *OptionsListSchedulingParameters) { + *out = *in + if in.Timeframes != nil { + in, out := &in.Timeframes, &out.Timeframes + *out = make([]SchedulingTimeframesParameters, 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 OptionsListSchedulingParameters. +func (in *OptionsListSchedulingParameters) DeepCopy() *OptionsListSchedulingParameters { + if in == nil { + return nil + } + out := new(OptionsListSchedulingParameters) + 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]) + } } } @@ -2779,6 +4535,11 @@ func (in *ParamsInitParameters) DeepCopyInto(out *ParamsInitParameters) { *out = new(string) **out = **in } + if in.ClickWithJavascript != nil { + in, out := &in.ClickWithJavascript, &out.ClickWithJavascript + *out = new(bool) + **out = **in + } if in.Code != nil { in, out := &in.Code, &out.Code *out = new(string) @@ -2796,10 +4557,8 @@ func (in *ParamsInitParameters) DeepCopyInto(out *ParamsInitParameters) { } if in.ElementUserLocator != nil { in, out := &in.ElementUserLocator, &out.ElementUserLocator - *out = make([]ElementUserLocatorInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ElementUserLocatorInitParameters) + (*in).DeepCopyInto(*out) } if in.Email != nil { in, out := &in.Email, &out.Email @@ -2837,6 +4596,11 @@ func (in *ParamsInitParameters) DeepCopyInto(out *ParamsInitParameters) { *out = new(string) **out = **in } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = new(string) + **out = **in + } if in.SubtestPublicID != nil { in, out := &in.SubtestPublicID, &out.SubtestPublicID *out = new(string) @@ -2849,10 +4613,8 @@ func (in *ParamsInitParameters) DeepCopyInto(out *ParamsInitParameters) { } if in.Variable != nil { in, out := &in.Variable, &out.Variable - *out = make([]VariableInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(VariableInitParameters) + (*in).DeepCopyInto(*out) } if in.WithClick != nil { in, out := &in.WithClick, &out.WithClick @@ -2899,6 +4661,11 @@ func (in *ParamsObservation) DeepCopyInto(out *ParamsObservation) { *out = new(string) **out = **in } + if in.ClickWithJavascript != nil { + in, out := &in.ClickWithJavascript, &out.ClickWithJavascript + *out = new(bool) + **out = **in + } if in.Code != nil { in, out := &in.Code, &out.Code *out = new(string) @@ -2916,10 +4683,8 @@ func (in *ParamsObservation) DeepCopyInto(out *ParamsObservation) { } if in.ElementUserLocator != nil { in, out := &in.ElementUserLocator, &out.ElementUserLocator - *out = make([]ElementUserLocatorObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ElementUserLocatorObservation) + (*in).DeepCopyInto(*out) } if in.Email != nil { in, out := &in.Email, &out.Email @@ -2957,6 +4722,11 @@ func (in *ParamsObservation) DeepCopyInto(out *ParamsObservation) { *out = new(string) **out = **in } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = new(string) + **out = **in + } if in.SubtestPublicID != nil { in, out := &in.SubtestPublicID, &out.SubtestPublicID *out = new(string) @@ -2969,10 +4739,8 @@ func (in *ParamsObservation) DeepCopyInto(out *ParamsObservation) { } if in.Variable != nil { in, out := &in.Variable, &out.Variable - *out = make([]VariableObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(VariableObservation) + (*in).DeepCopyInto(*out) } if in.WithClick != nil { in, out := &in.WithClick, &out.WithClick @@ -3019,6 +4787,11 @@ func (in *ParamsParameters) DeepCopyInto(out *ParamsParameters) { *out = new(string) **out = **in } + if in.ClickWithJavascript != nil { + in, out := &in.ClickWithJavascript, &out.ClickWithJavascript + *out = new(bool) + **out = **in + } if in.Code != nil { in, out := &in.Code, &out.Code *out = new(string) @@ -3036,10 +4809,8 @@ func (in *ParamsParameters) DeepCopyInto(out *ParamsParameters) { } if in.ElementUserLocator != nil { in, out := &in.ElementUserLocator, &out.ElementUserLocator - *out = make([]ElementUserLocatorParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(ElementUserLocatorParameters) + (*in).DeepCopyInto(*out) } if in.Email != nil { in, out := &in.Email, &out.Email @@ -3077,6 +4848,11 @@ func (in *ParamsParameters) DeepCopyInto(out *ParamsParameters) { *out = new(string) **out = **in } + if in.Requests != nil { + in, out := &in.Requests, &out.Requests + *out = new(string) + **out = **in + } if in.SubtestPublicID != nil { in, out := &in.SubtestPublicID, &out.SubtestPublicID *out = new(string) @@ -3089,10 +4865,8 @@ func (in *ParamsParameters) DeepCopyInto(out *ParamsParameters) { } if in.Variable != nil { in, out := &in.Variable, &out.Variable - *out = make([]VariableParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(VariableParameters) + (*in).DeepCopyInto(*out) } if in.WithClick != nil { in, out := &in.WithClick, &out.WithClick @@ -3121,6 +4895,81 @@ func (in *ParamsParameters) DeepCopy() *ParamsParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParamsVariableInitParameters) DeepCopyInto(out *ParamsVariableInitParameters) { + *out = *in + if in.Example != nil { + in, out := &in.Example, &out.Example + *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 ParamsVariableInitParameters. +func (in *ParamsVariableInitParameters) DeepCopy() *ParamsVariableInitParameters { + if in == nil { + return nil + } + out := new(ParamsVariableInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParamsVariableObservation) DeepCopyInto(out *ParamsVariableObservation) { + *out = *in + if in.Example != nil { + in, out := &in.Example, &out.Example + *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 ParamsVariableObservation. +func (in *ParamsVariableObservation) DeepCopy() *ParamsVariableObservation { + if in == nil { + return nil + } + out := new(ParamsVariableObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ParamsVariableParameters) DeepCopyInto(out *ParamsVariableParameters) { + *out = *in + if in.Example != nil { + in, out := &in.Example, &out.Example + *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 ParamsVariableParameters. +func (in *ParamsVariableParameters) DeepCopy() *ParamsVariableParameters { + if in == nil { + return nil + } + out := new(ParamsVariableParameters) + 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 @@ -3307,6 +5156,81 @@ func (in *ParserParameters) DeepCopy() *ParserParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PositionsInitParameters) DeepCopyInto(out *PositionsInitParameters) { + *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 PositionsInitParameters. +func (in *PositionsInitParameters) DeepCopy() *PositionsInitParameters { + if in == nil { + return nil + } + out := new(PositionsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PositionsObservation) DeepCopyInto(out *PositionsObservation) { + *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 PositionsObservation. +func (in *PositionsObservation) DeepCopy() *PositionsObservation { + if in == nil { + return nil + } + out := new(PositionsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PositionsParameters) DeepCopyInto(out *PositionsParameters) { + *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 PositionsParameters. +func (in *PositionsParameters) DeepCopy() *PositionsParameters { + if in == nil { + return nil + } + out := new(PositionsParameters) + 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 @@ -3337,6 +5261,11 @@ func (in *PrivateLocation) DeepCopyObject() runtime.Object { // 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.APIKeySecretRef != nil { + in, out := &in.APIKeySecretRef, &out.APIKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.Description != nil { in, out := &in.Description, &out.Description *out = new(string) @@ -3460,6 +5389,11 @@ func (in *PrivateLocationObservation) DeepCopy() *PrivateLocationObservation { // 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.APIKeySecretRef != nil { + in, out := &in.APIKeySecretRef, &out.APIKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.Description != nil { in, out := &in.Description, &out.Description *out = new(string) @@ -3535,9 +5469,89 @@ func (in *PrivateLocationStatus) DeepCopy() *PrivateLocationStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RelativePositionInitParameters) DeepCopyInto(out *RelativePositionInitParameters) { + *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 RelativePositionInitParameters. +func (in *RelativePositionInitParameters) DeepCopy() *RelativePositionInitParameters { + if in == nil { + return nil + } + out := new(RelativePositionInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RelativePositionObservation) DeepCopyInto(out *RelativePositionObservation) { + *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 RelativePositionObservation. +func (in *RelativePositionObservation) DeepCopy() *RelativePositionObservation { + if in == nil { + return nil + } + out := new(RelativePositionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RelativePositionParameters) DeepCopyInto(out *RelativePositionParameters) { + *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 RelativePositionParameters. +func (in *RelativePositionParameters) DeepCopy() *RelativePositionParameters { + if in == nil { + return nil + } + out := new(RelativePositionParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RequestBasicauthInitParameters) DeepCopyInto(out *RequestBasicauthInitParameters) { *out = *in + if in.AccessKeySecretRef != nil { + in, out := &in.AccessKeySecretRef, &out.AccessKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.AccessTokenURL != nil { in, out := &in.AccessTokenURL, &out.AccessTokenURL *out = new(string) @@ -3553,11 +5567,21 @@ func (in *RequestBasicauthInitParameters) DeepCopyInto(out *RequestBasicauthInit *out = new(string) **out = **in } + if in.ClientSecretSecretRef != nil { + in, out := &in.ClientSecretSecretRef, &out.ClientSecretSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.Domain != nil { in, out := &in.Domain, &out.Domain *out = new(string) **out = **in } + if in.PasswordSecretRef != nil { + in, out := &in.PasswordSecretRef, &out.PasswordSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.Region != nil { in, out := &in.Region, &out.Region *out = new(string) @@ -3573,6 +5597,11 @@ func (in *RequestBasicauthInitParameters) DeepCopyInto(out *RequestBasicauthInit *out = new(string) **out = **in } + if in.SecretKeySecretRef != nil { + in, out := &in.SecretKeySecretRef, &out.SecretKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.ServiceName != nil { in, out := &in.ServiceName, &out.ServiceName *out = new(string) @@ -3798,6 +5827,7 @@ func (in *RequestBasicauthParameters) DeepCopy() *RequestBasicauthParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RequestClientCertificateCertInitParameters) DeepCopyInto(out *RequestClientCertificateCertInitParameters) { *out = *in + out.ContentSecretRef = in.ContentSecretRef if in.Filename != nil { in, out := &in.Filename, &out.Filename *out = new(string) @@ -3861,17 +5891,13 @@ func (in *RequestClientCertificateInitParameters) DeepCopyInto(out *RequestClien *out = *in if in.Cert != nil { in, out := &in.Cert, &out.Cert - *out = make([]CertInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(CertInitParameters) + (*in).DeepCopyInto(*out) } if in.Key != nil { in, out := &in.Key, &out.Key - *out = make([]KeyInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(KeyInitParameters) + (*in).DeepCopyInto(*out) } } @@ -3888,6 +5914,7 @@ func (in *RequestClientCertificateInitParameters) DeepCopy() *RequestClientCerti // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RequestClientCertificateKeyInitParameters) DeepCopyInto(out *RequestClientCertificateKeyInitParameters) { *out = *in + out.ContentSecretRef = in.ContentSecretRef if in.Filename != nil { in, out := &in.Filename, &out.Filename *out = new(string) @@ -3951,17 +5978,13 @@ func (in *RequestClientCertificateObservation) DeepCopyInto(out *RequestClientCe *out = *in if in.Cert != nil { in, out := &in.Cert, &out.Cert - *out = make([]CertObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(CertObservation) + (*in).DeepCopyInto(*out) } if in.Key != nil { in, out := &in.Key, &out.Key - *out = make([]KeyObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(KeyObservation) + (*in).DeepCopyInto(*out) } } @@ -3980,17 +6003,13 @@ func (in *RequestClientCertificateParameters) DeepCopyInto(out *RequestClientCer *out = *in if in.Cert != nil { in, out := &in.Cert, &out.Cert - *out = make([]CertParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(CertParameters) + (*in).DeepCopyInto(*out) } if in.Key != nil { in, out := &in.Key, &out.Key - *out = make([]KeyParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(KeyParameters) + (*in).DeepCopyInto(*out) } } @@ -4007,6 +6026,11 @@ func (in *RequestClientCertificateParameters) DeepCopy() *RequestClientCertifica // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RequestDefinitionInitParameters) DeepCopyInto(out *RequestDefinitionInitParameters) { *out = *in + if in.AcceptSelfSigned != nil { + in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned + *out = new(bool) + **out = **in + } if in.AllowInsecure != nil { in, out := &in.AllowInsecure, &out.AllowInsecure *out = new(bool) @@ -4038,6 +6062,11 @@ func (in *RequestDefinitionInitParameters) DeepCopyInto(out *RequestDefinitionIn } } } + if in.CheckCertificateRevocation != nil { + in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + *out = new(bool) + **out = **in + } if in.DNSServer != nil { in, out := &in.DNSServer, &out.DNSServer *out = new(string) @@ -4045,7 +6074,7 @@ func (in *RequestDefinitionInitParameters) DeepCopyInto(out *RequestDefinitionIn } if in.DNSServerPort != nil { in, out := &in.DNSServerPort, &out.DNSServerPort - *out = new(float64) + *out = new(string) **out = **in } if in.FollowRedirects != nil { @@ -4053,11 +6082,37 @@ func (in *RequestDefinitionInitParameters) DeepCopyInto(out *RequestDefinitionIn *out = new(bool) **out = **in } + if in.Form != nil { + in, out := &in.Form, &out.Form + *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 + } + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } if in.Host != nil { in, out := &in.Host, &out.Host *out = new(string) **out = **in } + if in.IsMessageBase64Encoded != nil { + in, out := &in.IsMessageBase64Encoded, &out.IsMessageBase64Encoded + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) @@ -4090,7 +6145,7 @@ func (in *RequestDefinitionInitParameters) DeepCopyInto(out *RequestDefinitionIn } if in.Port != nil { in, out := &in.Port, &out.Port - *out = new(float64) + *out = new(string) **out = **in } if in.ProtoJSONDescriptor != nil { @@ -4138,6 +6193,11 @@ func (in *RequestDefinitionInitParameters) DeepCopy() *RequestDefinitionInitPara // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RequestDefinitionObservation) DeepCopyInto(out *RequestDefinitionObservation) { *out = *in + if in.AcceptSelfSigned != nil { + in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned + *out = new(bool) + **out = **in + } if in.AllowInsecure != nil { in, out := &in.AllowInsecure, &out.AllowInsecure *out = new(bool) @@ -4169,6 +6229,11 @@ func (in *RequestDefinitionObservation) DeepCopyInto(out *RequestDefinitionObser } } } + if in.CheckCertificateRevocation != nil { + in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + *out = new(bool) + **out = **in + } if in.DNSServer != nil { in, out := &in.DNSServer, &out.DNSServer *out = new(string) @@ -4176,7 +6241,7 @@ func (in *RequestDefinitionObservation) DeepCopyInto(out *RequestDefinitionObser } if in.DNSServerPort != nil { in, out := &in.DNSServerPort, &out.DNSServerPort - *out = new(float64) + *out = new(string) **out = **in } if in.FollowRedirects != nil { @@ -4184,11 +6249,37 @@ func (in *RequestDefinitionObservation) DeepCopyInto(out *RequestDefinitionObser *out = new(bool) **out = **in } + if in.Form != nil { + in, out := &in.Form, &out.Form + *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 + } + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } if in.Host != nil { in, out := &in.Host, &out.Host *out = new(string) **out = **in } + if in.IsMessageBase64Encoded != nil { + in, out := &in.IsMessageBase64Encoded, &out.IsMessageBase64Encoded + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) @@ -4221,9 +6312,176 @@ func (in *RequestDefinitionObservation) DeepCopyInto(out *RequestDefinitionObser } if in.Port != nil { in, out := &in.Port, &out.Port + *out = new(string) + **out = **in + } + if in.ProtoJSONDescriptor != nil { + in, out := &in.ProtoJSONDescriptor, &out.ProtoJSONDescriptor + *out = new(string) + **out = **in + } + if in.Servername != nil { + in, out := &in.Servername, &out.Servername + *out = new(string) + **out = **in + } + if in.Service != nil { + in, out := &in.Service, &out.Service + *out = new(string) + **out = **in + } + if in.ShouldTrackHops != nil { + in, out := &in.ShouldTrackHops, &out.ShouldTrackHops + *out = new(bool) + **out = **in + } + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *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 RequestDefinitionObservation. +func (in *RequestDefinitionObservation) DeepCopy() *RequestDefinitionObservation { + if in == nil { + return nil + } + out := new(RequestDefinitionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestDefinitionParameters) DeepCopyInto(out *RequestDefinitionParameters) { + *out = *in + if in.AcceptSelfSigned != nil { + in, out := &in.AcceptSelfSigned, &out.AcceptSelfSigned + *out = new(bool) + **out = **in + } + if in.AllowInsecure != nil { + in, out := &in.AllowInsecure, &out.AllowInsecure + *out = new(bool) + **out = **in + } + if in.Body != nil { + in, out := &in.Body, &out.Body + *out = new(string) + **out = **in + } + if in.BodyType != nil { + in, out := &in.BodyType, &out.BodyType + *out = new(string) + **out = **in + } + if in.CallType != nil { + in, out := &in.CallType, &out.CallType + *out = new(string) + **out = **in + } + if in.CertificateDomains != nil { + in, out := &in.CertificateDomains, &out.CertificateDomains + *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.CheckCertificateRevocation != nil { + in, out := &in.CheckCertificateRevocation, &out.CheckCertificateRevocation + *out = new(bool) + **out = **in + } + if in.DNSServer != nil { + in, out := &in.DNSServer, &out.DNSServer + *out = new(string) + **out = **in + } + if in.DNSServerPort != nil { + in, out := &in.DNSServerPort, &out.DNSServerPort + *out = new(string) + **out = **in + } + if in.FollowRedirects != nil { + in, out := &in.FollowRedirects, &out.FollowRedirects + *out = new(bool) + **out = **in + } + if in.Form != nil { + in, out := &in.Form, &out.Form + *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 + } + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } + if in.Host != nil { + in, out := &in.Host, &out.Host + *out = new(string) + **out = **in + } + if in.IsMessageBase64Encoded != nil { + in, out := &in.IsMessageBase64Encoded, &out.IsMessageBase64Encoded + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Method != nil { + in, out := &in.Method, &out.Method + *out = new(string) + **out = **in + } + if in.NoSavingResponseBody != nil { + in, out := &in.NoSavingResponseBody, &out.NoSavingResponseBody + *out = new(bool) + **out = **in + } + if in.NumberOfPackets != nil { + in, out := &in.NumberOfPackets, &out.NumberOfPackets *out = new(float64) **out = **in } + if in.PersistCookies != nil { + in, out := &in.PersistCookies, &out.PersistCookies + *out = new(bool) + **out = **in + } + if in.PlainProtoFile != nil { + in, out := &in.PlainProtoFile, &out.PlainProtoFile + *out = new(string) + **out = **in + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(string) + **out = **in + } if in.ProtoJSONDescriptor != nil { in, out := &in.ProtoJSONDescriptor, &out.ProtoJSONDescriptor *out = new(string) @@ -4256,143 +6514,137 @@ func (in *RequestDefinitionObservation) DeepCopyInto(out *RequestDefinitionObser } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestDefinitionObservation. -func (in *RequestDefinitionObservation) DeepCopy() *RequestDefinitionObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestDefinitionParameters. +func (in *RequestDefinitionParameters) DeepCopy() *RequestDefinitionParameters { if in == nil { return nil } - out := new(RequestDefinitionObservation) + out := new(RequestDefinitionParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RequestDefinitionParameters) DeepCopyInto(out *RequestDefinitionParameters) { +func (in *RequestFileInitParameters) DeepCopyInto(out *RequestFileInitParameters) { *out = *in - if in.AllowInsecure != nil { - in, out := &in.AllowInsecure, &out.AllowInsecure - *out = new(bool) - **out = **in - } - if in.Body != nil { - in, out := &in.Body, &out.Body - *out = new(string) - **out = **in - } - if in.BodyType != nil { - in, out := &in.BodyType, &out.BodyType + if in.Content != nil { + in, out := &in.Content, &out.Content *out = new(string) **out = **in } - if in.CallType != nil { - in, out := &in.CallType, &out.CallType + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.CertificateDomains != nil { - in, out := &in.CertificateDomains, &out.CertificateDomains - *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.DNSServer != nil { - in, out := &in.DNSServer, &out.DNSServer + if in.OriginalFileName != nil { + in, out := &in.OriginalFileName, &out.OriginalFileName *out = new(string) **out = **in } - if in.DNSServerPort != nil { - in, out := &in.DNSServerPort, &out.DNSServerPort + if in.Size != nil { + in, out := &in.Size, &out.Size *out = new(float64) **out = **in } - if in.FollowRedirects != nil { - in, out := &in.FollowRedirects, &out.FollowRedirects - *out = new(bool) + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) **out = **in } - if in.Host != nil { - in, out := &in.Host, &out.Host +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestFileInitParameters. +func (in *RequestFileInitParameters) DeepCopy() *RequestFileInitParameters { + if in == nil { + return nil + } + out := new(RequestFileInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestFileObservation) DeepCopyInto(out *RequestFileObservation) { + *out = *in + if in.BucketKey != nil { + in, out := &in.BucketKey, &out.BucketKey *out = new(string) **out = **in } - if in.Message != nil { - in, out := &in.Message, &out.Message + if in.Content != nil { + in, out := &in.Content, &out.Content *out = new(string) **out = **in } - if in.Method != nil { - in, out := &in.Method, &out.Method + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.NoSavingResponseBody != nil { - in, out := &in.NoSavingResponseBody, &out.NoSavingResponseBody - *out = new(bool) + if in.OriginalFileName != nil { + in, out := &in.OriginalFileName, &out.OriginalFileName + *out = new(string) **out = **in } - if in.NumberOfPackets != nil { - in, out := &in.NumberOfPackets, &out.NumberOfPackets + if in.Size != nil { + in, out := &in.Size, &out.Size *out = new(float64) **out = **in } - if in.PersistCookies != nil { - in, out := &in.PersistCookies, &out.PersistCookies - *out = new(bool) - **out = **in - } - if in.PlainProtoFile != nil { - in, out := &in.PlainProtoFile, &out.PlainProtoFile + if in.Type != nil { + in, out := &in.Type, &out.Type *out = new(string) **out = **in } - if in.Port != nil { - in, out := &in.Port, &out.Port - *out = new(float64) - **out = **in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestFileObservation. +func (in *RequestFileObservation) DeepCopy() *RequestFileObservation { + if in == nil { + return nil } - if in.ProtoJSONDescriptor != nil { - in, out := &in.ProtoJSONDescriptor, &out.ProtoJSONDescriptor + out := new(RequestFileObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestFileParameters) DeepCopyInto(out *RequestFileParameters) { + *out = *in + if in.Content != nil { + in, out := &in.Content, &out.Content *out = new(string) **out = **in } - if in.Servername != nil { - in, out := &in.Servername, &out.Servername + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.Service != nil { - in, out := &in.Service, &out.Service + if in.OriginalFileName != nil { + in, out := &in.OriginalFileName, &out.OriginalFileName *out = new(string) **out = **in } - if in.ShouldTrackHops != nil { - in, out := &in.ShouldTrackHops, &out.ShouldTrackHops - *out = new(bool) - **out = **in - } - if in.Timeout != nil { - in, out := &in.Timeout, &out.Timeout + if in.Size != nil { + in, out := &in.Size, &out.Size *out = new(float64) **out = **in } - if in.URL != nil { - in, out := &in.URL, &out.URL + 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 RequestDefinitionParameters. -func (in *RequestDefinitionParameters) DeepCopy() *RequestDefinitionParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestFileParameters. +func (in *RequestFileParameters) DeepCopy() *RequestFileParameters { if in == nil { return nil } - out := new(RequestDefinitionParameters) + out := new(RequestFileParameters) in.DeepCopyInto(out) return out } @@ -4575,88 +6827,268 @@ func (in *RetryParameters) DeepCopy() *RetryParameters { if in == nil { return nil } - out := new(RetryParameters) + out := new(RetryParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RumSettingsInitParameters) DeepCopyInto(out *RumSettingsInitParameters) { + *out = *in + if in.ApplicationID != nil { + in, out := &in.ApplicationID, &out.ApplicationID + *out = new(string) + **out = **in + } + if in.ClientTokenID != nil { + in, out := &in.ClientTokenID, &out.ClientTokenID + *out = new(float64) + **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 RumSettingsInitParameters. +func (in *RumSettingsInitParameters) DeepCopy() *RumSettingsInitParameters { + if in == nil { + return nil + } + out := new(RumSettingsInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RumSettingsObservation) DeepCopyInto(out *RumSettingsObservation) { + *out = *in + if in.ApplicationID != nil { + in, out := &in.ApplicationID, &out.ApplicationID + *out = new(string) + **out = **in + } + if in.ClientTokenID != nil { + in, out := &in.ClientTokenID, &out.ClientTokenID + *out = new(float64) + **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 RumSettingsObservation. +func (in *RumSettingsObservation) DeepCopy() *RumSettingsObservation { + if in == nil { + return nil + } + out := new(RumSettingsObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RumSettingsParameters) DeepCopyInto(out *RumSettingsParameters) { + *out = *in + if in.ApplicationID != nil { + in, out := &in.ApplicationID, &out.ApplicationID + *out = new(string) + **out = **in + } + if in.ClientTokenID != nil { + in, out := &in.ClientTokenID, &out.ClientTokenID + *out = new(float64) + **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 RumSettingsParameters. +func (in *RumSettingsParameters) DeepCopy() *RumSettingsParameters { + if in == nil { + return nil + } + out := new(RumSettingsParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingInitParameters) DeepCopyInto(out *SchedulingInitParameters) { + *out = *in + if in.Timeframes != nil { + in, out := &in.Timeframes, &out.Timeframes + *out = make([]TimeframesInitParameters, 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 SchedulingInitParameters. +func (in *SchedulingInitParameters) DeepCopy() *SchedulingInitParameters { + if in == nil { + return nil + } + out := new(SchedulingInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingObservation) DeepCopyInto(out *SchedulingObservation) { + *out = *in + if in.Timeframes != nil { + in, out := &in.Timeframes, &out.Timeframes + *out = make([]TimeframesObservation, 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 SchedulingObservation. +func (in *SchedulingObservation) DeepCopy() *SchedulingObservation { + if in == nil { + return nil + } + out := new(SchedulingObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SchedulingParameters) DeepCopyInto(out *SchedulingParameters) { + *out = *in + if in.Timeframes != nil { + in, out := &in.Timeframes, &out.Timeframes + *out = make([]TimeframesParameters, 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 SchedulingParameters. +func (in *SchedulingParameters) DeepCopy() *SchedulingParameters { + if in == nil { + return nil + } + out := new(SchedulingParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SchedulingInitParameters) DeepCopyInto(out *SchedulingInitParameters) { +func (in *SchedulingTimeframesInitParameters) DeepCopyInto(out *SchedulingTimeframesInitParameters) { *out = *in - if in.Timeframes != nil { - in, out := &in.Timeframes, &out.Timeframes - *out = make([]TimeframesInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.Day != nil { + in, out := &in.Day, &out.Day + *out = new(float64) + **out = **in } - if in.Timezone != nil { - in, out := &in.Timezone, &out.Timezone + if in.From != nil { + in, out := &in.From, &out.From + *out = new(string) + **out = **in + } + if in.To != nil { + in, out := &in.To, &out.To *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingInitParameters. -func (in *SchedulingInitParameters) DeepCopy() *SchedulingInitParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingTimeframesInitParameters. +func (in *SchedulingTimeframesInitParameters) DeepCopy() *SchedulingTimeframesInitParameters { if in == nil { return nil } - out := new(SchedulingInitParameters) + out := new(SchedulingTimeframesInitParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SchedulingObservation) DeepCopyInto(out *SchedulingObservation) { +func (in *SchedulingTimeframesObservation) DeepCopyInto(out *SchedulingTimeframesObservation) { *out = *in - if in.Timeframes != nil { - in, out := &in.Timeframes, &out.Timeframes - *out = make([]TimeframesObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.Day != nil { + in, out := &in.Day, &out.Day + *out = new(float64) + **out = **in } - if in.Timezone != nil { - in, out := &in.Timezone, &out.Timezone + if in.From != nil { + in, out := &in.From, &out.From + *out = new(string) + **out = **in + } + if in.To != nil { + in, out := &in.To, &out.To *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingObservation. -func (in *SchedulingObservation) DeepCopy() *SchedulingObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingTimeframesObservation. +func (in *SchedulingTimeframesObservation) DeepCopy() *SchedulingTimeframesObservation { if in == nil { return nil } - out := new(SchedulingObservation) + out := new(SchedulingTimeframesObservation) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SchedulingParameters) DeepCopyInto(out *SchedulingParameters) { +func (in *SchedulingTimeframesParameters) DeepCopyInto(out *SchedulingTimeframesParameters) { *out = *in - if in.Timeframes != nil { - in, out := &in.Timeframes, &out.Timeframes - *out = make([]TimeframesParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.Day != nil { + in, out := &in.Day, &out.Day + *out = new(float64) + **out = **in } - if in.Timezone != nil { - in, out := &in.Timezone, &out.Timezone + if in.From != nil { + in, out := &in.From, &out.From + *out = new(string) + **out = **in + } + if in.To != nil { + in, out := &in.To, &out.To *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingParameters. -func (in *SchedulingParameters) DeepCopy() *SchedulingParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingTimeframesParameters. +func (in *SchedulingTimeframesParameters) DeepCopy() *SchedulingTimeframesParameters { if in == nil { return nil } - out := new(SchedulingParameters) + out := new(SchedulingTimeframesParameters) in.DeepCopyInto(out) return out } @@ -4664,6 +7096,11 @@ func (in *SchedulingParameters) DeepCopy() *SchedulingParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TargetjsonpathInitParameters) DeepCopyInto(out *TargetjsonpathInitParameters) { *out = *in + if in.Elementsoperator != nil { + in, out := &in.Elementsoperator, &out.Elementsoperator + *out = new(string) + **out = **in + } if in.Jsonpath != nil { in, out := &in.Jsonpath, &out.Jsonpath *out = new(string) @@ -4694,6 +7131,11 @@ func (in *TargetjsonpathInitParameters) DeepCopy() *TargetjsonpathInitParameters // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TargetjsonpathObservation) DeepCopyInto(out *TargetjsonpathObservation) { *out = *in + if in.Elementsoperator != nil { + in, out := &in.Elementsoperator, &out.Elementsoperator + *out = new(string) + **out = **in + } if in.Jsonpath != nil { in, out := &in.Jsonpath, &out.Jsonpath *out = new(string) @@ -4724,6 +7166,11 @@ func (in *TargetjsonpathObservation) DeepCopy() *TargetjsonpathObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TargetjsonpathParameters) DeepCopyInto(out *TargetjsonpathParameters) { *out = *in + if in.Elementsoperator != nil { + in, out := &in.Elementsoperator, &out.Elementsoperator + *out = new(string) + **out = **in + } if in.Jsonpath != nil { in, out := &in.Jsonpath, &out.Jsonpath *out = new(string) @@ -4751,6 +7198,81 @@ func (in *TargetjsonpathParameters) DeepCopy() *TargetjsonpathParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TargetjsonschemaInitParameters) DeepCopyInto(out *TargetjsonschemaInitParameters) { + *out = *in + if in.Jsonschema != nil { + in, out := &in.Jsonschema, &out.Jsonschema + *out = new(string) + **out = **in + } + if in.Metaschema != nil { + in, out := &in.Metaschema, &out.Metaschema + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetjsonschemaInitParameters. +func (in *TargetjsonschemaInitParameters) DeepCopy() *TargetjsonschemaInitParameters { + if in == nil { + return nil + } + out := new(TargetjsonschemaInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TargetjsonschemaObservation) DeepCopyInto(out *TargetjsonschemaObservation) { + *out = *in + if in.Jsonschema != nil { + in, out := &in.Jsonschema, &out.Jsonschema + *out = new(string) + **out = **in + } + if in.Metaschema != nil { + in, out := &in.Metaschema, &out.Metaschema + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetjsonschemaObservation. +func (in *TargetjsonschemaObservation) DeepCopy() *TargetjsonschemaObservation { + if in == nil { + return nil + } + out := new(TargetjsonschemaObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TargetjsonschemaParameters) DeepCopyInto(out *TargetjsonschemaParameters) { + *out = *in + if in.Jsonschema != nil { + in, out := &in.Jsonschema, &out.Jsonschema + *out = new(string) + **out = **in + } + if in.Metaschema != nil { + in, out := &in.Metaschema, &out.Metaschema + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TargetjsonschemaParameters. +func (in *TargetjsonschemaParameters) DeepCopy() *TargetjsonschemaParameters { + if in == nil { + return nil + } + out := new(TargetjsonschemaParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TargetxpathInitParameters) DeepCopyInto(out *TargetxpathInitParameters) { *out = *in @@ -4871,6 +7393,11 @@ func (in *Test) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TestAssertionInitParameters) DeepCopyInto(out *TestAssertionInitParameters) { *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } if in.Operator != nil { in, out := &in.Operator, &out.Operator *out = new(string) @@ -4888,17 +7415,18 @@ func (in *TestAssertionInitParameters) DeepCopyInto(out *TestAssertionInitParame } if in.Targetjsonpath != nil { in, out := &in.Targetjsonpath, &out.Targetjsonpath - *out = make([]AssertionTargetjsonpathInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AssertionTargetjsonpathInitParameters) + (*in).DeepCopyInto(*out) + } + if in.Targetjsonschema != nil { + in, out := &in.Targetjsonschema, &out.Targetjsonschema + *out = new(AssertionTargetjsonschemaInitParameters) + (*in).DeepCopyInto(*out) } if in.Targetxpath != nil { in, out := &in.Targetxpath, &out.Targetxpath - *out = make([]AssertionTargetxpathInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AssertionTargetxpathInitParameters) + (*in).DeepCopyInto(*out) } if in.TimingsScope != nil { in, out := &in.TimingsScope, &out.TimingsScope @@ -4925,6 +7453,11 @@ func (in *TestAssertionInitParameters) DeepCopy() *TestAssertionInitParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TestAssertionObservation) DeepCopyInto(out *TestAssertionObservation) { *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } if in.Operator != nil { in, out := &in.Operator, &out.Operator *out = new(string) @@ -4942,17 +7475,18 @@ func (in *TestAssertionObservation) DeepCopyInto(out *TestAssertionObservation) } if in.Targetjsonpath != nil { in, out := &in.Targetjsonpath, &out.Targetjsonpath - *out = make([]AssertionTargetjsonpathObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AssertionTargetjsonpathObservation) + (*in).DeepCopyInto(*out) + } + if in.Targetjsonschema != nil { + in, out := &in.Targetjsonschema, &out.Targetjsonschema + *out = new(AssertionTargetjsonschemaObservation) + (*in).DeepCopyInto(*out) } if in.Targetxpath != nil { in, out := &in.Targetxpath, &out.Targetxpath - *out = make([]AssertionTargetxpathObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AssertionTargetxpathObservation) + (*in).DeepCopyInto(*out) } if in.TimingsScope != nil { in, out := &in.TimingsScope, &out.TimingsScope @@ -4979,6 +7513,11 @@ func (in *TestAssertionObservation) DeepCopy() *TestAssertionObservation { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TestAssertionParameters) DeepCopyInto(out *TestAssertionParameters) { *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code + *out = new(string) + **out = **in + } if in.Operator != nil { in, out := &in.Operator, &out.Operator *out = new(string) @@ -4996,17 +7535,18 @@ func (in *TestAssertionParameters) DeepCopyInto(out *TestAssertionParameters) { } if in.Targetjsonpath != nil { in, out := &in.Targetjsonpath, &out.Targetjsonpath - *out = make([]AssertionTargetjsonpathParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AssertionTargetjsonpathParameters) + (*in).DeepCopyInto(*out) + } + if in.Targetjsonschema != nil { + in, out := &in.Targetjsonschema, &out.Targetjsonschema + *out = new(AssertionTargetjsonschemaParameters) + (*in).DeepCopyInto(*out) } if in.Targetxpath != nil { in, out := &in.Targetxpath, &out.Targetxpath - *out = make([]AssertionTargetxpathParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(AssertionTargetxpathParameters) + (*in).DeepCopyInto(*out) } if in.TimingsScope != nil { in, out := &in.TimingsScope, &out.TimingsScope @@ -5061,6 +7601,22 @@ func (in *TestInitParameters) DeepCopyInto(out *TestInitParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ConfigInitialApplicationArguments != nil { + in, out := &in.ConfigInitialApplicationArguments, &out.ConfigInitialApplicationArguments + *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 + } + } if in.ConfigVariable != nil { in, out := &in.ConfigVariable, &out.ConfigVariable *out = make([]ConfigVariableInitParameters, len(*in)) @@ -5079,6 +7635,11 @@ func (in *TestInitParameters) DeepCopyInto(out *TestInitParameters) { } } } + if in.ForceDeleteDependencies != nil { + in, out := &in.ForceDeleteDependencies, &out.ForceDeleteDependencies + *out = new(bool) + **out = **in + } if in.Locations != nil { in, out := &in.Locations, &out.Locations *out = make([]*string, len(*in)) @@ -5095,6 +7656,18 @@ func (in *TestInitParameters) DeepCopyInto(out *TestInitParameters) { *out = new(string) **out = **in } + if in.MobileOptionsList != nil { + in, out := &in.MobileOptionsList, &out.MobileOptionsList + *out = new(MobileOptionsListInitParameters) + (*in).DeepCopyInto(*out) + } + if in.MobileStep != nil { + in, out := &in.MobileStep, &out.MobileStep + *out = make([]MobileStepInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -5102,28 +7675,27 @@ func (in *TestInitParameters) DeepCopyInto(out *TestInitParameters) { } if in.OptionsList != nil { in, out := &in.OptionsList, &out.OptionsList - *out = make([]OptionsListInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(OptionsListInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestBasicauth != nil { in, out := &in.RequestBasicauth, &out.RequestBasicauth - *out = make([]TestRequestBasicauthInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestBasicauthInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestClientCertificate != nil { in, out := &in.RequestClientCertificate, &out.RequestClientCertificate - *out = make([]TestRequestClientCertificateInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestClientCertificateInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestDefinition != nil { in, out := &in.RequestDefinition, &out.RequestDefinition - *out = make([]TestRequestDefinitionInitParameters, len(*in)) + *out = new(TestRequestDefinitionInitParameters) + (*in).DeepCopyInto(*out) + } + if in.RequestFile != nil { + in, out := &in.RequestFile, &out.RequestFile + *out = make([]TestRequestFileInitParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -5162,10 +7734,8 @@ func (in *TestInitParameters) DeepCopyInto(out *TestInitParameters) { } if in.RequestProxy != nil { in, out := &in.RequestProxy, &out.RequestProxy - *out = make([]TestRequestProxyInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestProxyInitParameters) + (*in).DeepCopyInto(*out) } if in.RequestQuery != nil { in, out := &in.RequestQuery, &out.RequestQuery @@ -5214,6 +7784,11 @@ func (in *TestInitParameters) DeepCopyInto(out *TestInitParameters) { *out = new(string) **out = **in } + if in.VariablesFromScript != nil { + in, out := &in.VariablesFromScript, &out.VariablesFromScript + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestInitParameters. @@ -5289,6 +7864,22 @@ func (in *TestObservation) DeepCopyInto(out *TestObservation) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ConfigInitialApplicationArguments != nil { + in, out := &in.ConfigInitialApplicationArguments, &out.ConfigInitialApplicationArguments + *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 + } + } if in.ConfigVariable != nil { in, out := &in.ConfigVariable, &out.ConfigVariable *out = make([]ConfigVariableObservation, len(*in)) @@ -5307,6 +7898,11 @@ func (in *TestObservation) DeepCopyInto(out *TestObservation) { } } } + if in.ForceDeleteDependencies != nil { + in, out := &in.ForceDeleteDependencies, &out.ForceDeleteDependencies + *out = new(bool) + **out = **in + } if in.ID != nil { in, out := &in.ID, &out.ID *out = new(string) @@ -5328,6 +7924,18 @@ func (in *TestObservation) DeepCopyInto(out *TestObservation) { *out = new(string) **out = **in } + if in.MobileOptionsList != nil { + in, out := &in.MobileOptionsList, &out.MobileOptionsList + *out = new(MobileOptionsListObservation) + (*in).DeepCopyInto(*out) + } + if in.MobileStep != nil { + in, out := &in.MobileStep, &out.MobileStep + *out = make([]MobileStepObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.MonitorID != nil { in, out := &in.MonitorID, &out.MonitorID *out = new(float64) @@ -5340,28 +7948,27 @@ func (in *TestObservation) DeepCopyInto(out *TestObservation) { } if in.OptionsList != nil { in, out := &in.OptionsList, &out.OptionsList - *out = make([]OptionsListObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(OptionsListObservation) + (*in).DeepCopyInto(*out) } if in.RequestBasicauth != nil { in, out := &in.RequestBasicauth, &out.RequestBasicauth - *out = make([]TestRequestBasicauthObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestBasicauthObservation) + (*in).DeepCopyInto(*out) } if in.RequestClientCertificate != nil { in, out := &in.RequestClientCertificate, &out.RequestClientCertificate - *out = make([]TestRequestClientCertificateObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestClientCertificateObservation) + (*in).DeepCopyInto(*out) } if in.RequestDefinition != nil { in, out := &in.RequestDefinition, &out.RequestDefinition - *out = make([]TestRequestDefinitionObservation, len(*in)) + *out = new(TestRequestDefinitionObservation) + (*in).DeepCopyInto(*out) + } + if in.RequestFile != nil { + in, out := &in.RequestFile, &out.RequestFile + *out = make([]TestRequestFileObservation, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -5400,10 +8007,8 @@ func (in *TestObservation) DeepCopyInto(out *TestObservation) { } if in.RequestProxy != nil { in, out := &in.RequestProxy, &out.RequestProxy - *out = make([]TestRequestProxyObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestProxyObservation) + (*in).DeepCopyInto(*out) } if in.RequestQuery != nil { in, out := &in.RequestQuery, &out.RequestQuery @@ -5452,6 +8057,11 @@ func (in *TestObservation) DeepCopyInto(out *TestObservation) { *out = new(string) **out = **in } + if in.VariablesFromScript != nil { + in, out := &in.VariablesFromScript, &out.VariablesFromScript + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestObservation. @@ -5495,6 +8105,22 @@ func (in *TestParameters) DeepCopyInto(out *TestParameters) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.ConfigInitialApplicationArguments != nil { + in, out := &in.ConfigInitialApplicationArguments, &out.ConfigInitialApplicationArguments + *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 + } + } if in.ConfigVariable != nil { in, out := &in.ConfigVariable, &out.ConfigVariable *out = make([]ConfigVariableParameters, len(*in)) @@ -5513,6 +8139,11 @@ func (in *TestParameters) DeepCopyInto(out *TestParameters) { } } } + if in.ForceDeleteDependencies != nil { + in, out := &in.ForceDeleteDependencies, &out.ForceDeleteDependencies + *out = new(bool) + **out = **in + } if in.Locations != nil { in, out := &in.Locations, &out.Locations *out = make([]*string, len(*in)) @@ -5529,6 +8160,18 @@ func (in *TestParameters) DeepCopyInto(out *TestParameters) { *out = new(string) **out = **in } + if in.MobileOptionsList != nil { + in, out := &in.MobileOptionsList, &out.MobileOptionsList + *out = new(MobileOptionsListParameters) + (*in).DeepCopyInto(*out) + } + if in.MobileStep != nil { + in, out := &in.MobileStep, &out.MobileStep + *out = make([]MobileStepParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } if in.Name != nil { in, out := &in.Name, &out.Name *out = new(string) @@ -5536,28 +8179,27 @@ func (in *TestParameters) DeepCopyInto(out *TestParameters) { } if in.OptionsList != nil { in, out := &in.OptionsList, &out.OptionsList - *out = make([]OptionsListParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(OptionsListParameters) + (*in).DeepCopyInto(*out) } if in.RequestBasicauth != nil { in, out := &in.RequestBasicauth, &out.RequestBasicauth - *out = make([]TestRequestBasicauthParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestBasicauthParameters) + (*in).DeepCopyInto(*out) } if in.RequestClientCertificate != nil { in, out := &in.RequestClientCertificate, &out.RequestClientCertificate - *out = make([]TestRequestClientCertificateParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestClientCertificateParameters) + (*in).DeepCopyInto(*out) } if in.RequestDefinition != nil { in, out := &in.RequestDefinition, &out.RequestDefinition - *out = make([]TestRequestDefinitionParameters, len(*in)) + *out = new(TestRequestDefinitionParameters) + (*in).DeepCopyInto(*out) + } + if in.RequestFile != nil { + in, out := &in.RequestFile, &out.RequestFile + *out = make([]TestRequestFileParameters, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -5596,10 +8238,8 @@ func (in *TestParameters) DeepCopyInto(out *TestParameters) { } if in.RequestProxy != nil { in, out := &in.RequestProxy, &out.RequestProxy - *out = make([]TestRequestProxyParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(TestRequestProxyParameters) + (*in).DeepCopyInto(*out) } if in.RequestQuery != nil { in, out := &in.RequestQuery, &out.RequestQuery @@ -5648,6 +8288,11 @@ func (in *TestParameters) DeepCopyInto(out *TestParameters) { *out = new(string) **out = **in } + if in.VariablesFromScript != nil { + in, out := &in.VariablesFromScript, &out.VariablesFromScript + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestParameters. @@ -5663,6 +8308,11 @@ func (in *TestParameters) DeepCopy() *TestParameters { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TestRequestBasicauthInitParameters) DeepCopyInto(out *TestRequestBasicauthInitParameters) { *out = *in + if in.AccessKeySecretRef != nil { + in, out := &in.AccessKeySecretRef, &out.AccessKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.AccessTokenURL != nil { in, out := &in.AccessTokenURL, &out.AccessTokenURL *out = new(string) @@ -5678,11 +8328,21 @@ func (in *TestRequestBasicauthInitParameters) DeepCopyInto(out *TestRequestBasic *out = new(string) **out = **in } + if in.ClientSecretSecretRef != nil { + in, out := &in.ClientSecretSecretRef, &out.ClientSecretSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.Domain != nil { in, out := &in.Domain, &out.Domain *out = new(string) **out = **in } + if in.PasswordSecretRef != nil { + in, out := &in.PasswordSecretRef, &out.PasswordSecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.Region != nil { in, out := &in.Region, &out.Region *out = new(string) @@ -5698,6 +8358,11 @@ func (in *TestRequestBasicauthInitParameters) DeepCopyInto(out *TestRequestBasic *out = new(string) **out = **in } + if in.SecretKeySecretRef != nil { + in, out := &in.SecretKeySecretRef, &out.SecretKeySecretRef + *out = new(v1.SecretKeySelector) + **out = **in + } if in.ServiceName != nil { in, out := &in.ServiceName, &out.ServiceName *out = new(string) @@ -5925,17 +8590,13 @@ func (in *TestRequestClientCertificateInitParameters) DeepCopyInto(out *TestRequ *out = *in if in.Cert != nil { in, out := &in.Cert, &out.Cert - *out = make([]RequestClientCertificateCertInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateCertInitParameters) + (*in).DeepCopyInto(*out) } if in.Key != nil { in, out := &in.Key, &out.Key - *out = make([]RequestClientCertificateKeyInitParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateKeyInitParameters) + (*in).DeepCopyInto(*out) } } @@ -5954,17 +8615,13 @@ func (in *TestRequestClientCertificateObservation) DeepCopyInto(out *TestRequest *out = *in if in.Cert != nil { in, out := &in.Cert, &out.Cert - *out = make([]RequestClientCertificateCertObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateCertObservation) + (*in).DeepCopyInto(*out) } if in.Key != nil { in, out := &in.Key, &out.Key - *out = make([]RequestClientCertificateKeyObservation, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateKeyObservation) + (*in).DeepCopyInto(*out) } } @@ -5983,17 +8640,13 @@ func (in *TestRequestClientCertificateParameters) DeepCopyInto(out *TestRequestC *out = *in if in.Cert != nil { in, out := &in.Cert, &out.Cert - *out = make([]RequestClientCertificateCertParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateCertParameters) + (*in).DeepCopyInto(*out) } if in.Key != nil { in, out := &in.Key, &out.Key - *out = make([]RequestClientCertificateKeyParameters, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + *out = new(RequestClientCertificateKeyParameters) + (*in).DeepCopyInto(*out) } } @@ -6043,7 +8696,28 @@ func (in *TestRequestDefinitionInitParameters) DeepCopyInto(out *TestRequestDefi } if in.DNSServerPort != nil { in, out := &in.DNSServerPort, &out.DNSServerPort - *out = new(float64) + *out = new(string) + **out = **in + } + if in.Form != nil { + in, out := &in.Form, &out.Form + *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 + } + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) **out = **in } if in.Host != nil { @@ -6051,6 +8725,11 @@ func (in *TestRequestDefinitionInitParameters) DeepCopyInto(out *TestRequestDefi *out = new(string) **out = **in } + if in.IsMessageBase64Encoded != nil { + in, out := &in.IsMessageBase64Encoded, &out.IsMessageBase64Encoded + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) @@ -6083,7 +8762,7 @@ func (in *TestRequestDefinitionInitParameters) DeepCopyInto(out *TestRequestDefi } if in.Port != nil { in, out := &in.Port, &out.Port - *out = new(float64) + *out = new(string) **out = **in } if in.ProtoJSONDescriptor != nil { @@ -6157,21 +8836,194 @@ func (in *TestRequestDefinitionObservation) DeepCopyInto(out *TestRequestDefinit } } } - if in.DNSServer != nil { - in, out := &in.DNSServer, &out.DNSServer + if in.DNSServer != nil { + in, out := &in.DNSServer, &out.DNSServer + *out = new(string) + **out = **in + } + if in.DNSServerPort != nil { + in, out := &in.DNSServerPort, &out.DNSServerPort + *out = new(string) + **out = **in + } + if in.Form != nil { + in, out := &in.Form, &out.Form + *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 + } + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion + *out = new(string) + **out = **in + } + if in.Host != nil { + in, out := &in.Host, &out.Host + *out = new(string) + **out = **in + } + if in.IsMessageBase64Encoded != nil { + in, out := &in.IsMessageBase64Encoded, &out.IsMessageBase64Encoded + *out = new(bool) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Method != nil { + in, out := &in.Method, &out.Method + *out = new(string) + **out = **in + } + if in.NoSavingResponseBody != nil { + in, out := &in.NoSavingResponseBody, &out.NoSavingResponseBody + *out = new(bool) + **out = **in + } + if in.NumberOfPackets != nil { + in, out := &in.NumberOfPackets, &out.NumberOfPackets + *out = new(float64) + **out = **in + } + if in.PersistCookies != nil { + in, out := &in.PersistCookies, &out.PersistCookies + *out = new(bool) + **out = **in + } + if in.PlainProtoFile != nil { + in, out := &in.PlainProtoFile, &out.PlainProtoFile + *out = new(string) + **out = **in + } + if in.Port != nil { + in, out := &in.Port, &out.Port + *out = new(string) + **out = **in + } + if in.ProtoJSONDescriptor != nil { + in, out := &in.ProtoJSONDescriptor, &out.ProtoJSONDescriptor + *out = new(string) + **out = **in + } + if in.Servername != nil { + in, out := &in.Servername, &out.Servername + *out = new(string) + **out = **in + } + if in.Service != nil { + in, out := &in.Service, &out.Service + *out = new(string) + **out = **in + } + if in.ShouldTrackHops != nil { + in, out := &in.ShouldTrackHops, &out.ShouldTrackHops + *out = new(bool) + **out = **in + } + if in.Timeout != nil { + in, out := &in.Timeout, &out.Timeout + *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 TestRequestDefinitionObservation. +func (in *TestRequestDefinitionObservation) DeepCopy() *TestRequestDefinitionObservation { + if in == nil { + return nil + } + out := new(TestRequestDefinitionObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestRequestDefinitionParameters) DeepCopyInto(out *TestRequestDefinitionParameters) { + *out = *in + if in.Body != nil { + in, out := &in.Body, &out.Body + *out = new(string) + **out = **in + } + if in.BodyType != nil { + in, out := &in.BodyType, &out.BodyType + *out = new(string) + **out = **in + } + if in.CallType != nil { + in, out := &in.CallType, &out.CallType + *out = new(string) + **out = **in + } + if in.CertificateDomains != nil { + in, out := &in.CertificateDomains, &out.CertificateDomains + *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.DNSServer != nil { + in, out := &in.DNSServer, &out.DNSServer + *out = new(string) + **out = **in + } + if in.DNSServerPort != nil { + in, out := &in.DNSServerPort, &out.DNSServerPort + *out = new(string) + **out = **in + } + if in.Form != nil { + in, out := &in.Form, &out.Form + *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 + } + } + if in.HTTPVersion != nil { + in, out := &in.HTTPVersion, &out.HTTPVersion *out = new(string) **out = **in } - if in.DNSServerPort != nil { - in, out := &in.DNSServerPort, &out.DNSServerPort - *out = new(float64) - **out = **in - } if in.Host != nil { in, out := &in.Host, &out.Host *out = new(string) **out = **in } + if in.IsMessageBase64Encoded != nil { + in, out := &in.IsMessageBase64Encoded, &out.IsMessageBase64Encoded + *out = new(bool) + **out = **in + } if in.Message != nil { in, out := &in.Message, &out.Message *out = new(string) @@ -6204,7 +9056,7 @@ func (in *TestRequestDefinitionObservation) DeepCopyInto(out *TestRequestDefinit } if in.Port != nil { in, out := &in.Port, &out.Port - *out = new(float64) + *out = new(string) **out = **in } if in.ProtoJSONDescriptor != nil { @@ -6239,133 +9091,137 @@ func (in *TestRequestDefinitionObservation) DeepCopyInto(out *TestRequestDefinit } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestRequestDefinitionObservation. -func (in *TestRequestDefinitionObservation) DeepCopy() *TestRequestDefinitionObservation { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestRequestDefinitionParameters. +func (in *TestRequestDefinitionParameters) DeepCopy() *TestRequestDefinitionParameters { if in == nil { return nil } - out := new(TestRequestDefinitionObservation) + out := new(TestRequestDefinitionParameters) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *TestRequestDefinitionParameters) DeepCopyInto(out *TestRequestDefinitionParameters) { +func (in *TestRequestFileInitParameters) DeepCopyInto(out *TestRequestFileInitParameters) { *out = *in - if in.Body != nil { - in, out := &in.Body, &out.Body + if in.Content != nil { + in, out := &in.Content, &out.Content *out = new(string) **out = **in } - if in.BodyType != nil { - in, out := &in.BodyType, &out.BodyType + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.CallType != nil { - in, out := &in.CallType, &out.CallType + if in.OriginalFileName != nil { + in, out := &in.OriginalFileName, &out.OriginalFileName *out = new(string) **out = **in } - if in.CertificateDomains != nil { - in, out := &in.CertificateDomains, &out.CertificateDomains - *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.Size != nil { + in, out := &in.Size, &out.Size + *out = new(float64) + **out = **in } - if in.DNSServer != nil { - in, out := &in.DNSServer, &out.DNSServer + if in.Type != nil { + in, out := &in.Type, &out.Type *out = new(string) **out = **in } - if in.DNSServerPort != nil { - in, out := &in.DNSServerPort, &out.DNSServerPort - *out = new(float64) - **out = **in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestRequestFileInitParameters. +func (in *TestRequestFileInitParameters) DeepCopy() *TestRequestFileInitParameters { + if in == nil { + return nil } - if in.Host != nil { - in, out := &in.Host, &out.Host + out := new(TestRequestFileInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestRequestFileObservation) DeepCopyInto(out *TestRequestFileObservation) { + *out = *in + if in.BucketKey != nil { + in, out := &in.BucketKey, &out.BucketKey *out = new(string) **out = **in } - if in.Message != nil { - in, out := &in.Message, &out.Message + if in.Content != nil { + in, out := &in.Content, &out.Content *out = new(string) **out = **in } - if in.Method != nil { - in, out := &in.Method, &out.Method + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.NoSavingResponseBody != nil { - in, out := &in.NoSavingResponseBody, &out.NoSavingResponseBody - *out = new(bool) + if in.OriginalFileName != nil { + in, out := &in.OriginalFileName, &out.OriginalFileName + *out = new(string) **out = **in } - if in.NumberOfPackets != nil { - in, out := &in.NumberOfPackets, &out.NumberOfPackets + if in.Size != nil { + in, out := &in.Size, &out.Size *out = new(float64) **out = **in } - if in.PersistCookies != nil { - in, out := &in.PersistCookies, &out.PersistCookies - *out = new(bool) - **out = **in - } - if in.PlainProtoFile != nil { - in, out := &in.PlainProtoFile, &out.PlainProtoFile + if in.Type != nil { + in, out := &in.Type, &out.Type *out = new(string) **out = **in } - if in.Port != nil { - in, out := &in.Port, &out.Port - *out = new(float64) - **out = **in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestRequestFileObservation. +func (in *TestRequestFileObservation) DeepCopy() *TestRequestFileObservation { + if in == nil { + return nil } - if in.ProtoJSONDescriptor != nil { - in, out := &in.ProtoJSONDescriptor, &out.ProtoJSONDescriptor + out := new(TestRequestFileObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestRequestFileParameters) DeepCopyInto(out *TestRequestFileParameters) { + *out = *in + if in.Content != nil { + in, out := &in.Content, &out.Content *out = new(string) **out = **in } - if in.Servername != nil { - in, out := &in.Servername, &out.Servername + if in.Name != nil { + in, out := &in.Name, &out.Name *out = new(string) **out = **in } - if in.Service != nil { - in, out := &in.Service, &out.Service + if in.OriginalFileName != nil { + in, out := &in.OriginalFileName, &out.OriginalFileName *out = new(string) **out = **in } - if in.ShouldTrackHops != nil { - in, out := &in.ShouldTrackHops, &out.ShouldTrackHops - *out = new(bool) - **out = **in - } - if in.Timeout != nil { - in, out := &in.Timeout, &out.Timeout + if in.Size != nil { + in, out := &in.Size, &out.Size *out = new(float64) **out = **in } - if in.URL != nil { - in, out := &in.URL, &out.URL + 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 TestRequestDefinitionParameters. -func (in *TestRequestDefinitionParameters) DeepCopy() *TestRequestDefinitionParameters { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestRequestFileParameters. +func (in *TestRequestFileParameters) DeepCopy() *TestRequestFileParameters { if in == nil { return nil } - out := new(TestRequestDefinitionParameters) + out := new(TestRequestFileParameters) in.DeepCopyInto(out) return out } @@ -6678,6 +9534,87 @@ func (in *TotpParametersParameters) DeepCopy() *TotpParametersParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserLocatorInitParameters) DeepCopyInto(out *UserLocatorInitParameters) { + *out = *in + if in.FailTestOnCannotLocate != nil { + in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate + *out = new(bool) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]ValuesInitParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserLocatorInitParameters. +func (in *UserLocatorInitParameters) DeepCopy() *UserLocatorInitParameters { + if in == nil { + return nil + } + out := new(UserLocatorInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserLocatorObservation) DeepCopyInto(out *UserLocatorObservation) { + *out = *in + if in.FailTestOnCannotLocate != nil { + in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate + *out = new(bool) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]ValuesObservation, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserLocatorObservation. +func (in *UserLocatorObservation) DeepCopy() *UserLocatorObservation { + if in == nil { + return nil + } + out := new(UserLocatorObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UserLocatorParameters) DeepCopyInto(out *UserLocatorParameters) { + *out = *in + if in.FailTestOnCannotLocate != nil { + in, out := &in.FailTestOnCannotLocate, &out.FailTestOnCannotLocate + *out = new(bool) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]ValuesParameters, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserLocatorParameters. +func (in *UserLocatorParameters) DeepCopy() *UserLocatorParameters { + if in == nil { + return nil + } + out := new(UserLocatorParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ValueInitParameters) DeepCopyInto(out *ValueInitParameters) { *out = *in @@ -6753,6 +9690,81 @@ func (in *ValueParameters) DeepCopy() *ValueParameters { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ValuesInitParameters) DeepCopyInto(out *ValuesInitParameters) { + *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 ValuesInitParameters. +func (in *ValuesInitParameters) DeepCopy() *ValuesInitParameters { + if in == nil { + return nil + } + out := new(ValuesInitParameters) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ValuesObservation) DeepCopyInto(out *ValuesObservation) { + *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 ValuesObservation. +func (in *ValuesObservation) DeepCopy() *ValuesObservation { + if in == nil { + return nil + } + out := new(ValuesObservation) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ValuesParameters) DeepCopyInto(out *ValuesParameters) { + *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 ValuesParameters. +func (in *ValuesParameters) DeepCopy() *ValuesParameters { + if in == nil { + return nil + } + out := new(ValuesParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VariableInitParameters) DeepCopyInto(out *VariableInitParameters) { *out = *in @@ -6766,6 +9778,11 @@ func (in *VariableInitParameters) DeepCopyInto(out *VariableInitParameters) { *out = new(string) **out = **in } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariableInitParameters. @@ -6791,6 +9808,11 @@ func (in *VariableObservation) DeepCopyInto(out *VariableObservation) { *out = new(string) **out = **in } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariableObservation. @@ -6816,6 +9838,11 @@ func (in *VariableParameters) DeepCopyInto(out *VariableParameters) { *out = new(string) **out = **in } + if in.Secure != nil { + in, out := &in.Secure, &out.Secure + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VariableParameters. diff --git a/apis/synthetics/v1alpha1/zz_generated.managed.go b/apis/synthetics/v1beta1/zz_generated.managed.go similarity index 99% rename from apis/synthetics/v1alpha1/zz_generated.managed.go rename to apis/synthetics/v1beta1/zz_generated.managed.go index 9957ad7..bd98dc7 100644 --- a/apis/synthetics/v1alpha1/zz_generated.managed.go +++ b/apis/synthetics/v1beta1/zz_generated.managed.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" diff --git a/apis/synthetics/v1alpha1/zz_generated.managedlist.go b/apis/synthetics/v1beta1/zz_generated.managedlist.go similarity index 98% rename from apis/synthetics/v1alpha1/zz_generated.managedlist.go rename to apis/synthetics/v1beta1/zz_generated.managedlist.go index 51486ad..716589b 100644 --- a/apis/synthetics/v1alpha1/zz_generated.managedlist.go +++ b/apis/synthetics/v1beta1/zz_generated.managedlist.go @@ -3,7 +3,7 @@ Copyright 2022 Upbound Inc. */ // Code generated by angryjet. DO NOT EDIT. -package v1alpha1 +package v1beta1 import resource "github.com/crossplane/crossplane-runtime/pkg/resource" diff --git a/apis/synthetics/v1alpha1/zz_globalvariable_terraformed.go b/apis/synthetics/v1beta1/zz_globalvariable_terraformed.go similarity index 94% rename from apis/synthetics/v1alpha1/zz_globalvariable_terraformed.go rename to apis/synthetics/v1beta1/zz_globalvariable_terraformed.go index 2b18035..6b44ada 100755 --- a/apis/synthetics/v1alpha1/zz_globalvariable_terraformed.go +++ b/apis/synthetics/v1beta1/zz_globalvariable_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *GlobalVariable) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this GlobalVariable func (tr *GlobalVariable) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"value": "spec.forProvider.valueSecretRef"} + return map[string]string{"value": "valueSecretRef"} } // GetObservation of this GlobalVariable diff --git a/apis/synthetics/v1alpha1/zz_globalvariable_types.go b/apis/synthetics/v1beta1/zz_globalvariable_types.go similarity index 64% rename from apis/synthetics/v1alpha1/zz_globalvariable_types.go rename to apis/synthetics/v1beta1/zz_globalvariable_types.go index f76dda4..b4781b6 100755 --- a/apis/synthetics/v1alpha1/zz_globalvariable_types.go +++ b/apis/synthetics/v1beta1/zz_globalvariable_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,15 +15,23 @@ import ( type GlobalVariableInitParameters struct { - // (String) Description of the global variable. - // Description of the global variable. + // (String) Description of the global variable. Defaults to "". + // Description of the global variable. Defaults to `""`. Description *string `json:"description,omitempty" tf:"description,omitempty"` - // (String) Synthetics global variable name. - // Synthetics global variable name. + // (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + // If set to true, the global variable is a FIDO variable. Defaults to `false`. + IsFido *bool `json:"isFido,omitempty" tf:"is_fido,omitempty"` + + // (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. + // If set to true, the global variable is a TOTP variable. Defaults to `false`. + IsTotp *bool `json:"isTotp,omitempty" tf:"is_totp,omitempty"` + + // (String) Synthetics global variable name. Must be all uppercase with underscores. + // Synthetics global variable name. Must be all uppercase with underscores. 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) + // (Block List) 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"` @@ -35,38 +39,50 @@ type GlobalVariableInitParameters struct { // 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) + // (Block List) 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. + // (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers to associate with the Synthetics global variable. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +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`. + // (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. Defaults to false. + // If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. 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"` + + // (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. + // The value of the global variable. Required unless `is_fido` is set to `true`. + ValueSecretRef *v1.SecretKeySelector `json:"valueSecretRef,omitempty" tf:"-"` } type GlobalVariableObservation struct { - // (String) Description of the global variable. - // Description of the global variable. + // (String) Description of the global variable. Defaults to "". + // Description of the global variable. Defaults to `""`. 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. + // (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + // If set to true, the global variable is a FIDO variable. Defaults to `false`. + IsFido *bool `json:"isFido,omitempty" tf:"is_fido,omitempty"` + + // (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. + // If set to true, the global variable is a TOTP variable. Defaults to `false`. + IsTotp *bool `json:"isTotp,omitempty" tf:"is_totp,omitempty"` + + // (String) Synthetics global variable name. Must be all uppercase with underscores. + // Synthetics global variable name. Must be all uppercase with underscores. 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) + // (Block List) 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"` @@ -74,17 +90,17 @@ type GlobalVariableObservation struct { // 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) + // (Block List) 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. + // (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers to associate with the Synthetics global variable. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +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`. + // (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. Defaults to false. + // If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. 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. @@ -94,17 +110,27 @@ type GlobalVariableObservation struct { type GlobalVariableParameters struct { - // (String) Description of the global variable. - // Description of the global variable. + // (String) Description of the global variable. Defaults to "". + // Description of the global variable. Defaults to `""`. // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // (String) Synthetics global variable name. - // Synthetics global variable name. + // (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + // If set to true, the global variable is a FIDO variable. Defaults to `false`. + // +kubebuilder:validation:Optional + IsFido *bool `json:"isFido,omitempty" tf:"is_fido,omitempty"` + + // (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. + // If set to true, the global variable is a TOTP variable. Defaults to `false`. + // +kubebuilder:validation:Optional + IsTotp *bool `json:"isTotp,omitempty" tf:"is_totp,omitempty"` + + // (String) Synthetics global variable name. Must be all uppercase with underscores. + // Synthetics global variable name. Must be all uppercase with underscores. // +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) + // (Block List) 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"` @@ -114,19 +140,19 @@ type GlobalVariableParameters struct { // +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) + // (Block List) 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. + // (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers to associate with the Synthetics global variable. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +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`. + // (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. Defaults to false. + // If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. Defaults to `false`. // +kubebuilder:validation:Optional Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` @@ -135,29 +161,29 @@ type GlobalVariableParameters struct { // +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. + // (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. + // The value of the global variable. Required unless `is_fido` is set to `true`. // +kubebuilder:validation:Optional - ValueSecretRef v1.SecretKeySelector `json:"valueSecretRef" tf:"-"` + ValueSecretRef *v1.SecretKeySelector `json:"valueSecretRef,omitempty" tf:"-"` } type OptionsInitParameters struct { - // (Block List, Max: 1) Parameters needed for MFA/TOTP. (see below for nested schema) + // (Block List) 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) + // (Block List) 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) + // (Block List) 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"` @@ -173,11 +199,11 @@ type ParseTestOptionsInitParameters struct { // 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) + // (Block List) (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`. + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, local_variable. + // Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `http_status_code`, `local_variable`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -191,11 +217,11 @@ type ParseTestOptionsObservation struct { // 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) + // (Block List) (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`. + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, local_variable. + // Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `http_status_code`, `local_variable`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -211,46 +237,46 @@ type ParseTestOptionsParameters struct { // +kubebuilder:validation:Optional LocalVariableName *string `json:"localVariableName,omitempty" tf:"local_variable_name,omitempty"` - // (Block List, Max: 1) (see below for nested schema) + // (Block List) (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`. + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, local_variable. + // Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `http_status_code`, `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. + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, 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. + // (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. // 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. + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, 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. + // (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. // 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. + // (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, 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. + // (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. // Value for the parser to use, required for type `json_path` or `regex`. // +kubebuilder:validation:Optional Value *string `json:"value,omitempty" tf:"value,omitempty"` @@ -258,35 +284,35 @@ type ParserParameters struct { type TotpParametersInitParameters struct { - // (Number) Number of digits for the OTP. - // Number of digits for the OTP. + // (Number) Number of digits for the OTP. Value must be between 4 and 10. + // Number of digits for the OTP. Value must be between 4 and 10. 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). + // (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + // Interval for which to refresh the token (in seconds). Value must be between 0 and 999. 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. + // (Number) Number of digits for the OTP. Value must be between 4 and 10. + // Number of digits for the OTP. Value must be between 4 and 10. 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). + // (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + // Interval for which to refresh the token (in seconds). Value must be between 0 and 999. 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. + // (Number) Number of digits for the OTP. Value must be between 4 and 10. + // Number of digits for the OTP. Value must be between 4 and 10. // +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). + // (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + // Interval for which to refresh the token (in seconds). Value must be between 0 and 999. // +kubebuilder:validation:Optional RefreshInterval *float64 `json:"refreshInterval" tf:"refresh_interval,omitempty"` } @@ -319,8 +345,8 @@ type GlobalVariableStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} @@ -328,7 +354,6 @@ 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"` } diff --git a/apis/synthetics/v1alpha1/zz_groupversion_info.go b/apis/synthetics/v1beta1/zz_groupversion_info.go similarity index 79% rename from apis/synthetics/v1alpha1/zz_groupversion_info.go rename to apis/synthetics/v1beta1/zz_groupversion_info.go index ed208a5..e5ce46a 100755 --- a/apis/synthetics/v1alpha1/zz_groupversion_info.go +++ b/apis/synthetics/v1beta1/zz_groupversion_info.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -10,8 +6,8 @@ Copyright 2022 Upbound Inc. // +kubebuilder:object:generate=true // +groupName=synthetics.datadog.upbound.io -// +versionName=v1alpha1 -package v1alpha1 +// +versionName=v1beta1 +package v1beta1 import ( "k8s.io/apimachinery/pkg/runtime/schema" @@ -21,7 +17,7 @@ import ( // Package type metadata. const ( CRDGroup = "synthetics.datadog.upbound.io" - CRDVersion = "v1alpha1" + CRDVersion = "v1beta1" ) var ( diff --git a/apis/synthetics/v1alpha1/zz_privatelocation_terraformed.go b/apis/synthetics/v1beta1/zz_privatelocation_terraformed.go similarity index 95% rename from apis/synthetics/v1alpha1/zz_privatelocation_terraformed.go rename to apis/synthetics/v1beta1/zz_privatelocation_terraformed.go index 5de1f88..4384de7 100755 --- a/apis/synthetics/v1alpha1/zz_privatelocation_terraformed.go +++ b/apis/synthetics/v1beta1/zz_privatelocation_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *PrivateLocation) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this PrivateLocation func (tr *PrivateLocation) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"config": "status.atProvider.config"} + return map[string]string{"api_key": "apiKeySecretRef", "config": "status.atProvider.config"} } // GetObservation of this PrivateLocation diff --git a/apis/synthetics/v1alpha1/zz_privatelocation_types.go b/apis/synthetics/v1beta1/zz_privatelocation_types.go similarity index 71% rename from apis/synthetics/v1alpha1/zz_privatelocation_types.go rename to apis/synthetics/v1beta1/zz_privatelocation_types.go index ef5985b..45db9e2 100755 --- a/apis/synthetics/v1alpha1/zz_privatelocation_types.go +++ b/apis/synthetics/v1beta1/zz_privatelocation_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -19,24 +15,24 @@ import ( 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. + // (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +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. + // (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +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. + // (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +kubebuilder:validation:Optional // +listType=set RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` @@ -44,11 +40,15 @@ type MetadataParameters struct { type PrivateLocationInitParameters struct { - // (String) Description of the private location. - // Description of the private location. + // (String, Sensitive) API key used to generate the private location configuration. + // API key used to generate the private location configuration. + APIKeySecretRef *v1.SecretKeySelector `json:"apiKeySecretRef,omitempty" tf:"-"` + + // (String) Description of the private location. Defaults to "". + // Description of the private location. Defaults to `""`. Description *string `json:"description,omitempty" tf:"description,omitempty"` - // (Block List, Max: 1) The private location metadata (see below for nested schema) + // (Block List) The private location metadata (see below for nested schema) // The private location metadata Metadata []MetadataInitParameters `json:"metadata,omitempty" tf:"metadata,omitempty"` @@ -63,14 +63,14 @@ type PrivateLocationInitParameters struct { type PrivateLocationObservation struct { - // (String) Description of the private location. - // Description of the private location. + // (String) Description of the private location. Defaults to "". + // Description of the private location. Defaults to `""`. 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) + // (Block List) The private location metadata (see below for nested schema) // The private location metadata Metadata []MetadataObservation `json:"metadata,omitempty" tf:"metadata,omitempty"` @@ -85,12 +85,17 @@ type PrivateLocationObservation struct { type PrivateLocationParameters struct { - // (String) Description of the private location. - // Description of the private location. + // (String, Sensitive) API key used to generate the private location configuration. + // API key used to generate the private location configuration. + // +kubebuilder:validation:Optional + APIKeySecretRef *v1.SecretKeySelector `json:"apiKeySecretRef,omitempty" tf:"-"` + + // (String) Description of the private location. Defaults to "". + // Description of the private location. Defaults to `""`. // +kubebuilder:validation:Optional Description *string `json:"description,omitempty" tf:"description,omitempty"` - // (Block List, Max: 1) The private location metadata (see below for nested schema) + // (Block List) The private location metadata (see below for nested schema) // The private location metadata // +kubebuilder:validation:Optional Metadata []MetadataParameters `json:"metadata,omitempty" tf:"metadata,omitempty"` @@ -134,8 +139,8 @@ type PrivateLocationStatus struct { // +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/synthetics/v1alpha1/zz_test_terraformed.go b/apis/synthetics/v1beta1/zz_test_terraformed.go similarity index 71% rename from apis/synthetics/v1alpha1/zz_test_terraformed.go rename to apis/synthetics/v1beta1/zz_test_terraformed.go index 30393b1..7ba5875 100755 --- a/apis/synthetics/v1alpha1/zz_test_terraformed.go +++ b/apis/synthetics/v1beta1/zz_test_terraformed.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( "dario.cat/mergo" @@ -25,7 +21,7 @@ func (mg *Test) GetTerraformResourceType() string { // GetConnectionDetailsMapping for this Test func (tr *Test) GetConnectionDetailsMapping() map[string]string { - return map[string]string{"api_step[*].request_basicauth[*].access_key": "spec.forProvider.apiStep[*].requestBasicauth[*].accessKeySecretRef", "api_step[*].request_basicauth[*].client_secret": "spec.forProvider.apiStep[*].requestBasicauth[*].clientSecretSecretRef", "api_step[*].request_basicauth[*].password": "spec.forProvider.apiStep[*].requestBasicauth[*].passwordSecretRef", "api_step[*].request_basicauth[*].secret_key": "spec.forProvider.apiStep[*].requestBasicauth[*].secretKeySecretRef", "api_step[*].request_client_certificate[*].cert[*].content": "spec.forProvider.apiStep[*].requestClientCertificate[*].cert[*].contentSecretRef", "api_step[*].request_client_certificate[*].key[*].content": "spec.forProvider.apiStep[*].requestClientCertificate[*].key[*].contentSecretRef", "request_basicauth[*].access_key": "spec.forProvider.requestBasicauth[*].accessKeySecretRef", "request_basicauth[*].client_secret": "spec.forProvider.requestBasicauth[*].clientSecretSecretRef", "request_basicauth[*].password": "spec.forProvider.requestBasicauth[*].passwordSecretRef", "request_basicauth[*].secret_key": "spec.forProvider.requestBasicauth[*].secretKeySecretRef", "request_client_certificate[*].cert[*].content": "spec.forProvider.requestClientCertificate[*].cert[*].contentSecretRef", "request_client_certificate[*].key[*].content": "spec.forProvider.requestClientCertificate[*].key[*].contentSecretRef"} + return map[string]string{"api_step[*].request_basicauth[*].access_key": "apiStep[*].requestBasicauth.accessKeySecretRef", "api_step[*].request_basicauth[*].client_secret": "apiStep[*].requestBasicauth.clientSecretSecretRef", "api_step[*].request_basicauth[*].password": "apiStep[*].requestBasicauth.passwordSecretRef", "api_step[*].request_basicauth[*].secret_key": "apiStep[*].requestBasicauth.secretKeySecretRef", "api_step[*].request_client_certificate[*].cert[*].content": "apiStep[*].requestClientCertificate.cert.contentSecretRef", "api_step[*].request_client_certificate[*].key[*].content": "apiStep[*].requestClientCertificate.key.contentSecretRef", "request_basicauth[*].access_key": "requestBasicauth.accessKeySecretRef", "request_basicauth[*].client_secret": "requestBasicauth.clientSecretSecretRef", "request_basicauth[*].password": "requestBasicauth.passwordSecretRef", "request_basicauth[*].secret_key": "requestBasicauth.secretKeySecretRef", "request_client_certificate[*].cert[*].content": "requestClientCertificate.cert.contentSecretRef", "request_client_certificate[*].key[*].content": "requestClientCertificate.key.contentSecretRef"} } // GetObservation of this Test diff --git a/apis/synthetics/v1alpha1/zz_test_types.go b/apis/synthetics/v1beta1/zz_test_types.go similarity index 58% rename from apis/synthetics/v1alpha1/zz_test_types.go rename to apis/synthetics/v1beta1/zz_test_types.go index 433961b..afcd3b8 100755 --- a/apis/synthetics/v1alpha1/zz_test_types.go +++ b/apis/synthetics/v1beta1/zz_test_types.go @@ -1,14 +1,10 @@ -// 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 +package v1beta1 import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -27,10 +23,18 @@ type APIStepInitParameters struct { // Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. Assertion []AssertionInitParameters `json:"assertion,omitempty" tf:"assertion,omitempty"` + // (Boolean) Determines whether or not to exit the test if the step succeeds. + // Determines whether or not to exit the test if the step succeeds. + ExitIfSucceed *bool `json:"exitIfSucceed,omitempty" tf:"exit_if_succeed,omitempty"` + // (Block List) Values to parse and save as variables from the response. (see below for nested schema) // Values to parse and save as variables from the response. ExtractedValue []ExtractedValueInitParameters `json:"extractedValue,omitempty" tf:"extracted_value,omitempty"` + // (String) Generate variables using JavaScript. + // Generate variables using JavaScript. + ExtractedValuesFromScript *string `json:"extractedValuesFromScript,omitempty" tf:"extracted_values_from_script,omitempty"` + // (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. // Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` @@ -41,24 +45,33 @@ type APIStepInitParameters struct { // (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) // The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. - RequestBasicauth []RequestBasicauthInitParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` + RequestBasicauth *RequestBasicauthInitParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` // (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) // Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. - RequestClientCertificate []RequestClientCertificateInitParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` + RequestClientCertificate *RequestClientCertificateInitParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` // (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) // The request for the api step. - RequestDefinition []RequestDefinitionInitParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + RequestDefinition *RequestDefinitionInitParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + + // (Block List) Files to be used as part of the request in the test. (see below for nested schema) + // Files to be used as part of the request in the test. + RequestFile []RequestFileInitParameters `json:"requestFile,omitempty" tf:"request_file,omitempty"` // (Map of String) Header name and value map. // Header name and value map. // +mapType=granular RequestHeaders map[string]*string `json:"requestHeaders,omitempty" tf:"request_headers,omitempty"` + // (Map of String) Metadata to include when performing the gRPC request. + // Metadata to include when performing the gRPC request. + // +mapType=granular + RequestMetadata map[string]*string `json:"requestMetadata,omitempty" tf:"request_metadata,omitempty"` + // (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) // The proxy to perform the test. - RequestProxy []RequestProxyInitParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` + RequestProxy *RequestProxyInitParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` // (Map of String) Query arguments name and value map. // Query arguments name and value map. @@ -66,11 +79,15 @@ type APIStepInitParameters struct { RequestQuery map[string]*string `json:"requestQuery,omitempty" tf:"request_query,omitempty"` // (Block List, Max: 1) (see below for nested schema) - Retry []RetryInitParameters `json:"retry,omitempty" tf:"retry,omitempty"` + Retry *RetryInitParameters `json:"retry,omitempty" tf:"retry,omitempty"` // (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. - // The subtype of the Synthetic multistep API test step. Valid values are `http`, `grpc`. Defaults to `"http"`. + // The subtype of the Synthetic multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `"http"`. Subtype *string `json:"subtype,omitempty" tf:"subtype,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value *float64 `json:"value,omitempty" tf:"value,omitempty"` } type APIStepObservation struct { @@ -83,10 +100,18 @@ type APIStepObservation struct { // Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. Assertion []AssertionObservation `json:"assertion,omitempty" tf:"assertion,omitempty"` + // (Boolean) Determines whether or not to exit the test if the step succeeds. + // Determines whether or not to exit the test if the step succeeds. + ExitIfSucceed *bool `json:"exitIfSucceed,omitempty" tf:"exit_if_succeed,omitempty"` + // (Block List) Values to parse and save as variables from the response. (see below for nested schema) // Values to parse and save as variables from the response. ExtractedValue []ExtractedValueObservation `json:"extractedValue,omitempty" tf:"extracted_value,omitempty"` + // (String) Generate variables using JavaScript. + // Generate variables using JavaScript. + ExtractedValuesFromScript *string `json:"extractedValuesFromScript,omitempty" tf:"extracted_values_from_script,omitempty"` + // (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. // Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` @@ -97,24 +122,33 @@ type APIStepObservation struct { // (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) // The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. - RequestBasicauth []RequestBasicauthObservation `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` + RequestBasicauth *RequestBasicauthObservation `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` // (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) // Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. - RequestClientCertificate []RequestClientCertificateObservation `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` + RequestClientCertificate *RequestClientCertificateObservation `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` // (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) // The request for the api step. - RequestDefinition []RequestDefinitionObservation `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + RequestDefinition *RequestDefinitionObservation `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + + // (Block List) Files to be used as part of the request in the test. (see below for nested schema) + // Files to be used as part of the request in the test. + RequestFile []RequestFileObservation `json:"requestFile,omitempty" tf:"request_file,omitempty"` // (Map of String) Header name and value map. // Header name and value map. // +mapType=granular RequestHeaders map[string]*string `json:"requestHeaders,omitempty" tf:"request_headers,omitempty"` + // (Map of String) Metadata to include when performing the gRPC request. + // Metadata to include when performing the gRPC request. + // +mapType=granular + RequestMetadata map[string]*string `json:"requestMetadata,omitempty" tf:"request_metadata,omitempty"` + // (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) // The proxy to perform the test. - RequestProxy []RequestProxyObservation `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` + RequestProxy *RequestProxyObservation `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` // (Map of String) Query arguments name and value map. // Query arguments name and value map. @@ -122,11 +156,15 @@ type APIStepObservation struct { RequestQuery map[string]*string `json:"requestQuery,omitempty" tf:"request_query,omitempty"` // (Block List, Max: 1) (see below for nested schema) - Retry []RetryObservation `json:"retry,omitempty" tf:"retry,omitempty"` + Retry *RetryObservation `json:"retry,omitempty" tf:"retry,omitempty"` // (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. - // The subtype of the Synthetic multistep API test step. Valid values are `http`, `grpc`. Defaults to `"http"`. + // The subtype of the Synthetic multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `"http"`. Subtype *string `json:"subtype,omitempty" tf:"subtype,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value *float64 `json:"value,omitempty" tf:"value,omitempty"` } type APIStepParameters struct { @@ -141,11 +179,21 @@ type APIStepParameters struct { // +kubebuilder:validation:Optional Assertion []AssertionParameters `json:"assertion,omitempty" tf:"assertion,omitempty"` + // (Boolean) Determines whether or not to exit the test if the step succeeds. + // Determines whether or not to exit the test if the step succeeds. + // +kubebuilder:validation:Optional + ExitIfSucceed *bool `json:"exitIfSucceed,omitempty" tf:"exit_if_succeed,omitempty"` + // (Block List) Values to parse and save as variables from the response. (see below for nested schema) // Values to parse and save as variables from the response. // +kubebuilder:validation:Optional ExtractedValue []ExtractedValueParameters `json:"extractedValue,omitempty" tf:"extracted_value,omitempty"` + // (String) Generate variables using JavaScript. + // Generate variables using JavaScript. + // +kubebuilder:validation:Optional + ExtractedValuesFromScript *string `json:"extractedValuesFromScript,omitempty" tf:"extracted_values_from_script,omitempty"` + // (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. // Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. // +kubebuilder:validation:Optional @@ -159,17 +207,22 @@ type APIStepParameters struct { // (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) // The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - RequestBasicauth []RequestBasicauthParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` + RequestBasicauth *RequestBasicauthParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` // (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) // Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - RequestClientCertificate []RequestClientCertificateParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` + RequestClientCertificate *RequestClientCertificateParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` // (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) // The request for the api step. // +kubebuilder:validation:Optional - RequestDefinition []RequestDefinitionParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + RequestDefinition *RequestDefinitionParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + + // (Block List) Files to be used as part of the request in the test. (see below for nested schema) + // Files to be used as part of the request in the test. + // +kubebuilder:validation:Optional + RequestFile []RequestFileParameters `json:"requestFile,omitempty" tf:"request_file,omitempty"` // (Map of String) Header name and value map. // Header name and value map. @@ -177,10 +230,16 @@ type APIStepParameters struct { // +mapType=granular RequestHeaders map[string]*string `json:"requestHeaders,omitempty" tf:"request_headers,omitempty"` + // (Map of String) Metadata to include when performing the gRPC request. + // Metadata to include when performing the gRPC request. + // +kubebuilder:validation:Optional + // +mapType=granular + RequestMetadata map[string]*string `json:"requestMetadata,omitempty" tf:"request_metadata,omitempty"` + // (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) // The proxy to perform the test. // +kubebuilder:validation:Optional - RequestProxy []RequestProxyParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` + RequestProxy *RequestProxyParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` // (Map of String) Query arguments name and value map. // Query arguments name and value map. @@ -190,16 +249,25 @@ type APIStepParameters struct { // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Retry []RetryParameters `json:"retry,omitempty" tf:"retry,omitempty"` + Retry *RetryParameters `json:"retry,omitempty" tf:"retry,omitempty"` // (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. - // The subtype of the Synthetic multistep API test step. Valid values are `http`, `grpc`. Defaults to `"http"`. + // The subtype of the Synthetic multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `"http"`. // +kubebuilder:validation:Optional Subtype *string `json:"subtype,omitempty" tf:"subtype,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // +kubebuilder:validation:Optional + Value *float64 `json:"value,omitempty" tf:"value,omitempty"` } type AssertionInitParameters struct { + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + // If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + Code *string `json:"code,omitempty" tf:"code,omitempty"` + // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). // 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)). Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` @@ -214,23 +282,31 @@ type AssertionInitParameters struct { // (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) // Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. - Targetjsonpath []TargetjsonpathInitParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + Targetjsonpath *TargetjsonpathInitParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + + // (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + // Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + Targetjsonschema *TargetjsonschemaInitParameters `json:"targetjsonschema,omitempty" tf:"targetjsonschema,omitempty"` // (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) // Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. - Targetxpath []TargetxpathInitParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` + Targetxpath *TargetxpathInitParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` // (String) Timings scope for response time assertions. Valid values are all, withoutDNS. // Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. TimingsScope *string `json:"timingsScope,omitempty" tf:"timings_scope,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // 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`, `bodyHash`, `javascript`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } type AssertionObservation struct { + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + // If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + Code *string `json:"code,omitempty" tf:"code,omitempty"` + // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). // 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)). Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` @@ -245,27 +321,36 @@ type AssertionObservation struct { // (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) // Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. - Targetjsonpath []TargetjsonpathObservation `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + Targetjsonpath *TargetjsonpathObservation `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + + // (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + // Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + Targetjsonschema *TargetjsonschemaObservation `json:"targetjsonschema,omitempty" tf:"targetjsonschema,omitempty"` // (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) // Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. - Targetxpath []TargetxpathObservation `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` + Targetxpath *TargetxpathObservation `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` // (String) Timings scope for response time assertions. Valid values are all, withoutDNS. // Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. TimingsScope *string `json:"timingsScope,omitempty" tf:"timings_scope,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // 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`, `bodyHash`, `javascript`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } type AssertionParameters struct { + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + // If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + // +kubebuilder:validation:Optional + Code *string `json:"code,omitempty" tf:"code,omitempty"` + // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). // 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)). // +kubebuilder:validation:Optional - Operator *string `json:"operator" tf:"operator,omitempty"` + Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` // (String) If assertion type is header, this is the header name. // If assertion type is `header`, this is the header name. @@ -280,26 +365,35 @@ type AssertionParameters struct { // (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) // Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - Targetjsonpath []TargetjsonpathParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + Targetjsonpath *TargetjsonpathParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + + // (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + // Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + // +kubebuilder:validation:Optional + Targetjsonschema *TargetjsonschemaParameters `json:"targetjsonschema,omitempty" tf:"targetjsonschema,omitempty"` // (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) // Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - Targetxpath []TargetxpathParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` + Targetxpath *TargetxpathParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` // (String) Timings scope for response time assertions. Valid values are all, withoutDNS. // Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. // +kubebuilder:validation:Optional TimingsScope *string `json:"timingsScope,omitempty" tf:"timings_scope,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // 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`, `bodyHash`, `javascript`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` } type AssertionTargetjsonpathInitParameters struct { + // (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + // The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + Elementsoperator *string `json:"elementsoperator,omitempty" tf:"elementsoperator,omitempty"` + // (String) The JSON path to assert. // The JSON path to assert. Jsonpath *string `json:"jsonpath,omitempty" tf:"jsonpath,omitempty"` @@ -315,6 +409,10 @@ type AssertionTargetjsonpathInitParameters struct { type AssertionTargetjsonpathObservation struct { + // (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + // The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + Elementsoperator *string `json:"elementsoperator,omitempty" tf:"elementsoperator,omitempty"` + // (String) The JSON path to assert. // The JSON path to assert. Jsonpath *string `json:"jsonpath,omitempty" tf:"jsonpath,omitempty"` @@ -330,6 +428,11 @@ type AssertionTargetjsonpathObservation struct { type AssertionTargetjsonpathParameters struct { + // (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + // The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + // +kubebuilder:validation:Optional + Elementsoperator *string `json:"elementsoperator,omitempty" tf:"elementsoperator,omitempty"` + // (String) The JSON path to assert. // The JSON path to assert. // +kubebuilder:validation:Optional @@ -346,6 +449,41 @@ type AssertionTargetjsonpathParameters struct { Targetvalue *string `json:"targetvalue,omitempty" tf:"targetvalue,omitempty"` } +type AssertionTargetjsonschemaInitParameters struct { + + // (String) The JSON Schema to validate the body against. + // The JSON Schema to validate the body against. + Jsonschema *string `json:"jsonschema,omitempty" tf:"jsonschema,omitempty"` + + // 07". + // The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + Metaschema *string `json:"metaschema,omitempty" tf:"metaschema,omitempty"` +} + +type AssertionTargetjsonschemaObservation struct { + + // (String) The JSON Schema to validate the body against. + // The JSON Schema to validate the body against. + Jsonschema *string `json:"jsonschema,omitempty" tf:"jsonschema,omitempty"` + + // 07". + // The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + Metaschema *string `json:"metaschema,omitempty" tf:"metaschema,omitempty"` +} + +type AssertionTargetjsonschemaParameters struct { + + // (String) The JSON Schema to validate the body against. + // The JSON Schema to validate the body against. + // +kubebuilder:validation:Optional + Jsonschema *string `json:"jsonschema" tf:"jsonschema,omitempty"` + + // 07". + // The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + // +kubebuilder:validation:Optional + Metaschema *string `json:"metaschema,omitempty" tf:"metaschema,omitempty"` +} + type AssertionTargetxpathInitParameters struct { // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). @@ -394,12 +532,52 @@ type AssertionTargetxpathParameters struct { Xpath *string `json:"xpath" tf:"xpath,omitempty"` } +type BindingsInitParameters struct { + + // (List of String) + Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` + + // (String) Valid values are editor, viewer. + // Valid values are `editor`, `viewer`. + Relation *string `json:"relation,omitempty" tf:"relation,omitempty"` +} + +type BindingsObservation struct { + + // (List of String) + Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` + + // (String) Valid values are editor, viewer. + // Valid values are `editor`, `viewer`. + Relation *string `json:"relation,omitempty" tf:"relation,omitempty"` +} + +type BindingsParameters struct { + + // (List of String) + // +kubebuilder:validation:Optional + Principals []*string `json:"principals,omitempty" tf:"principals,omitempty"` + + // (String) Valid values are editor, viewer. + // Valid values are `editor`, `viewer`. + // +kubebuilder:validation:Optional + Relation *string `json:"relation,omitempty" tf:"relation,omitempty"` +} + type BrowserStepInitParameters struct { // (Boolean) Determines whether or not to continue with test if this step fails. // Determines if the step should be allowed to fail. AllowFailure *bool `json:"allowFailure,omitempty" tf:"allow_failure,omitempty"` + // (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + // Determines whether or not to always execute this step even if the previous step failed or was skipped. + AlwaysExecute *bool `json:"alwaysExecute,omitempty" tf:"always_execute,omitempty"` + + // (Boolean) Determines whether or not to exit the test if the step succeeds. + // Determines whether or not to exit the test if the step succeeds. + ExitIfSucceed *bool `json:"exitIfSucceed,omitempty" tf:"exit_if_succeed,omitempty"` + // (Boolean) Force update of the "element" parameter for the step // Force update of the "element" parameter for the step ForceElementUpdate *bool `json:"forceElementUpdate,omitempty" tf:"force_element_update,omitempty"` @@ -408,6 +586,10 @@ type BrowserStepInitParameters struct { // Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` + // (String) A unique identifier used to track steps after reordering. + // A unique identifier used to track steps after reordering. + LocalKey *string `json:"localKey,omitempty" tf:"local_key,omitempty"` + // (String) Name of Datadog synthetics test. // Name of the step. Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -418,14 +600,14 @@ type BrowserStepInitParameters struct { // (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) // Parameters for the step. - Params []ParamsInitParameters `json:"params,omitempty" tf:"params,omitempty"` + Params *ParamsInitParameters `json:"params,omitempty" tf:"params,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. + // (Number) Timeout in seconds for the test. // Used to override the default timeout of a step. Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `assertRequests`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -435,6 +617,14 @@ type BrowserStepObservation struct { // Determines if the step should be allowed to fail. AllowFailure *bool `json:"allowFailure,omitempty" tf:"allow_failure,omitempty"` + // (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + // Determines whether or not to always execute this step even if the previous step failed or was skipped. + AlwaysExecute *bool `json:"alwaysExecute,omitempty" tf:"always_execute,omitempty"` + + // (Boolean) Determines whether or not to exit the test if the step succeeds. + // Determines whether or not to exit the test if the step succeeds. + ExitIfSucceed *bool `json:"exitIfSucceed,omitempty" tf:"exit_if_succeed,omitempty"` + // (Boolean) Force update of the "element" parameter for the step // Force update of the "element" parameter for the step ForceElementUpdate *bool `json:"forceElementUpdate,omitempty" tf:"force_element_update,omitempty"` @@ -443,6 +633,10 @@ type BrowserStepObservation struct { // Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` + // (String) A unique identifier used to track steps after reordering. + // A unique identifier used to track steps after reordering. + LocalKey *string `json:"localKey,omitempty" tf:"local_key,omitempty"` + // (String) Name of Datadog synthetics test. // Name of the step. Name *string `json:"name,omitempty" tf:"name,omitempty"` @@ -453,14 +647,18 @@ type BrowserStepObservation struct { // (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) // Parameters for the step. - Params []ParamsObservation `json:"params,omitempty" tf:"params,omitempty"` + Params *ParamsObservation `json:"params,omitempty" tf:"params,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. + // (String) The identifier of the step on the backend. + // The identifier of the step on the backend. + PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + + // (Number) Timeout in seconds for the test. // Used to override the default timeout of a step. Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `assertRequests`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -471,6 +669,16 @@ type BrowserStepParameters struct { // +kubebuilder:validation:Optional AllowFailure *bool `json:"allowFailure,omitempty" tf:"allow_failure,omitempty"` + // (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + // Determines whether or not to always execute this step even if the previous step failed or was skipped. + // +kubebuilder:validation:Optional + AlwaysExecute *bool `json:"alwaysExecute,omitempty" tf:"always_execute,omitempty"` + + // (Boolean) Determines whether or not to exit the test if the step succeeds. + // Determines whether or not to exit the test if the step succeeds. + // +kubebuilder:validation:Optional + ExitIfSucceed *bool `json:"exitIfSucceed,omitempty" tf:"exit_if_succeed,omitempty"` + // (Boolean) Force update of the "element" parameter for the step // Force update of the "element" parameter for the step // +kubebuilder:validation:Optional @@ -481,6 +689,11 @@ type BrowserStepParameters struct { // +kubebuilder:validation:Optional IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` + // (String) A unique identifier used to track steps after reordering. + // A unique identifier used to track steps after reordering. + // +kubebuilder:validation:Optional + LocalKey *string `json:"localKey,omitempty" tf:"local_key,omitempty"` + // (String) Name of Datadog synthetics test. // Name of the step. // +kubebuilder:validation:Optional @@ -494,15 +707,15 @@ type BrowserStepParameters struct { // (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) // Parameters for the step. // +kubebuilder:validation:Optional - Params []ParamsParameters `json:"params" tf:"params,omitempty"` + Params *ParamsParameters `json:"params" tf:"params,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. + // (Number) Timeout in seconds for the test. // Used to override the default timeout of a step. // +kubebuilder:validation:Optional Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `assertRequests`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` } @@ -529,8 +742,8 @@ type BrowserVariableInitParameters struct { // Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text` Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Type of browser test variable. Valid values are `element`, `email`, `global`, `javascript`, `text`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of browser test variable. Valid values are `element`, `email`, `global`, `text`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -556,8 +769,8 @@ type BrowserVariableObservation struct { // Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text` Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Type of browser test variable. Valid values are `element`, `email`, `global`, `javascript`, `text`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of browser test variable. Valid values are `element`, `email`, `global`, `text`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -588,14 +801,18 @@ type BrowserVariableParameters struct { // +kubebuilder:validation:Optional Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Type of browser test variable. Valid values are `element`, `email`, `global`, `javascript`, `text`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of browser test variable. Valid values are `element`, `email`, `global`, `text`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` } type CertInitParameters struct { + // (String, Sensitive) Content of the certificate. + // Content of the certificate. + ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` + // (String) File name for the certificate. // File name for the certificate. Filename *string `json:"filename,omitempty" tf:"filename,omitempty"` @@ -612,7 +829,7 @@ type CertParameters struct { // (String, Sensitive) Content of the certificate. // Content of the certificate. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` // (String) File name for the certificate. @@ -640,7 +857,7 @@ type CiParameters struct { // (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. // Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. // +kubebuilder:validation:Optional - ExecutionRule *string `json:"executionRule,omitempty" tf:"execution_rule,omitempty"` + ExecutionRule *string `json:"executionRule" tf:"execution_rule,omitempty"` } type ConfigVariableInitParameters struct { @@ -665,8 +882,8 @@ type ConfigVariableInitParameters struct { // Whether the value of this variable will be obfuscated in test results. Defaults to `false`. Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Type of test configuration variable. Valid values are `global`, `text`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of test configuration variable. Valid values are `global`, `text`, `email`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -692,8 +909,8 @@ type ConfigVariableObservation struct { // Whether the value of this variable will be obfuscated in test results. Defaults to `false`. Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Type of test configuration variable. Valid values are `global`, `text`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of test configuration variable. Valid values are `global`, `text`, `email`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } @@ -724,20 +941,115 @@ type ConfigVariableParameters struct { // +kubebuilder:validation:Optional Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Type of test configuration variable. Valid values are `global`, `text`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of test configuration variable. Valid values are `global`, `text`, `email`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` } +type ElementInitParameters struct { + + // (String) + Context *string `json:"context,omitempty" tf:"context,omitempty"` + + // (String) Valid values are native, web. + // Valid values are `native`, `web`. + ContextType *string `json:"contextType,omitempty" tf:"context_type,omitempty"` + + // (String) + ElementDescription *string `json:"elementDescription,omitempty" tf:"element_description,omitempty"` + + // (Map of String) + // +mapType=granular + MultiLocator map[string]*string `json:"multiLocator,omitempty" tf:"multi_locator,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + RelativePosition *RelativePositionInitParameters `json:"relativePosition,omitempty" tf:"relative_position,omitempty"` + + // (String) + TextContent *string `json:"textContent,omitempty" tf:"text_content,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + UserLocator *UserLocatorInitParameters `json:"userLocator,omitempty" tf:"user_locator,omitempty"` + + // (String) + ViewName *string `json:"viewName,omitempty" tf:"view_name,omitempty"` +} + +type ElementObservation struct { + + // (String) + Context *string `json:"context,omitempty" tf:"context,omitempty"` + + // (String) Valid values are native, web. + // Valid values are `native`, `web`. + ContextType *string `json:"contextType,omitempty" tf:"context_type,omitempty"` + + // (String) + ElementDescription *string `json:"elementDescription,omitempty" tf:"element_description,omitempty"` + + // (Map of String) + // +mapType=granular + MultiLocator map[string]*string `json:"multiLocator,omitempty" tf:"multi_locator,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + RelativePosition *RelativePositionObservation `json:"relativePosition,omitempty" tf:"relative_position,omitempty"` + + // (String) + TextContent *string `json:"textContent,omitempty" tf:"text_content,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + UserLocator *UserLocatorObservation `json:"userLocator,omitempty" tf:"user_locator,omitempty"` + + // (String) + ViewName *string `json:"viewName,omitempty" tf:"view_name,omitempty"` +} + +type ElementParameters struct { + + // (String) + // +kubebuilder:validation:Optional + Context *string `json:"context,omitempty" tf:"context,omitempty"` + + // (String) Valid values are native, web. + // Valid values are `native`, `web`. + // +kubebuilder:validation:Optional + ContextType *string `json:"contextType,omitempty" tf:"context_type,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + ElementDescription *string `json:"elementDescription,omitempty" tf:"element_description,omitempty"` + + // (Map of String) + // +kubebuilder:validation:Optional + // +mapType=granular + MultiLocator map[string]*string `json:"multiLocator,omitempty" tf:"multi_locator,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + RelativePosition *RelativePositionParameters `json:"relativePosition,omitempty" tf:"relative_position,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + TextContent *string `json:"textContent,omitempty" tf:"text_content,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + UserLocator *UserLocatorParameters `json:"userLocator,omitempty" tf:"user_locator,omitempty"` + + // (String) + // +kubebuilder:validation:Optional + ViewName *string `json:"viewName,omitempty" tf:"view_name,omitempty"` +} + type ElementUserLocatorInitParameters struct { // (Boolean) Defaults to false. // Defaults to `false`. FailTestOnCannotLocate *bool `json:"failTestOnCannotLocate,omitempty" tf:"fail_test_on_cannot_locate,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. - Value []ValueInitParameters `json:"value,omitempty" tf:"value,omitempty"` + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value *ValueInitParameters `json:"value,omitempty" tf:"value,omitempty"` } type ElementUserLocatorObservation struct { @@ -746,8 +1058,8 @@ type ElementUserLocatorObservation struct { // Defaults to `false`. FailTestOnCannotLocate *bool `json:"failTestOnCannotLocate,omitempty" tf:"fail_test_on_cannot_locate,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. - Value []ValueObservation `json:"value,omitempty" tf:"value,omitempty"` + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value *ValueObservation `json:"value,omitempty" tf:"value,omitempty"` } type ElementUserLocatorParameters struct { @@ -757,57 +1069,57 @@ type ElementUserLocatorParameters struct { // +kubebuilder:validation:Optional FailTestOnCannotLocate *bool `json:"failTestOnCannotLocate,omitempty" tf:"fail_test_on_cannot_locate,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // +kubebuilder:validation:Optional - Value []ValueParameters `json:"value" tf:"value,omitempty"` + Value *ValueParameters `json:"value" tf:"value,omitempty"` } type ExtractedValueInitParameters struct { - // (String) When type is http_header, name of the header to use to extract the value. - // When type is `http_header`, name of the header to use to extract the value. + // (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. + // When type is `http_header` or `grpc_metadata`, name of the header or metadatum to extract. Field *string `json:"field,omitempty" tf:"field,omitempty"` // (String) Name of Datadog synthetics test. Name *string `json:"name,omitempty" tf:"name,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) - Parser []ExtractedValueParserInitParameters `json:"parser,omitempty" tf:"parser,omitempty"` + Parser *ExtractedValueParserInitParameters `json:"parser,omitempty" tf:"parser,omitempty"` // (Boolean) Determines whether or not the extracted value will be obfuscated. // Determines whether or not the extracted value will be obfuscated. Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Property of the Synthetics Test Response to use for the variable. Valid values are `http_body`, `http_header`, `local_variable`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Property of the Synthetics Test Response to use for the variable. Valid values are `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } type ExtractedValueObservation struct { - // (String) When type is http_header, name of the header to use to extract the value. - // When type is `http_header`, name of the header to use to extract the value. + // (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. + // When type is `http_header` or `grpc_metadata`, name of the header or metadatum to extract. Field *string `json:"field,omitempty" tf:"field,omitempty"` // (String) Name of Datadog synthetics test. Name *string `json:"name,omitempty" tf:"name,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) - Parser []ExtractedValueParserObservation `json:"parser,omitempty" tf:"parser,omitempty"` + Parser *ExtractedValueParserObservation `json:"parser,omitempty" tf:"parser,omitempty"` // (Boolean) Determines whether or not the extracted value will be obfuscated. // Determines whether or not the extracted value will be obfuscated. Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Property of the Synthetics Test Response to use for the variable. Valid values are `http_body`, `http_header`, `local_variable`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Property of the Synthetics Test Response to use for the variable. Valid values are `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } type ExtractedValueParameters struct { - // (String) When type is http_header, name of the header to use to extract the value. - // When type is `http_header`, name of the header to use to extract the value. + // (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. + // When type is `http_header` or `grpc_metadata`, name of the header or metadatum to extract. // +kubebuilder:validation:Optional Field *string `json:"field,omitempty" tf:"field,omitempty"` @@ -817,49 +1129,49 @@ type ExtractedValueParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Parser []ExtractedValueParserParameters `json:"parser" tf:"parser,omitempty"` + Parser *ExtractedValueParserParameters `json:"parser" tf:"parser,omitempty"` // (Boolean) Determines whether or not the extracted value will be obfuscated. // Determines whether or not the extracted value will be obfuscated. // +kubebuilder:validation:Optional Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Property of the Synthetics Test Response to use for the variable. Valid values are `http_body`, `http_header`, `local_variable`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Property of the Synthetics Test Response to use for the variable. Valid values are `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` } type ExtractedValueParserInitParameters struct { - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`. Type *string `json:"type,omitempty" tf:"type,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // Regex or JSON path used for the parser. Not used with type `raw`. Value *string `json:"value,omitempty" tf:"value,omitempty"` } type ExtractedValueParserObservation struct { - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`. Type *string `json:"type,omitempty" tf:"type,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // Regex or JSON path used for the parser. Not used with type `raw`. Value *string `json:"value,omitempty" tf:"value,omitempty"` } type ExtractedValueParserParameters struct { - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // Regex or JSON path used for the parser. Not used with type `raw`. // +kubebuilder:validation:Optional Value *string `json:"value,omitempty" tf:"value,omitempty"` @@ -867,6 +1179,10 @@ type ExtractedValueParserParameters struct { type KeyInitParameters struct { + // (String, Sensitive) Content of the certificate. + // Content of the certificate. + ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` + // (String) File name for the certificate. // File name for the certificate. Filename *string `json:"filename,omitempty" tf:"filename,omitempty"` @@ -883,7 +1199,7 @@ type KeyParameters struct { // (String, Sensitive) Content of the certificate. // Content of the certificate. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` // (String) File name for the certificate. @@ -892,111 +1208,808 @@ type KeyParameters struct { Filename *string `json:"filename,omitempty" tf:"filename,omitempty"` } -type MonitorOptionsInitParameters struct { +type MobileApplicationInitParameters struct { - // (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. - // 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`. - RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + // (String) + ApplicationID *string `json:"applicationId,omitempty" tf:"application_id,omitempty"` + + // (String) + ReferenceID *string `json:"referenceId,omitempty" tf:"reference_id,omitempty"` + + // (String) Valid values are latest, version. + // Valid values are `latest`, `version`. + ReferenceType *string `json:"referenceType,omitempty" tf:"reference_type,omitempty"` } -type MonitorOptionsObservation struct { +type MobileApplicationObservation struct { - // (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. - // 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`. - RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + // (String) + ApplicationID *string `json:"applicationId,omitempty" tf:"application_id,omitempty"` + + // (String) + ReferenceID *string `json:"referenceId,omitempty" tf:"reference_id,omitempty"` + + // (String) Valid values are latest, version. + // Valid values are `latest`, `version`. + ReferenceType *string `json:"referenceType,omitempty" tf:"reference_type,omitempty"` } -type MonitorOptionsParameters struct { +type MobileApplicationParameters struct { - // (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. - // 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`. + // (String) // +kubebuilder:validation:Optional - RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` -} + ApplicationID *string `json:"applicationId" tf:"application_id,omitempty"` -type OptionsListInitParameters struct { + // (String) + // +kubebuilder:validation:Optional + ReferenceID *string `json:"referenceId" tf:"reference_id,omitempty"` - // (Boolean) For SSL test, whether or not the test should allow self signed certificates. - // For SSL test, whether or not the test should allow self signed certificates. - AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` + // (String) Valid values are latest, version. + // Valid values are `latest`, `version`. + // +kubebuilder:validation:Optional + ReferenceType *string `json:"referenceType" tf:"reference_type,omitempty"` +} - // (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - // Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` +type MobileOptionsListInitParameters struct { - // (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. - // For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. - CheckCertificateRevocation *bool `json:"checkCertificateRevocation,omitempty" tf:"check_certificate_revocation,omitempty"` + // (Boolean) + AllowApplicationCrash *bool `json:"allowApplicationCrash,omitempty" tf:"allow_application_crash,omitempty"` + + // (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) + // Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource + Bindings []BindingsInitParameters `json:"bindings,omitempty" tf:"bindings,omitempty"` // (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) // CI/CD options for a Synthetic test. - Ci []CiInitParameters `json:"ci,omitempty" tf:"ci,omitempty"` + Ci *CiInitParameters `json:"ci,omitempty" tf:"ci,omitempty"` - // Origin Resource Sharing for browser tests. - // Disable Cross-Origin Resource Sharing for browser tests. - DisableCors *bool `json:"disableCors,omitempty" tf:"disable_cors,omitempty"` + // (Number) + DefaultStepTimeout *float64 `json:"defaultStepTimeout,omitempty" tf:"default_step_timeout,omitempty"` - // (Boolean) Disable Content Security Policy for browser tests. - // Disable Content Security Policy for browser tests. - DisableCsp *bool `json:"disableCsp,omitempty" tf:"disable_csp,omitempty"` + // (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + DeviceIds []*string `json:"deviceIds,omitempty" tf:"device_ids,omitempty"` - // (Boolean) Determines whether or not the API HTTP test should follow redirects. - // Determines whether or not the API HTTP test should follow redirects. - FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` + // (Boolean) + DisableAutoAcceptAlert *bool `json:"disableAutoAcceptAlert,omitempty" tf:"disable_auto_accept_alert,omitempty"` - // (String) HTTP version to use for a Synthetics API test. Valid values are http1, http2, any. - // HTTP version to use for a Synthetics API test. Valid values are `http1`, `http2`, `any`. - HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` + // (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + // Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + MinFailureDuration *float64 `json:"minFailureDuration,omitempty" tf:"min_failure_duration,omitempty"` - // (Boolean) Ignore server certificate error for browser tests. - // Ignore server certificate error for browser tests. - IgnoreServerCertificateError *bool `json:"ignoreServerCertificateError,omitempty" tf:"ignore_server_certificate_error,omitempty"` + // (Block List, Min: 1, Max: 1) (see below for nested schema) + MobileApplication *MobileApplicationInitParameters `json:"mobileApplication,omitempty" tf:"mobile_application,omitempty"` - // (Number) Timeout before declaring the initial step as failed (in seconds) for browser tests. - // Timeout before declaring the initial step as failed (in seconds) for browser tests. - InitialNavigationTimeout *float64 `json:"initialNavigationTimeout,omitempty" tf:"initial_navigation_timeout,omitempty"` + // (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + // The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + MonitorName *string `json:"monitorName,omitempty" tf:"monitor_name,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + MonitorOptions *MonitorOptionsInitParameters `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + + // (Number) + MonitorPriority *float64 `json:"monitorPriority,omitempty" tf:"monitor_priority,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // Prevents saving screenshots of the steps. + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Retry *MobileOptionsListRetryInitParameters `json:"retry,omitempty" tf:"retry,omitempty"` + + // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + // Object containing timeframes and timezone used for advanced scheduling. + Scheduling *SchedulingInitParameters `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + + // 604800 for mobile tests. + // How often the test should run (in seconds). Valid range is `300-604800` for mobile tests. + TickEvery *float64 `json:"tickEvery,omitempty" tf:"tick_every,omitempty"` + + // (Number) + Verbosity *float64 `json:"verbosity,omitempty" tf:"verbosity,omitempty"` +} + +type MobileOptionsListObservation struct { + + // (Boolean) + AllowApplicationCrash *bool `json:"allowApplicationCrash,omitempty" tf:"allow_application_crash,omitempty"` + + // (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) + // Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource + Bindings []BindingsObservation `json:"bindings,omitempty" tf:"bindings,omitempty"` + + // (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + // CI/CD options for a Synthetic test. + Ci *CiObservation `json:"ci,omitempty" tf:"ci,omitempty"` + + // (Number) + DefaultStepTimeout *float64 `json:"defaultStepTimeout,omitempty" tf:"default_step_timeout,omitempty"` + + // (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + DeviceIds []*string `json:"deviceIds,omitempty" tf:"device_ids,omitempty"` + + // (Boolean) + DisableAutoAcceptAlert *bool `json:"disableAutoAcceptAlert,omitempty" tf:"disable_auto_accept_alert,omitempty"` // (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. // Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. MinFailureDuration *float64 `json:"minFailureDuration,omitempty" tf:"min_failure_duration,omitempty"` - // (Number) Minimum number of locations in failure required to trigger an alert. Defaults to 1. - // Minimum number of locations in failure required to trigger an alert. Defaults to `1`. - MinLocationFailed *float64 `json:"minLocationFailed,omitempty" tf:"min_location_failed,omitempty"` + // (Block List, Min: 1, Max: 1) (see below for nested schema) + MobileApplication *MobileApplicationObservation `json:"mobileApplication,omitempty" tf:"mobile_application,omitempty"` // (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. // The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. MonitorName *string `json:"monitorName,omitempty" tf:"monitor_name,omitempty"` // (Block List, Max: 1) (see below for nested schema) - MonitorOptions []MonitorOptionsInitParameters `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + MonitorOptions *MonitorOptionsObservation `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + + // (Number) + MonitorPriority *float64 `json:"monitorPriority,omitempty" tf:"monitor_priority,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // Prevents saving screenshots of the steps. + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Retry *MobileOptionsListRetryObservation `json:"retry,omitempty" tf:"retry,omitempty"` + + // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + // Object containing timeframes and timezone used for advanced scheduling. + Scheduling *SchedulingObservation `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + + // 604800 for mobile tests. + // How often the test should run (in seconds). Valid range is `300-604800` for mobile tests. + TickEvery *float64 `json:"tickEvery,omitempty" tf:"tick_every,omitempty"` + + // (Number) + Verbosity *float64 `json:"verbosity,omitempty" tf:"verbosity,omitempty"` +} + +type MobileOptionsListParameters struct { + + // (Boolean) + // +kubebuilder:validation:Optional + AllowApplicationCrash *bool `json:"allowApplicationCrash,omitempty" tf:"allow_application_crash,omitempty"` + + // (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) + // Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource + // +kubebuilder:validation:Optional + Bindings []BindingsParameters `json:"bindings,omitempty" tf:"bindings,omitempty"` + + // (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + // CI/CD options for a Synthetic test. + // +kubebuilder:validation:Optional + Ci *CiParameters `json:"ci,omitempty" tf:"ci,omitempty"` + + // (Number) + // +kubebuilder:validation:Optional + DefaultStepTimeout *float64 `json:"defaultStepTimeout,omitempty" tf:"default_step_timeout,omitempty"` + + // (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + // +kubebuilder:validation:Optional + DeviceIds []*string `json:"deviceIds" tf:"device_ids,omitempty"` + + // (Boolean) + // +kubebuilder:validation:Optional + DisableAutoAcceptAlert *bool `json:"disableAutoAcceptAlert,omitempty" tf:"disable_auto_accept_alert,omitempty"` + + // (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + // Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + // +kubebuilder:validation:Optional + MinFailureDuration *float64 `json:"minFailureDuration,omitempty" tf:"min_failure_duration,omitempty"` + + // (Block List, Min: 1, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + MobileApplication *MobileApplicationParameters `json:"mobileApplication" tf:"mobile_application,omitempty"` + + // (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + // The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + // +kubebuilder:validation:Optional + MonitorName *string `json:"monitorName,omitempty" tf:"monitor_name,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + MonitorOptions *MonitorOptionsParameters `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + + // (Number) + // +kubebuilder:validation:Optional + MonitorPriority *float64 `json:"monitorPriority,omitempty" tf:"monitor_priority,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // Prevents saving screenshots of the steps. + // +kubebuilder:validation:Optional + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + // +kubebuilder:validation:Optional + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + Retry *MobileOptionsListRetryParameters `json:"retry,omitempty" tf:"retry,omitempty"` + + // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + // Object containing timeframes and timezone used for advanced scheduling. + // +kubebuilder:validation:Optional + Scheduling *SchedulingParameters `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + + // 604800 for mobile tests. + // How often the test should run (in seconds). Valid range is `300-604800` for mobile tests. + // +kubebuilder:validation:Optional + TickEvery *float64 `json:"tickEvery" tf:"tick_every,omitempty"` + + // (Number) + // +kubebuilder:validation:Optional + Verbosity *float64 `json:"verbosity,omitempty" tf:"verbosity,omitempty"` +} + +type MobileOptionsListRetryInitParameters struct { + + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + Count *float64 `json:"count,omitempty" tf:"count,omitempty"` + + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` +} + +type MobileOptionsListRetryObservation struct { + + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + Count *float64 `json:"count,omitempty" tf:"count,omitempty"` + + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` +} + +type MobileOptionsListRetryParameters struct { + + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + // +kubebuilder:validation:Optional + Count *float64 `json:"count,omitempty" tf:"count,omitempty"` + + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + // +kubebuilder:validation:Optional + Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` +} + +type MobileStepInitParameters struct { + + // (Boolean) Determines whether or not to continue with test if this step fails. + // A boolean set to allow this step to fail. + AllowFailure *bool `json:"allowFailure,omitempty" tf:"allow_failure,omitempty"` + + // (Boolean) A boolean set to determine if the step has a new step element. + // A boolean set to determine if the step has a new step element. + HasNewStepElement *bool `json:"hasNewStepElement,omitempty" tf:"has_new_step_element,omitempty"` + + // (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. + // A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails. + IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` + + // (String) Name of Datadog synthetics test. + // The name of the step. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // A boolean set to not take a screenshot for the step. + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + // Parameters for the step. + Params *MobileStepParamsInitParameters `json:"params,omitempty" tf:"params,omitempty"` + + // (String) The identifier of the step on the backend. + // The public ID of the step. + PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + + // (Number) Timeout in seconds for the test. + // The time before declaring a step failed. + Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type MobileStepObservation struct { + + // (Boolean) Determines whether or not to continue with test if this step fails. + // A boolean set to allow this step to fail. + AllowFailure *bool `json:"allowFailure,omitempty" tf:"allow_failure,omitempty"` + + // (Boolean) A boolean set to determine if the step has a new step element. + // A boolean set to determine if the step has a new step element. + HasNewStepElement *bool `json:"hasNewStepElement,omitempty" tf:"has_new_step_element,omitempty"` + + // (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. + // A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails. + IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` + + // (String) Name of Datadog synthetics test. + // The name of the step. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // A boolean set to not take a screenshot for the step. + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + // Parameters for the step. + Params *MobileStepParamsObservation `json:"params,omitempty" tf:"params,omitempty"` + + // (String) The identifier of the step on the backend. + // The public ID of the step. + PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + + // (Number) Timeout in seconds for the test. + // The time before declaring a step failed. + Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type MobileStepParameters struct { + + // (Boolean) Determines whether or not to continue with test if this step fails. + // A boolean set to allow this step to fail. + // +kubebuilder:validation:Optional + AllowFailure *bool `json:"allowFailure,omitempty" tf:"allow_failure,omitempty"` + + // (Boolean) A boolean set to determine if the step has a new step element. + // A boolean set to determine if the step has a new step element. + // +kubebuilder:validation:Optional + HasNewStepElement *bool `json:"hasNewStepElement,omitempty" tf:"has_new_step_element,omitempty"` + + // (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. + // A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails. + // +kubebuilder:validation:Optional + IsCritical *bool `json:"isCritical,omitempty" tf:"is_critical,omitempty"` + + // (String) Name of Datadog synthetics test. + // The name of the step. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // A boolean set to not take a screenshot for the step. + // +kubebuilder:validation:Optional + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + // Parameters for the step. + // +kubebuilder:validation:Optional + Params *MobileStepParamsParameters `json:"params" tf:"params,omitempty"` + + // (String) The identifier of the step on the backend. + // The public ID of the step. + // +kubebuilder:validation:Optional + PublicID *string `json:"publicId,omitempty" tf:"public_id,omitempty"` + + // (Number) Timeout in seconds for the test. + // The time before declaring a step failed. + // +kubebuilder:validation:Optional + Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + +type MobileStepParamsInitParameters struct { + + // (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 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 *string `json:"check,omitempty" tf:"check,omitempty"` + + // (Number) Delay between each key stroke for a "type test" step. + // Delay between each key stroke for a "type test" step. + Delay *float64 `json:"delay,omitempty" tf:"delay,omitempty"` + + // (String) Valid values are up, down, left, right. + // Valid values are `up`, `down`, `left`, `right`. + Direction *string `json:"direction,omitempty" tf:"direction,omitempty"` + + // (String) Element to use for the step, JSON encoded string. + // Element to use for the step, JSON encoded string. + Element *ElementInitParameters `json:"element,omitempty" tf:"element,omitempty"` + + // (Boolean) + Enable *bool `json:"enable,omitempty" tf:"enable,omitempty"` + + // (Number) + MaxScrolls *float64 `json:"maxScrolls,omitempty" tf:"max_scrolls,omitempty"` + + // (Block List) (see below for nested schema) + Positions []PositionsInitParameters `json:"positions,omitempty" tf:"positions,omitempty"` + + // (String) ID of the Synthetics test to use as subtest. + // ID of the Synthetics test to use as subtest. + SubtestPublicID *string `json:"subtestPublicId,omitempty" tf:"subtest_public_id,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // Value of the step. + Value *string `json:"value,omitempty" tf:"value,omitempty"` + + // (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + // Details of the variable to extract. + Variable *ParamsVariableInitParameters `json:"variable,omitempty" tf:"variable,omitempty"` + + // (Boolean) + WithEnter *bool `json:"withEnter,omitempty" tf:"with_enter,omitempty"` + + // (Number) X coordinates for a "scroll step". + // X coordinates for a "scroll step". + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + // Y coordinates for a "scroll step". + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type MobileStepParamsObservation struct { + + // (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 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 *string `json:"check,omitempty" tf:"check,omitempty"` + + // (Number) Delay between each key stroke for a "type test" step. + // Delay between each key stroke for a "type test" step. + Delay *float64 `json:"delay,omitempty" tf:"delay,omitempty"` + + // (String) Valid values are up, down, left, right. + // Valid values are `up`, `down`, `left`, `right`. + Direction *string `json:"direction,omitempty" tf:"direction,omitempty"` + + // (String) Element to use for the step, JSON encoded string. + // Element to use for the step, JSON encoded string. + Element *ElementObservation `json:"element,omitempty" tf:"element,omitempty"` + + // (Boolean) + Enable *bool `json:"enable,omitempty" tf:"enable,omitempty"` + + // (Number) + MaxScrolls *float64 `json:"maxScrolls,omitempty" tf:"max_scrolls,omitempty"` + + // (Block List) (see below for nested schema) + Positions []PositionsObservation `json:"positions,omitempty" tf:"positions,omitempty"` + + // (String) ID of the Synthetics test to use as subtest. + // ID of the Synthetics test to use as subtest. + SubtestPublicID *string `json:"subtestPublicId,omitempty" tf:"subtest_public_id,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // Value of the step. + Value *string `json:"value,omitempty" tf:"value,omitempty"` + + // (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + // Details of the variable to extract. + Variable *ParamsVariableObservation `json:"variable,omitempty" tf:"variable,omitempty"` + + // (Boolean) + WithEnter *bool `json:"withEnter,omitempty" tf:"with_enter,omitempty"` + + // (Number) X coordinates for a "scroll step". + // X coordinates for a "scroll step". + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + // Y coordinates for a "scroll step". + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type MobileStepParamsParameters struct { + + // (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. + // +kubebuilder:validation:Optional + Check *string `json:"check,omitempty" tf:"check,omitempty"` + + // (Number) Delay between each key stroke for a "type test" step. + // Delay between each key stroke for a "type test" step. + // +kubebuilder:validation:Optional + Delay *float64 `json:"delay,omitempty" tf:"delay,omitempty"` + + // (String) Valid values are up, down, left, right. + // Valid values are `up`, `down`, `left`, `right`. + // +kubebuilder:validation:Optional + Direction *string `json:"direction,omitempty" tf:"direction,omitempty"` + + // (String) Element to use for the step, JSON encoded string. + // Element to use for the step, JSON encoded string. + // +kubebuilder:validation:Optional + Element *ElementParameters `json:"element,omitempty" tf:"element,omitempty"` + + // (Boolean) + // +kubebuilder:validation:Optional + Enable *bool `json:"enable,omitempty" tf:"enable,omitempty"` + + // (Number) + // +kubebuilder:validation:Optional + MaxScrolls *float64 `json:"maxScrolls,omitempty" tf:"max_scrolls,omitempty"` + + // (Block List) (see below for nested schema) + // +kubebuilder:validation:Optional + Positions []PositionsParameters `json:"positions,omitempty" tf:"positions,omitempty"` + + // (String) ID of the Synthetics test to use as subtest. + // ID of the Synthetics test to use as subtest. + // +kubebuilder:validation:Optional + SubtestPublicID *string `json:"subtestPublicId,omitempty" tf:"subtest_public_id,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // Value of the step. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` + + // (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + // Details of the variable to extract. + // +kubebuilder:validation:Optional + Variable *ParamsVariableParameters `json:"variable,omitempty" tf:"variable,omitempty"` + + // (Boolean) + // +kubebuilder:validation:Optional + WithEnter *bool `json:"withEnter,omitempty" tf:"with_enter,omitempty"` + + // (Number) X coordinates for a "scroll step". + // X coordinates for a "scroll step". + // +kubebuilder:validation:Optional + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + // Y coordinates for a "scroll step". + // +kubebuilder:validation:Optional + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type MonitorOptionsInitParameters struct { + + // notification. + // A message to include with a re-notification. + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + // The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (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. + // 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`. + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + // The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` +} + +type MonitorOptionsObservation struct { + + // notification. + // A message to include with a re-notification. + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + // The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (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. + // 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`. + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + // The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` +} + +type MonitorOptionsParameters struct { + + // notification. + // A message to include with a re-notification. + // +kubebuilder:validation:Optional + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + // The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + // +kubebuilder:validation:Optional + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (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. + // 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`. + // +kubebuilder:validation:Optional + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + // The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + // +kubebuilder:validation:Optional + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` +} + +type OptionsListCiInitParameters struct { + + // (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + // Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + ExecutionRule *string `json:"executionRule,omitempty" tf:"execution_rule,omitempty"` +} + +type OptionsListCiObservation struct { + + // (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + // Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + ExecutionRule *string `json:"executionRule,omitempty" tf:"execution_rule,omitempty"` +} + +type OptionsListCiParameters struct { + + // (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + // Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + // +kubebuilder:validation:Optional + ExecutionRule *string `json:"executionRule,omitempty" tf:"execution_rule,omitempty"` +} + +type OptionsListInitParameters struct { + + // (Boolean) For SSL test, whether or not the test should allow self signed certificates. + // For SSL test, whether or not the test should allow self signed certificates. + AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` + + // (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + // Allows loading insecure content for a request in an API test or in a multistep API test step. + AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` + + // (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + // For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + CheckCertificateRevocation *bool `json:"checkCertificateRevocation,omitempty" tf:"check_certificate_revocation,omitempty"` + + // (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + // CI/CD options for a Synthetic test. + Ci *OptionsListCiInitParameters `json:"ci,omitempty" tf:"ci,omitempty"` + + // Origin Resource Sharing for browser tests. + // Disable Cross-Origin Resource Sharing for browser tests. + DisableCors *bool `json:"disableCors,omitempty" tf:"disable_cors,omitempty"` + + // (Boolean) Disable Content Security Policy for browser tests. + // Disable Content Security Policy for browser tests. + DisableCsp *bool `json:"disableCsp,omitempty" tf:"disable_csp,omitempty"` + + // (Boolean) Determines whether or not the API HTTP test should follow redirects. + // Determines whether or not the API HTTP test should follow redirects. + FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` + + // (Boolean) Ignore server certificate error for browser tests. + // Ignore server certificate error for browser tests. + IgnoreServerCertificateError *bool `json:"ignoreServerCertificateError,omitempty" tf:"ignore_server_certificate_error,omitempty"` + + // (Number) Timeout before declaring the initial step as failed (in seconds) for browser tests. + // Timeout before declaring the initial step as failed (in seconds) for browser tests. + InitialNavigationTimeout *float64 `json:"initialNavigationTimeout,omitempty" tf:"initial_navigation_timeout,omitempty"` + + // (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + // Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + MinFailureDuration *float64 `json:"minFailureDuration,omitempty" tf:"min_failure_duration,omitempty"` + + // (Number) Minimum number of locations in failure required to trigger an alert. Defaults to 1. + // Minimum number of locations in failure required to trigger an alert. Defaults to `1`. + MinLocationFailed *float64 `json:"minLocationFailed,omitempty" tf:"min_location_failed,omitempty"` + + // (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + // The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + MonitorName *string `json:"monitorName,omitempty" tf:"monitor_name,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + MonitorOptions *OptionsListMonitorOptionsInitParameters `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + + // (Number) + MonitorPriority *float64 `json:"monitorPriority,omitempty" tf:"monitor_priority,omitempty"` + + // (Boolean) Prevents saving screenshots of the step. + // Prevents saving screenshots of the steps. + NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + + // (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + // +listType=set + RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` + + // (Block List, Max: 1) (see below for nested schema) + Retry *OptionsListRetryInitParameters `json:"retry,omitempty" tf:"retry,omitempty"` + + // (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) + // The RUM data collection settings for the Synthetic browser test. + RumSettings *RumSettingsInitParameters `json:"rumSettings,omitempty" tf:"rum_settings,omitempty"` + + // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + // Object containing timeframes and timezone used for advanced scheduling. + Scheduling *OptionsListSchedulingInitParameters `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + + // 604800 for mobile tests. + // How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests. + TickEvery *float64 `json:"tickEvery,omitempty" tf:"tick_every,omitempty"` +} + +type OptionsListMonitorOptionsInitParameters struct { + + // notification. + // A message to include with a re-notification. + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + // The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` + + // (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. + // 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`. + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` + + // (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + // The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` +} + +type OptionsListMonitorOptionsObservation struct { + + // notification. + // A message to include with a re-notification. + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` + + // (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + // The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` - // (Number) - MonitorPriority *float64 `json:"monitorPriority,omitempty" tf:"monitor_priority,omitempty"` + // (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. + // 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`. + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` - // (Boolean) Prevents saving screenshots of the step. - // Prevents saving screenshots of the steps. - NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` + // (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + // The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` +} - // (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 OptionsListMonitorOptionsParameters struct { - // (Block List, Max: 1) (see below for nested schema) - Retry []OptionsListRetryInitParameters `json:"retry,omitempty" tf:"retry,omitempty"` + // notification. + // A message to include with a re-notification. + // +kubebuilder:validation:Optional + EscalationMessage *string `json:"escalationMessage,omitempty" tf:"escalation_message,omitempty"` - // (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) - // The RUM data collection settings for the Synthetic browser test. - RumSettings []string `json:"rumSettings,omitempty" tf:"rum_settings,omitempty"` + // (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + // The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + // +kubebuilder:validation:Optional + NotificationPresetName *string `json:"notificationPresetName,omitempty" tf:"notification_preset_name,omitempty"` - // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) - // Object containing timeframes and timezone used for advanced scheduling. - Scheduling []SchedulingInitParameters `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + // (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. + // 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`. + // +kubebuilder:validation:Optional + RenotifyInterval *float64 `json:"renotifyInterval,omitempty" tf:"renotify_interval,omitempty"` - // (Number) How often the test should run (in seconds). - // How often the test should run (in seconds). - TickEvery *float64 `json:"tickEvery,omitempty" tf:"tick_every,omitempty"` + // (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + // The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + // +kubebuilder:validation:Optional + RenotifyOccurrences *float64 `json:"renotifyOccurrences,omitempty" tf:"renotify_occurrences,omitempty"` } type OptionsListObservation struct { @@ -1005,8 +2018,8 @@ type OptionsListObservation struct { // For SSL test, whether or not the test should allow self signed certificates. AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` - // (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - // Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. + // (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + // Allows loading insecure content for a request in an API test or in a multistep API test step. AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` // (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. @@ -1015,7 +2028,7 @@ type OptionsListObservation struct { // (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) // CI/CD options for a Synthetic test. - Ci []CiObservation `json:"ci,omitempty" tf:"ci,omitempty"` + Ci *OptionsListCiObservation `json:"ci,omitempty" tf:"ci,omitempty"` // Origin Resource Sharing for browser tests. // Disable Cross-Origin Resource Sharing for browser tests. @@ -1029,8 +2042,8 @@ type OptionsListObservation struct { // Determines whether or not the API HTTP test should follow redirects. FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` - // (String) HTTP version to use for a Synthetics API test. Valid values are http1, http2, any. - // HTTP version to use for a Synthetics API test. Valid values are `http1`, `http2`, `any`. + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` // (Boolean) Ignore server certificate error for browser tests. @@ -1054,7 +2067,7 @@ type OptionsListObservation struct { MonitorName *string `json:"monitorName,omitempty" tf:"monitor_name,omitempty"` // (Block List, Max: 1) (see below for nested schema) - MonitorOptions []MonitorOptionsObservation `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + MonitorOptions *OptionsListMonitorOptionsObservation `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` // (Number) MonitorPriority *float64 `json:"monitorPriority,omitempty" tf:"monitor_priority,omitempty"` @@ -1063,24 +2076,24 @@ type OptionsListObservation struct { // Prevents saving screenshots of the steps. NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` - // (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. + // (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +listType=set RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` // (Block List, Max: 1) (see below for nested schema) - Retry []OptionsListRetryObservation `json:"retry,omitempty" tf:"retry,omitempty"` + Retry *OptionsListRetryObservation `json:"retry,omitempty" tf:"retry,omitempty"` // (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) // The RUM data collection settings for the Synthetic browser test. - RumSettings []string `json:"rumSettings,omitempty" tf:"rum_settings,omitempty"` + RumSettings *RumSettingsObservation `json:"rumSettings,omitempty" tf:"rum_settings,omitempty"` // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) // Object containing timeframes and timezone used for advanced scheduling. - Scheduling []SchedulingObservation `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + Scheduling *OptionsListSchedulingObservation `json:"scheduling,omitempty" tf:"scheduling,omitempty"` - // (Number) How often the test should run (in seconds). - // How often the test should run (in seconds). + // 604800 for mobile tests. + // How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests. TickEvery *float64 `json:"tickEvery,omitempty" tf:"tick_every,omitempty"` } @@ -1091,8 +2104,8 @@ type OptionsListParameters struct { // +kubebuilder:validation:Optional AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` - // (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - // Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. + // (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + // Allows loading insecure content for a request in an API test or in a multistep API test step. // +kubebuilder:validation:Optional AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` @@ -1104,7 +2117,7 @@ type OptionsListParameters struct { // (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) // CI/CD options for a Synthetic test. // +kubebuilder:validation:Optional - Ci []CiParameters `json:"ci,omitempty" tf:"ci,omitempty"` + Ci *OptionsListCiParameters `json:"ci,omitempty" tf:"ci,omitempty"` // Origin Resource Sharing for browser tests. // Disable Cross-Origin Resource Sharing for browser tests. @@ -1121,8 +2134,8 @@ type OptionsListParameters struct { // +kubebuilder:validation:Optional FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` - // (String) HTTP version to use for a Synthetics API test. Valid values are http1, http2, any. - // HTTP version to use for a Synthetics API test. Valid values are `http1`, `http2`, `any`. + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. // +kubebuilder:validation:Optional HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` @@ -1153,7 +2166,7 @@ type OptionsListParameters struct { // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - MonitorOptions []MonitorOptionsParameters `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` + MonitorOptions *OptionsListMonitorOptionsParameters `json:"monitorOptions,omitempty" tf:"monitor_options,omitempty"` // (Number) // +kubebuilder:validation:Optional @@ -1164,67 +2177,102 @@ type OptionsListParameters struct { // +kubebuilder:validation:Optional NoScreenshot *bool `json:"noScreenshot,omitempty" tf:"no_screenshot,omitempty"` - // (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. + // (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + // A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. // +kubebuilder:validation:Optional // +listType=set RestrictedRoles []*string `json:"restrictedRoles,omitempty" tf:"restricted_roles,omitempty"` // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Retry []OptionsListRetryParameters `json:"retry,omitempty" tf:"retry,omitempty"` + Retry *OptionsListRetryParameters `json:"retry,omitempty" tf:"retry,omitempty"` // (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) // The RUM data collection settings for the Synthetic browser test. // +kubebuilder:validation:Optional - RumSettings []string `json:"rumSettings,omitempty" tf:"rum_settings,omitempty"` + RumSettings *RumSettingsParameters `json:"rumSettings,omitempty" tf:"rum_settings,omitempty"` // (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) // Object containing timeframes and timezone used for advanced scheduling. // +kubebuilder:validation:Optional - Scheduling []SchedulingParameters `json:"scheduling,omitempty" tf:"scheduling,omitempty"` + Scheduling *OptionsListSchedulingParameters `json:"scheduling,omitempty" tf:"scheduling,omitempty"` - // (Number) How often the test should run (in seconds). - // How often the test should run (in seconds). + // 604800 for mobile tests. + // How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests. // +kubebuilder:validation:Optional TickEvery *float64 `json:"tickEvery" tf:"tick_every,omitempty"` } type OptionsListRetryInitParameters struct { - // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. - // Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`. + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. Count *float64 `json:"count,omitempty" tf:"count,omitempty"` - // (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. - // Interval between a failed test and the next retry in milliseconds. Defaults to `300`. + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` } type OptionsListRetryObservation struct { - // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. - // Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`. + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. Count *float64 `json:"count,omitempty" tf:"count,omitempty"` - // (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. - // Interval between a failed test and the next retry in milliseconds. Defaults to `300`. + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` } type OptionsListRetryParameters struct { - // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. - // Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`. + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. // +kubebuilder:validation:Optional Count *float64 `json:"count,omitempty" tf:"count,omitempty"` - // (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. - // Interval between a failed test and the next retry in milliseconds. Defaults to `300`. + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. // +kubebuilder:validation:Optional Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` } +type OptionsListSchedulingInitParameters struct { + + // (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + // Array containing objects describing the scheduling pattern to apply to each day. + Timeframes []SchedulingTimeframesInitParameters `json:"timeframes,omitempty" tf:"timeframes,omitempty"` + + // (String) Timezone in which the timeframe is based. + // Timezone in which the timeframe is based. + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type OptionsListSchedulingObservation struct { + + // (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + // Array containing objects describing the scheduling pattern to apply to each day. + Timeframes []SchedulingTimeframesObservation `json:"timeframes,omitempty" tf:"timeframes,omitempty"` + + // (String) Timezone in which the timeframe is based. + // Timezone in which the timeframe is based. + Timezone *string `json:"timezone,omitempty" tf:"timezone,omitempty"` +} + +type OptionsListSchedulingParameters struct { + + // (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + // Array containing objects describing the scheduling pattern to apply to each day. + // +kubebuilder:validation:Optional + Timeframes []SchedulingTimeframesParameters `json:"timeframes" tf:"timeframes,omitempty"` + + // (String) Timezone in which the timeframe is based. + // Timezone in which the timeframe is based. + // +kubebuilder:validation:Optional + Timezone *string `json:"timezone" tf:"timezone,omitempty"` +} + type ParamsInitParameters struct { // (String) Name of the attribute to use for an "assert attribute" step. @@ -1239,7 +2287,11 @@ type ParamsInitParameters struct { // Type of click to use for a "click" step. ClickType *string `json:"clickType,omitempty" tf:"click_type,omitempty"` - // (String) Javascript code to use for the step. + // (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + // Whether to use `element.click()` for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + ClickWithJavascript *bool `json:"clickWithJavascript,omitempty" tf:"click_with_javascript,omitempty"` + + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. // Javascript code to use for the step. Code *string `json:"code,omitempty" tf:"code,omitempty"` @@ -1247,24 +2299,24 @@ type ParamsInitParameters struct { // Delay between each key stroke for a "type test" step. Delay *float64 `json:"delay,omitempty" tf:"delay,omitempty"` - // (String) Element to use for the step, json encoded string. - // Element to use for the step, json encoded string. + // (String) Element to use for the step, JSON encoded string. + // Element to use for the step, JSON encoded string. Element *string `json:"element,omitempty" tf:"element,omitempty"` // (Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema) // Custom user selector to use for the step. - ElementUserLocator []ElementUserLocatorInitParameters `json:"elementUserLocator,omitempty" tf:"element_user_locator,omitempty"` + ElementUserLocator *ElementUserLocatorInitParameters `json:"elementUserLocator,omitempty" tf:"element_user_locator,omitempty"` - // (String) Details of the email for an "assert email" step. - // Details of the email for an "assert email" step. + // (String) Details of the email for an "assert email" step, JSON encoded string. + // Details of the email for an "assert email" step, JSON encoded string. Email *string `json:"email,omitempty" tf:"email,omitempty"` // (String) JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. // JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. File *string `json:"file,omitempty" tf:"file,omitempty"` - // (String) Details of the files for an "upload files" step, json encoded string. - // Details of the files for an "upload files" step, json encoded string. + // (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. Files *string `json:"files,omitempty" tf:"files,omitempty"` // (List of String) Modifier to use for a "press key" step. @@ -1279,17 +2331,21 @@ type ParamsInitParameters struct { // Request for an API step. Request *string `json:"request,omitempty" tf:"request,omitempty"` + // (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Requests *string `json:"requests,omitempty" tf:"requests,omitempty"` + // (String) ID of the Synthetics test to use as subtest. // ID of the Synthetics test to use as subtest. SubtestPublicID *string `json:"subtestPublicId,omitempty" tf:"subtest_public_id,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // Value of the step. Value *string `json:"value,omitempty" tf:"value,omitempty"` // (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) // Details of the variable to extract. - Variable []VariableInitParameters `json:"variable,omitempty" tf:"variable,omitempty"` + Variable *VariableInitParameters `json:"variable,omitempty" tf:"variable,omitempty"` // (Boolean) For "file upload" steps. // For "file upload" steps. @@ -1318,7 +2374,11 @@ type ParamsObservation struct { // Type of click to use for a "click" step. ClickType *string `json:"clickType,omitempty" tf:"click_type,omitempty"` - // (String) Javascript code to use for the step. + // (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + // Whether to use `element.click()` for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + ClickWithJavascript *bool `json:"clickWithJavascript,omitempty" tf:"click_with_javascript,omitempty"` + + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. // Javascript code to use for the step. Code *string `json:"code,omitempty" tf:"code,omitempty"` @@ -1326,24 +2386,24 @@ type ParamsObservation struct { // Delay between each key stroke for a "type test" step. Delay *float64 `json:"delay,omitempty" tf:"delay,omitempty"` - // (String) Element to use for the step, json encoded string. - // Element to use for the step, json encoded string. + // (String) Element to use for the step, JSON encoded string. + // Element to use for the step, JSON encoded string. Element *string `json:"element,omitempty" tf:"element,omitempty"` // (Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema) // Custom user selector to use for the step. - ElementUserLocator []ElementUserLocatorObservation `json:"elementUserLocator,omitempty" tf:"element_user_locator,omitempty"` + ElementUserLocator *ElementUserLocatorObservation `json:"elementUserLocator,omitempty" tf:"element_user_locator,omitempty"` - // (String) Details of the email for an "assert email" step. - // Details of the email for an "assert email" step. + // (String) Details of the email for an "assert email" step, JSON encoded string. + // Details of the email for an "assert email" step, JSON encoded string. Email *string `json:"email,omitempty" tf:"email,omitempty"` // (String) JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. // JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. File *string `json:"file,omitempty" tf:"file,omitempty"` - // (String) Details of the files for an "upload files" step, json encoded string. - // Details of the files for an "upload files" step, json encoded string. + // (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. Files *string `json:"files,omitempty" tf:"files,omitempty"` // (List of String) Modifier to use for a "press key" step. @@ -1358,17 +2418,21 @@ type ParamsObservation struct { // Request for an API step. Request *string `json:"request,omitempty" tf:"request,omitempty"` + // (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Requests *string `json:"requests,omitempty" tf:"requests,omitempty"` + // (String) ID of the Synthetics test to use as subtest. // ID of the Synthetics test to use as subtest. SubtestPublicID *string `json:"subtestPublicId,omitempty" tf:"subtest_public_id,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // Value of the step. Value *string `json:"value,omitempty" tf:"value,omitempty"` // (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) // Details of the variable to extract. - Variable []VariableObservation `json:"variable,omitempty" tf:"variable,omitempty"` + Variable *VariableObservation `json:"variable,omitempty" tf:"variable,omitempty"` // (Boolean) For "file upload" steps. // For "file upload" steps. @@ -1400,7 +2464,12 @@ type ParamsParameters struct { // +kubebuilder:validation:Optional ClickType *string `json:"clickType,omitempty" tf:"click_type,omitempty"` - // (String) Javascript code to use for the step. + // (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + // Whether to use `element.click()` for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + // +kubebuilder:validation:Optional + ClickWithJavascript *bool `json:"clickWithJavascript,omitempty" tf:"click_with_javascript,omitempty"` + + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. // Javascript code to use for the step. // +kubebuilder:validation:Optional Code *string `json:"code,omitempty" tf:"code,omitempty"` @@ -1410,18 +2479,18 @@ type ParamsParameters struct { // +kubebuilder:validation:Optional Delay *float64 `json:"delay,omitempty" tf:"delay,omitempty"` - // (String) Element to use for the step, json encoded string. - // Element to use for the step, json encoded string. + // (String) Element to use for the step, JSON encoded string. + // Element to use for the step, JSON encoded string. // +kubebuilder:validation:Optional Element *string `json:"element,omitempty" tf:"element,omitempty"` // (Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema) // Custom user selector to use for the step. // +kubebuilder:validation:Optional - ElementUserLocator []ElementUserLocatorParameters `json:"elementUserLocator,omitempty" tf:"element_user_locator,omitempty"` + ElementUserLocator *ElementUserLocatorParameters `json:"elementUserLocator,omitempty" tf:"element_user_locator,omitempty"` - // (String) Details of the email for an "assert email" step. - // Details of the email for an "assert email" step. + // (String) Details of the email for an "assert email" step, JSON encoded string. + // Details of the email for an "assert email" step, JSON encoded string. // +kubebuilder:validation:Optional Email *string `json:"email,omitempty" tf:"email,omitempty"` @@ -1430,8 +2499,8 @@ type ParamsParameters struct { // +kubebuilder:validation:Optional File *string `json:"file,omitempty" tf:"file,omitempty"` - // (String) Details of the files for an "upload files" step, json encoded string. - // Details of the files for an "upload files" step, json encoded string. + // (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. // +kubebuilder:validation:Optional Files *string `json:"files,omitempty" tf:"files,omitempty"` @@ -1450,12 +2519,17 @@ type ParamsParameters struct { // +kubebuilder:validation:Optional Request *string `json:"request,omitempty" tf:"request,omitempty"` + // (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + // +kubebuilder:validation:Optional + Requests *string `json:"requests,omitempty" tf:"requests,omitempty"` + // (String) ID of the Synthetics test to use as subtest. // ID of the Synthetics test to use as subtest. // +kubebuilder:validation:Optional SubtestPublicID *string `json:"subtestPublicId,omitempty" tf:"subtest_public_id,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // Value of the step. // +kubebuilder:validation:Optional Value *string `json:"value,omitempty" tf:"value,omitempty"` @@ -1463,7 +2537,7 @@ type ParamsParameters struct { // (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) // Details of the variable to extract. // +kubebuilder:validation:Optional - Variable []VariableParameters `json:"variable,omitempty" tf:"variable,omitempty"` + Variable *VariableParameters `json:"variable,omitempty" tf:"variable,omitempty"` // (Boolean) For "file upload" steps. // For "file upload" steps. @@ -1481,8 +2555,105 @@ type ParamsParameters struct { Y *float64 `json:"y,omitempty" tf:"y,omitempty"` } +type ParamsVariableInitParameters struct { + + // (String) Example of the extracted variable. Defaults to "". + // Example of the extracted variable. Defaults to `""`. + Example *string `json:"example,omitempty" tf:"example,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the extracted variable. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type ParamsVariableObservation struct { + + // (String) Example of the extracted variable. Defaults to "". + // Example of the extracted variable. Defaults to `""`. + Example *string `json:"example,omitempty" tf:"example,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the extracted variable. + Name *string `json:"name,omitempty" tf:"name,omitempty"` +} + +type ParamsVariableParameters struct { + + // (String) Example of the extracted variable. Defaults to "". + // Example of the extracted variable. Defaults to `""`. + // +kubebuilder:validation:Optional + Example *string `json:"example,omitempty" tf:"example,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the extracted variable. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` +} + +type PositionsInitParameters struct { + + // (Number) X coordinates for a "scroll step". + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type PositionsObservation struct { + + // (Number) X coordinates for a "scroll step". + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type PositionsParameters struct { + + // (Number) X coordinates for a "scroll step". + // +kubebuilder:validation:Optional + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + // +kubebuilder:validation:Optional + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type RelativePositionInitParameters struct { + + // (Number) X coordinates for a "scroll step". + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type RelativePositionObservation struct { + + // (Number) X coordinates for a "scroll step". + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + +type RelativePositionParameters struct { + + // (Number) X coordinates for a "scroll step". + // +kubebuilder:validation:Optional + X *float64 `json:"x,omitempty" tf:"x,omitempty"` + + // (Number) Y coordinates for a "scroll step". + // +kubebuilder:validation:Optional + Y *float64 `json:"y,omitempty" tf:"y,omitempty"` +} + type RequestBasicauthInitParameters struct { + // (String, Sensitive) Access key for SIGV4 authentication. + // Access key for `SIGV4` authentication. + AccessKeySecretRef *v1.SecretKeySelector `json:"accessKeySecretRef,omitempty" tf:"-"` + // client or oauth-rop authentication. // Access token url for `oauth-client` or `oauth-rop` authentication. AccessTokenURL *string `json:"accessTokenUrl,omitempty" tf:"access_token_url,omitempty"` @@ -1495,10 +2666,18 @@ type RequestBasicauthInitParameters struct { // Client ID for `oauth-client` or `oauth-rop` authentication. ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + // client or oauth-rop authentication. + // Client secret for `oauth-client` or `oauth-rop` authentication. + ClientSecretSecretRef *v1.SecretKeySelector `json:"clientSecretSecretRef,omitempty" tf:"-"` + // (String) Domain for ntlm authentication. // Domain for `ntlm` authentication. Domain *string `json:"domain,omitempty" tf:"domain,omitempty"` + // (String, Sensitive) Password for authentication. + // Password for authentication. + PasswordSecretRef *v1.SecretKeySelector `json:"passwordSecretRef,omitempty" tf:"-"` + // (String) Region for SIGV4 authentication. // Region for `SIGV4` authentication. Region *string `json:"region,omitempty" tf:"region,omitempty"` @@ -1511,6 +2690,10 @@ type RequestBasicauthInitParameters struct { // Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` + // (String, Sensitive) Secret key for SIGV4 authentication. + // Secret key for `SIGV4` authentication. + SecretKeySecretRef *v1.SecretKeySelector `json:"secretKeySecretRef,omitempty" tf:"-"` + // (String) Service name for SIGV4 authentication. // Service name for `SIGV4` authentication. ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` @@ -1523,7 +2706,7 @@ type RequestBasicauthInitParameters struct { // Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. TokenAPIAuthentication *string `json:"tokenApiAuthentication,omitempty" tf:"token_api_authentication,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of basic authentication to use when performing the test. Defaults to `"web"`. Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -1578,7 +2761,7 @@ type RequestBasicauthObservation struct { // Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. TokenAPIAuthentication *string `json:"tokenApiAuthentication,omitempty" tf:"token_api_authentication,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of basic authentication to use when performing the test. Defaults to `"web"`. Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -1663,7 +2846,7 @@ type RequestBasicauthParameters struct { // +kubebuilder:validation:Optional TokenAPIAuthentication *string `json:"tokenApiAuthentication,omitempty" tf:"token_api_authentication,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of basic authentication to use when performing the test. Defaults to `"web"`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -1681,6 +2864,10 @@ type RequestBasicauthParameters struct { type RequestClientCertificateCertInitParameters struct { + // (String, Sensitive) Content of the certificate. + // Content of the certificate. + ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` + // (String) File name for the certificate. // File name for the certificate. Filename *string `json:"filename,omitempty" tf:"filename,omitempty"` @@ -1697,7 +2884,7 @@ type RequestClientCertificateCertParameters struct { // (String, Sensitive) Content of the certificate. // Content of the certificate. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` // (String) File name for the certificate. @@ -1709,14 +2896,18 @@ type RequestClientCertificateCertParameters struct { type RequestClientCertificateInitParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Cert []CertInitParameters `json:"cert,omitempty" tf:"cert,omitempty"` + Cert *CertInitParameters `json:"cert,omitempty" tf:"cert,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) - Key []KeyInitParameters `json:"key,omitempty" tf:"key,omitempty"` + Key *KeyInitParameters `json:"key,omitempty" tf:"key,omitempty"` } type RequestClientCertificateKeyInitParameters struct { + // (String, Sensitive) Content of the certificate. + // Content of the certificate. + ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` + // (String) File name for the certificate. // File name for the certificate. Filename *string `json:"filename,omitempty" tf:"filename,omitempty"` @@ -1733,7 +2924,7 @@ type RequestClientCertificateKeyParameters struct { // (String, Sensitive) Content of the certificate. // Content of the certificate. - // +kubebuilder:validation:Required + // +kubebuilder:validation:Optional ContentSecretRef v1.SecretKeySelector `json:"contentSecretRef" tf:"-"` // (String) File name for the certificate. @@ -1745,35 +2936,39 @@ type RequestClientCertificateKeyParameters struct { type RequestClientCertificateObservation struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Cert []CertObservation `json:"cert,omitempty" tf:"cert,omitempty"` + Cert *CertObservation `json:"cert,omitempty" tf:"cert,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) - Key []KeyObservation `json:"key,omitempty" tf:"key,omitempty"` + Key *KeyObservation `json:"key,omitempty" tf:"key,omitempty"` } type RequestClientCertificateParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Cert []CertParameters `json:"cert" tf:"cert,omitempty"` + Cert *CertParameters `json:"cert" tf:"cert,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Key []KeyParameters `json:"key" tf:"key,omitempty"` + Key *KeyParameters `json:"key" tf:"key,omitempty"` } type RequestDefinitionInitParameters struct { - // (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - // Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. + // (Boolean) For SSL test, whether or not the test should allow self signed certificates. + // For SSL test, whether or not the test should allow self signed certificates. + AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` + + // (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + // Allows loading insecure content for a request in an API test or in a multistep API test step. AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` // (String) The request body. // The request body. Body *string `json:"body,omitempty" tf:"body,omitempty"` - // www-form-urlencoded, graphql. - // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`. + // www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. BodyType *string `json:"bodyType,omitempty" tf:"body_type,omitempty"` // (String) The type of gRPC call to perform. Valid values are healthcheck, unary. @@ -1784,22 +2979,39 @@ type RequestDefinitionInitParameters struct { // 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`. CertificateDomains []*string `json:"certificateDomains,omitempty" tf:"certificate_domains,omitempty"` + // (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + // For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + CheckCertificateRevocation *bool `json:"checkCertificateRevocation,omitempty" tf:"check_certificate_revocation,omitempty"` + // (String) DNS server to use for DNS tests (subtype = "dns"). // DNS server to use for DNS tests (`subtype = "dns"`). DNSServer *string `json:"dnsServer,omitempty" tf:"dns_server,omitempty"` - // (Number) DNS server port to use for DNS tests. + // (String) DNS server port to use for DNS tests. // DNS server port to use for DNS tests. - DNSServerPort *float64 `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + DNSServerPort *string `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` // (Boolean) Determines whether or not the API HTTP test should follow redirects. // Determines whether or not the API HTTP test should follow redirects. FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` + // data. + // Form data to be sent when `body_type` is `multipart/form-data`. + // +mapType=granular + Form map[string]*string `json:"form,omitempty" tf:"form,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` + // (String) Host name to perform the test with. // Host name to perform the test with. Host *string `json:"host,omitempty" tf:"host,omitempty"` + // encoded. + // Whether the message is base64-encoded. + IsMessageBase64Encoded *bool `json:"isMessageBase64Encoded,omitempty" tf:"is_message_base64_encoded,omitempty"` + // (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 "". // For UDP and websocket tests, message to send with the request. Message *string `json:"message,omitempty" tf:"message,omitempty"` @@ -1824,9 +3036,9 @@ type RequestDefinitionInitParameters struct { // The content of a proto file as a string. PlainProtoFile *string `json:"plainProtoFile,omitempty" tf:"plain_proto_file,omitempty"` - // (Number) Port to use when performing the test. + // (String) Port to use when performing the test. // Port to use when performing the test. - Port *float64 `json:"port,omitempty" tf:"port,omitempty"` + Port *string `json:"port,omitempty" tf:"port,omitempty"` // (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. // A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. @@ -1844,8 +3056,8 @@ type RequestDefinitionInitParameters struct { // This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). ShouldTrackHops *bool `json:"shouldTrackHops,omitempty" tf:"should_track_hops,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. - // Timeout in seconds for the test. Defaults to `60`. + // (Number) Timeout in seconds for the test. + // Timeout in seconds for the test. Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` // (String) The URL to send the request to. @@ -1855,16 +3067,20 @@ type RequestDefinitionInitParameters struct { type RequestDefinitionObservation struct { - // (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - // Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. + // (Boolean) For SSL test, whether or not the test should allow self signed certificates. + // For SSL test, whether or not the test should allow self signed certificates. + AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` + + // (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + // Allows loading insecure content for a request in an API test or in a multistep API test step. AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` // (String) The request body. // The request body. Body *string `json:"body,omitempty" tf:"body,omitempty"` - // www-form-urlencoded, graphql. - // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`. + // www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. BodyType *string `json:"bodyType,omitempty" tf:"body_type,omitempty"` // (String) The type of gRPC call to perform. Valid values are healthcheck, unary. @@ -1875,22 +3091,39 @@ type RequestDefinitionObservation struct { // 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`. CertificateDomains []*string `json:"certificateDomains,omitempty" tf:"certificate_domains,omitempty"` + // (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + // For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + CheckCertificateRevocation *bool `json:"checkCertificateRevocation,omitempty" tf:"check_certificate_revocation,omitempty"` + // (String) DNS server to use for DNS tests (subtype = "dns"). // DNS server to use for DNS tests (`subtype = "dns"`). DNSServer *string `json:"dnsServer,omitempty" tf:"dns_server,omitempty"` - // (Number) DNS server port to use for DNS tests. + // (String) DNS server port to use for DNS tests. // DNS server port to use for DNS tests. - DNSServerPort *float64 `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + DNSServerPort *string `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` // (Boolean) Determines whether or not the API HTTP test should follow redirects. // Determines whether or not the API HTTP test should follow redirects. FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` + // data. + // Form data to be sent when `body_type` is `multipart/form-data`. + // +mapType=granular + Form map[string]*string `json:"form,omitempty" tf:"form,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` + // (String) Host name to perform the test with. // Host name to perform the test with. Host *string `json:"host,omitempty" tf:"host,omitempty"` + // encoded. + // Whether the message is base64-encoded. + IsMessageBase64Encoded *bool `json:"isMessageBase64Encoded,omitempty" tf:"is_message_base64_encoded,omitempty"` + // (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 "". // For UDP and websocket tests, message to send with the request. Message *string `json:"message,omitempty" tf:"message,omitempty"` @@ -1915,9 +3148,9 @@ type RequestDefinitionObservation struct { // The content of a proto file as a string. PlainProtoFile *string `json:"plainProtoFile,omitempty" tf:"plain_proto_file,omitempty"` - // (Number) Port to use when performing the test. + // (String) Port to use when performing the test. // Port to use when performing the test. - Port *float64 `json:"port,omitempty" tf:"port,omitempty"` + Port *string `json:"port,omitempty" tf:"port,omitempty"` // (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. // A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. @@ -1935,8 +3168,8 @@ type RequestDefinitionObservation struct { // This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). ShouldTrackHops *bool `json:"shouldTrackHops,omitempty" tf:"should_track_hops,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. - // Timeout in seconds for the test. Defaults to `60`. + // (Number) Timeout in seconds for the test. + // Timeout in seconds for the test. Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` // (String) The URL to send the request to. @@ -1946,8 +3179,13 @@ type RequestDefinitionObservation struct { type RequestDefinitionParameters struct { - // (Boolean) Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. - // Allows loading insecure content for an HTTP request in an API test or in a multistep API test step. + // (Boolean) For SSL test, whether or not the test should allow self signed certificates. + // For SSL test, whether or not the test should allow self signed certificates. + // +kubebuilder:validation:Optional + AcceptSelfSigned *bool `json:"acceptSelfSigned,omitempty" tf:"accept_self_signed,omitempty"` + + // (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + // Allows loading insecure content for a request in an API test or in a multistep API test step. // +kubebuilder:validation:Optional AllowInsecure *bool `json:"allowInsecure,omitempty" tf:"allow_insecure,omitempty"` @@ -1956,8 +3194,8 @@ type RequestDefinitionParameters struct { // +kubebuilder:validation:Optional Body *string `json:"body,omitempty" tf:"body,omitempty"` - // www-form-urlencoded, graphql. - // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`. + // www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. // +kubebuilder:validation:Optional BodyType *string `json:"bodyType,omitempty" tf:"body_type,omitempty"` @@ -1971,26 +3209,47 @@ type RequestDefinitionParameters struct { // +kubebuilder:validation:Optional CertificateDomains []*string `json:"certificateDomains,omitempty" tf:"certificate_domains,omitempty"` + // (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + // For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + // +kubebuilder:validation:Optional + CheckCertificateRevocation *bool `json:"checkCertificateRevocation,omitempty" tf:"check_certificate_revocation,omitempty"` + // (String) DNS server to use for DNS tests (subtype = "dns"). // DNS server to use for DNS tests (`subtype = "dns"`). // +kubebuilder:validation:Optional DNSServer *string `json:"dnsServer,omitempty" tf:"dns_server,omitempty"` - // (Number) DNS server port to use for DNS tests. + // (String) DNS server port to use for DNS tests. // DNS server port to use for DNS tests. // +kubebuilder:validation:Optional - DNSServerPort *float64 `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + DNSServerPort *string `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` // (Boolean) Determines whether or not the API HTTP test should follow redirects. // Determines whether or not the API HTTP test should follow redirects. // +kubebuilder:validation:Optional FollowRedirects *bool `json:"followRedirects,omitempty" tf:"follow_redirects,omitempty"` + // data. + // Form data to be sent when `body_type` is `multipart/form-data`. + // +kubebuilder:validation:Optional + // +mapType=granular + Form map[string]*string `json:"form,omitempty" tf:"form,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + // +kubebuilder:validation:Optional + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` + // (String) Host name to perform the test with. // Host name to perform the test with. // +kubebuilder:validation:Optional Host *string `json:"host,omitempty" tf:"host,omitempty"` + // encoded. + // Whether the message is base64-encoded. + // +kubebuilder:validation:Optional + IsMessageBase64Encoded *bool `json:"isMessageBase64Encoded,omitempty" tf:"is_message_base64_encoded,omitempty"` + // (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 "". // For UDP and websocket tests, message to send with the request. // +kubebuilder:validation:Optional @@ -2021,10 +3280,10 @@ type RequestDefinitionParameters struct { // +kubebuilder:validation:Optional PlainProtoFile *string `json:"plainProtoFile,omitempty" tf:"plain_proto_file,omitempty"` - // (Number) Port to use when performing the test. + // (String) Port to use when performing the test. // Port to use when performing the test. // +kubebuilder:validation:Optional - Port *float64 `json:"port,omitempty" tf:"port,omitempty"` + Port *string `json:"port,omitempty" tf:"port,omitempty"` // (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. // A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. @@ -2046,15 +3305,93 @@ type RequestDefinitionParameters struct { // +kubebuilder:validation:Optional ShouldTrackHops *bool `json:"shouldTrackHops,omitempty" tf:"should_track_hops,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. - // Timeout in seconds for the test. Defaults to `60`. + // (Number) Timeout in seconds for the test. + // Timeout in seconds for the test. // +kubebuilder:validation:Optional Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` - // (String) The URL to send the request to. - // The URL to send the request to. + // (String) The URL to send the request to. + // The URL to send the request to. + // +kubebuilder:validation:Optional + URL *string `json:"url,omitempty" tf:"url,omitempty"` +} + +type RequestFileInitParameters struct { + + // (String, Sensitive) Content of the certificate. + // Content of the file. + Content *string `json:"content,omitempty" tf:"content,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the file. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Original name of the file. + // Original name of the file. + OriginalFileName *string `json:"originalFileName,omitempty" tf:"original_file_name,omitempty"` + + // (Number) Size of the file. + // Size of the file. + Size *float64 `json:"size,omitempty" tf:"size,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the file. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type RequestFileObservation struct { + + // (String) Bucket key of the file. + // Bucket key of the file. + BucketKey *string `json:"bucketKey,omitempty" tf:"bucket_key,omitempty"` + + // (String, Sensitive) Content of the certificate. + // Content of the file. + Content *string `json:"content,omitempty" tf:"content,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the file. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Original name of the file. + // Original name of the file. + OriginalFileName *string `json:"originalFileName,omitempty" tf:"original_file_name,omitempty"` + + // (Number) Size of the file. + // Size of the file. + Size *float64 `json:"size,omitempty" tf:"size,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the file. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type RequestFileParameters struct { + + // (String, Sensitive) Content of the certificate. + // Content of the file. + // +kubebuilder:validation:Optional + Content *string `json:"content,omitempty" tf:"content,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the file. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (String) Original name of the file. + // Original name of the file. + // +kubebuilder:validation:Optional + OriginalFileName *string `json:"originalFileName,omitempty" tf:"original_file_name,omitempty"` + + // (Number) Size of the file. + // Size of the file. + // +kubebuilder:validation:Optional + Size *float64 `json:"size" tf:"size,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the file. // +kubebuilder:validation:Optional - URL *string `json:"url,omitempty" tf:"url,omitempty"` + Type *string `json:"type" tf:"type,omitempty"` } type RequestProxyInitParameters struct { @@ -2097,39 +3434,87 @@ type RequestProxyParameters struct { type RetryInitParameters struct { - // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. - // Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`. + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. Count *float64 `json:"count,omitempty" tf:"count,omitempty"` - // (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. - // Interval between a failed test and the next retry in milliseconds. Defaults to `300`. + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` } type RetryObservation struct { - // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. - // Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`. + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. Count *float64 `json:"count,omitempty" tf:"count,omitempty"` - // (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. - // Interval between a failed test and the next retry in milliseconds. Defaults to `300`. + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` } type RetryParameters struct { - // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Defaults to 0. - // Number of retries needed to consider a location as failed before sending a notification alert. Defaults to `0`. + // (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + // Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. // +kubebuilder:validation:Optional Count *float64 `json:"count,omitempty" tf:"count,omitempty"` - // (Number) Interval between a failed test and the next retry in milliseconds. Defaults to 300. - // Interval between a failed test and the next retry in milliseconds. Defaults to `300`. + // (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + // Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. // +kubebuilder:validation:Optional Interval *float64 `json:"interval,omitempty" tf:"interval,omitempty"` } +type RumSettingsInitParameters struct { + + // (String) + // RUM application ID used to collect RUM data for the browser test. + ApplicationID *string `json:"applicationId,omitempty" tf:"application_id,omitempty"` + + // (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + // RUM application API key ID used to collect RUM data for the browser test. + ClientTokenID *float64 `json:"clientTokenId,omitempty" tf:"client_token_id,omitempty"` + + // (Boolean) Determines whether RUM data is collected during test runs. + // Determines whether RUM data is collected during test runs. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` +} + +type RumSettingsObservation struct { + + // (String) + // RUM application ID used to collect RUM data for the browser test. + ApplicationID *string `json:"applicationId,omitempty" tf:"application_id,omitempty"` + + // (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + // RUM application API key ID used to collect RUM data for the browser test. + ClientTokenID *float64 `json:"clientTokenId,omitempty" tf:"client_token_id,omitempty"` + + // (Boolean) Determines whether RUM data is collected during test runs. + // Determines whether RUM data is collected during test runs. + IsEnabled *bool `json:"isEnabled,omitempty" tf:"is_enabled,omitempty"` +} + +type RumSettingsParameters struct { + + // (String) + // RUM application ID used to collect RUM data for the browser test. + // +kubebuilder:validation:Optional + ApplicationID *string `json:"applicationId,omitempty" tf:"application_id,omitempty"` + + // (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + // RUM application API key ID used to collect RUM data for the browser test. + // +kubebuilder:validation:Optional + ClientTokenID *float64 `json:"clientTokenId,omitempty" tf:"client_token_id,omitempty"` + + // (Boolean) Determines whether RUM data is collected during test runs. + // Determines whether RUM data is collected during test runs. + // +kubebuilder:validation:Optional + IsEnabled *bool `json:"isEnabled" tf:"is_enabled,omitempty"` +} + type SchedulingInitParameters struct { // (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) @@ -2165,8 +3550,60 @@ type SchedulingParameters struct { Timezone *string `json:"timezone" tf:"timezone,omitempty"` } +type SchedulingTimeframesInitParameters struct { + + // (Number) Number representing the day of the week + // Number representing the day of the week + Day *float64 `json:"day,omitempty" tf:"day,omitempty"` + + // (String) The hour of the day on which scheduling starts. + // The hour of the day on which scheduling starts. + From *string `json:"from,omitempty" tf:"from,omitempty"` + + // (String) The hour of the day on which scheduling ends. + // The hour of the day on which scheduling ends. + To *string `json:"to,omitempty" tf:"to,omitempty"` +} + +type SchedulingTimeframesObservation struct { + + // (Number) Number representing the day of the week + // Number representing the day of the week + Day *float64 `json:"day,omitempty" tf:"day,omitempty"` + + // (String) The hour of the day on which scheduling starts. + // The hour of the day on which scheduling starts. + From *string `json:"from,omitempty" tf:"from,omitempty"` + + // (String) The hour of the day on which scheduling ends. + // The hour of the day on which scheduling ends. + To *string `json:"to,omitempty" tf:"to,omitempty"` +} + +type SchedulingTimeframesParameters struct { + + // (Number) Number representing the day of the week + // Number representing the day of the week + // +kubebuilder:validation:Optional + Day *float64 `json:"day" tf:"day,omitempty"` + + // (String) The hour of the day on which scheduling starts. + // The hour of the day on which scheduling starts. + // +kubebuilder:validation:Optional + From *string `json:"from" tf:"from,omitempty"` + + // (String) The hour of the day on which scheduling ends. + // The hour of the day on which scheduling ends. + // +kubebuilder:validation:Optional + To *string `json:"to" tf:"to,omitempty"` +} + type TargetjsonpathInitParameters struct { + // (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + // The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + Elementsoperator *string `json:"elementsoperator,omitempty" tf:"elementsoperator,omitempty"` + // (String) The JSON path to assert. // The JSON path to assert. Jsonpath *string `json:"jsonpath,omitempty" tf:"jsonpath,omitempty"` @@ -2182,6 +3619,10 @@ type TargetjsonpathInitParameters struct { type TargetjsonpathObservation struct { + // (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + // The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + Elementsoperator *string `json:"elementsoperator,omitempty" tf:"elementsoperator,omitempty"` + // (String) The JSON path to assert. // The JSON path to assert. Jsonpath *string `json:"jsonpath,omitempty" tf:"jsonpath,omitempty"` @@ -2197,6 +3638,11 @@ type TargetjsonpathObservation struct { type TargetjsonpathParameters struct { + // (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + // The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + // +kubebuilder:validation:Optional + Elementsoperator *string `json:"elementsoperator,omitempty" tf:"elementsoperator,omitempty"` + // (String) The JSON path to assert. // The JSON path to assert. // +kubebuilder:validation:Optional @@ -2213,6 +3659,41 @@ type TargetjsonpathParameters struct { Targetvalue *string `json:"targetvalue,omitempty" tf:"targetvalue,omitempty"` } +type TargetjsonschemaInitParameters struct { + + // (String) The JSON Schema to validate the body against. + // The JSON Schema to validate the body against. + Jsonschema *string `json:"jsonschema,omitempty" tf:"jsonschema,omitempty"` + + // 07". + // The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + Metaschema *string `json:"metaschema,omitempty" tf:"metaschema,omitempty"` +} + +type TargetjsonschemaObservation struct { + + // (String) The JSON Schema to validate the body against. + // The JSON Schema to validate the body against. + Jsonschema *string `json:"jsonschema,omitempty" tf:"jsonschema,omitempty"` + + // 07". + // The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + Metaschema *string `json:"metaschema,omitempty" tf:"metaschema,omitempty"` +} + +type TargetjsonschemaParameters struct { + + // (String) The JSON Schema to validate the body against. + // The JSON Schema to validate the body against. + // +kubebuilder:validation:Optional + Jsonschema *string `json:"jsonschema" tf:"jsonschema,omitempty"` + + // 07". + // The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + // +kubebuilder:validation:Optional + Metaschema *string `json:"metaschema,omitempty" tf:"metaschema,omitempty"` +} + type TargetxpathInitParameters struct { // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). @@ -2263,6 +3744,10 @@ type TargetxpathParameters struct { type TestAssertionInitParameters struct { + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + // If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + Code *string `json:"code,omitempty" tf:"code,omitempty"` + // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). // 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)). Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` @@ -2277,23 +3762,31 @@ type TestAssertionInitParameters struct { // (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) // Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. - Targetjsonpath []AssertionTargetjsonpathInitParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + Targetjsonpath *AssertionTargetjsonpathInitParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + + // (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + // Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + Targetjsonschema *AssertionTargetjsonschemaInitParameters `json:"targetjsonschema,omitempty" tf:"targetjsonschema,omitempty"` // (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) // Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. - Targetxpath []AssertionTargetxpathInitParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` + Targetxpath *AssertionTargetxpathInitParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` // (String) Timings scope for response time assertions. Valid values are all, withoutDNS. // Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. TimingsScope *string `json:"timingsScope,omitempty" tf:"timings_scope,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // 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`, `bodyHash`, `javascript`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } type TestAssertionObservation struct { + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + // If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + Code *string `json:"code,omitempty" tf:"code,omitempty"` + // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). // 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)). Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` @@ -2308,27 +3801,36 @@ type TestAssertionObservation struct { // (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) // Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. - Targetjsonpath []AssertionTargetjsonpathObservation `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + Targetjsonpath *AssertionTargetjsonpathObservation `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + + // (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + // Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + Targetjsonschema *AssertionTargetjsonschemaObservation `json:"targetjsonschema,omitempty" tf:"targetjsonschema,omitempty"` // (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) // Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. - Targetxpath []AssertionTargetxpathObservation `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` + Targetxpath *AssertionTargetxpathObservation `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` // (String) Timings scope for response time assertions. Valid values are all, withoutDNS. // Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. TimingsScope *string `json:"timingsScope,omitempty" tf:"timings_scope,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // 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`, `bodyHash`, `javascript`. Type *string `json:"type,omitempty" tf:"type,omitempty"` } type TestAssertionParameters struct { + // (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + // If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + // +kubebuilder:validation:Optional + Code *string `json:"code,omitempty" tf:"code,omitempty"` + // (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). // 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)). // +kubebuilder:validation:Optional - Operator *string `json:"operator" tf:"operator,omitempty"` + Operator *string `json:"operator,omitempty" tf:"operator,omitempty"` // (String) If assertion type is header, this is the header name. // If assertion type is `header`, this is the header name. @@ -2343,28 +3845,33 @@ type TestAssertionParameters struct { // (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) // Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - Targetjsonpath []AssertionTargetjsonpathParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + Targetjsonpath *AssertionTargetjsonpathParameters `json:"targetjsonpath,omitempty" tf:"targetjsonpath,omitempty"` + + // (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + // Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + // +kubebuilder:validation:Optional + Targetjsonschema *AssertionTargetjsonschemaParameters `json:"targetjsonschema,omitempty" tf:"targetjsonschema,omitempty"` // (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) // Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - Targetxpath []AssertionTargetxpathParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` + Targetxpath *AssertionTargetxpathParameters `json:"targetxpath,omitempty" tf:"targetxpath,omitempty"` // (String) Timings scope for response time assertions. Valid values are all, withoutDNS. // Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. // +kubebuilder:validation:Optional TimingsScope *string `json:"timingsScope,omitempty" tf:"timings_scope,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // 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`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // 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`, `bodyHash`, `javascript`. // +kubebuilder:validation:Optional Type *string `json:"type" tf:"type,omitempty"` } type TestInitParameters struct { - // (Block List) Steps for multistep api tests (see below for nested schema) - // Steps for multistep api tests + // step api tests (see below for nested schema) + // Steps for multi-step api tests APIStep []APIStepInitParameters `json:"apiStep,omitempty" tf:"api_step,omitempty"` // (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) @@ -2379,16 +3886,25 @@ type TestInitParameters struct { // Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below. BrowserVariable []BrowserVariableInitParameters `json:"browserVariable,omitempty" tf:"browser_variable,omitempty"` + // (Map of String) Initial application arguments for the mobile test. + // Initial application arguments for the mobile test. + // +mapType=granular + ConfigInitialApplicationArguments map[string]*string `json:"configInitialApplicationArguments,omitempty" tf:"config_initial_application_arguments,omitempty"` + // (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) // Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below. ConfigVariable []ConfigVariableInitParameters `json:"configVariable,omitempty" tf:"config_variable,omitempty"` - // (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. - // 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`. + // (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + // Required if `type = "browser"`. Array with the different device IDs used to run the test. DeviceIds []*string `json:"deviceIds,omitempty" tf:"device_ids,omitempty"` - // (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. - // Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations. + // (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + // A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + ForceDeleteDependencies *bool `json:"forceDeleteDependencies,omitempty" tf:"force_delete_dependencies,omitempty"` + + // (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 or find the possible values listed in this API response. + // Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true). // +listType=set Locations []*string `json:"locations,omitempty" tf:"locations,omitempty"` @@ -2396,38 +3912,49 @@ type TestInitParameters struct { // 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 `""`. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (Block List, Max: 1) (see below for nested schema) + MobileOptionsList *MobileOptionsListInitParameters `json:"mobileOptionsList,omitempty" tf:"mobile_options_list,omitempty"` + + // (Block List) Steps for mobile tests (see below for nested schema) + // Steps for mobile tests + MobileStep []MobileStepInitParameters `json:"mobileStep,omitempty" tf:"mobile_step,omitempty"` + // (String) Name of Datadog synthetics test. // Name of Datadog synthetics test. Name *string `json:"name,omitempty" tf:"name,omitempty"` // (Block List, Max: 1) (see below for nested schema) - OptionsList []OptionsListInitParameters `json:"optionsList,omitempty" tf:"options_list,omitempty"` + OptionsList *OptionsListInitParameters `json:"optionsList,omitempty" tf:"options_list,omitempty"` // (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) // The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. - RequestBasicauth []TestRequestBasicauthInitParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` + RequestBasicauth *TestRequestBasicauthInitParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` // (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) // Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. - RequestClientCertificate []TestRequestClientCertificateInitParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` + RequestClientCertificate *TestRequestClientCertificateInitParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` // (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) // Required if `type = "api"`. The synthetics test request. - RequestDefinition []TestRequestDefinitionInitParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + RequestDefinition *TestRequestDefinitionInitParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + + // (Block List) Files to be used as part of the request in the test. (see below for nested schema) + // Files to be used as part of the request in the test. + RequestFile []TestRequestFileInitParameters `json:"requestFile,omitempty" tf:"request_file,omitempty"` // (Map of String) Header name and value map. // Header name and value map. // +mapType=granular RequestHeaders map[string]*string `json:"requestHeaders,omitempty" tf:"request_headers,omitempty"` - // (Map of String) Metadata to include when performing the gRPC test. - // Metadata to include when performing the gRPC test. + // (Map of String) Metadata to include when performing the gRPC request. + // Metadata to include when performing the gRPC request. // +mapType=granular RequestMetadata map[string]*string `json:"requestMetadata,omitempty" tf:"request_metadata,omitempty"` // (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) // The proxy to perform the test. - RequestProxy []TestRequestProxyInitParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` + RequestProxy *TestRequestProxyInitParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` // (Map of String) Query arguments name and value map. // Query arguments name and value map. @@ -2450,15 +3977,19 @@ type TestInitParameters struct { // 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 (`[]`). Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Synthetics test type. Valid values are `api`, `browser`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Synthetics test type. Valid values are `api`, `browser`, `mobile`. Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) Variables defined from JavaScript code for API HTTP tests. + // Variables defined from JavaScript code for API HTTP tests. + VariablesFromScript *string `json:"variablesFromScript,omitempty" tf:"variables_from_script,omitempty"` } type TestObservation struct { - // (Block List) Steps for multistep api tests (see below for nested schema) - // Steps for multistep api tests + // step api tests (see below for nested schema) + // Steps for multi-step api tests APIStep []APIStepObservation `json:"apiStep,omitempty" tf:"api_step,omitempty"` // (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) @@ -2473,19 +4004,28 @@ type TestObservation struct { // Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below. BrowserVariable []BrowserVariableObservation `json:"browserVariable,omitempty" tf:"browser_variable,omitempty"` + // (Map of String) Initial application arguments for the mobile test. + // Initial application arguments for the mobile test. + // +mapType=granular + ConfigInitialApplicationArguments map[string]*string `json:"configInitialApplicationArguments,omitempty" tf:"config_initial_application_arguments,omitempty"` + // (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) // Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below. ConfigVariable []ConfigVariableObservation `json:"configVariable,omitempty" tf:"config_variable,omitempty"` - // (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. - // 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`. + // (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + // Required if `type = "browser"`. Array with the different device IDs used to run the test. DeviceIds []*string `json:"deviceIds,omitempty" tf:"device_ids,omitempty"` + // (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + // A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + ForceDeleteDependencies *bool `json:"forceDeleteDependencies,omitempty" tf:"force_delete_dependencies,omitempty"` + // (String) The ID of this resource. ID *string `json:"id,omitempty" tf:"id,omitempty"` - // (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. - // Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of 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 or find the possible values listed in this API response. + // Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true). // +listType=set Locations []*string `json:"locations,omitempty" tf:"locations,omitempty"` @@ -2493,6 +4033,13 @@ type TestObservation struct { // 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 `""`. Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (Block List, Max: 1) (see below for nested schema) + MobileOptionsList *MobileOptionsListObservation `json:"mobileOptionsList,omitempty" tf:"mobile_options_list,omitempty"` + + // (Block List) Steps for mobile tests (see below for nested schema) + // Steps for mobile tests + MobileStep []MobileStepObservation `json:"mobileStep,omitempty" tf:"mobile_step,omitempty"` + // (Number) ID of the monitor associated with the Datadog synthetics test. // ID of the monitor associated with the Datadog synthetics test. MonitorID *float64 `json:"monitorId,omitempty" tf:"monitor_id,omitempty"` @@ -2502,33 +4049,37 @@ type TestObservation struct { Name *string `json:"name,omitempty" tf:"name,omitempty"` // (Block List, Max: 1) (see below for nested schema) - OptionsList []OptionsListObservation `json:"optionsList,omitempty" tf:"options_list,omitempty"` + OptionsList *OptionsListObservation `json:"optionsList,omitempty" tf:"options_list,omitempty"` // (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) // The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. - RequestBasicauth []TestRequestBasicauthObservation `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` + RequestBasicauth *TestRequestBasicauthObservation `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` // (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) // Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. - RequestClientCertificate []TestRequestClientCertificateObservation `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` + RequestClientCertificate *TestRequestClientCertificateObservation `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` // (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) // Required if `type = "api"`. The synthetics test request. - RequestDefinition []TestRequestDefinitionObservation `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + RequestDefinition *TestRequestDefinitionObservation `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + + // (Block List) Files to be used as part of the request in the test. (see below for nested schema) + // Files to be used as part of the request in the test. + RequestFile []TestRequestFileObservation `json:"requestFile,omitempty" tf:"request_file,omitempty"` // (Map of String) Header name and value map. // Header name and value map. // +mapType=granular RequestHeaders map[string]*string `json:"requestHeaders,omitempty" tf:"request_headers,omitempty"` - // (Map of String) Metadata to include when performing the gRPC test. - // Metadata to include when performing the gRPC test. + // (Map of String) Metadata to include when performing the gRPC request. + // Metadata to include when performing the gRPC request. // +mapType=granular RequestMetadata map[string]*string `json:"requestMetadata,omitempty" tf:"request_metadata,omitempty"` // (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) // The proxy to perform the test. - RequestProxy []TestRequestProxyObservation `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` + RequestProxy *TestRequestProxyObservation `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` // (Map of String) Query arguments name and value map. // Query arguments name and value map. @@ -2551,15 +4102,19 @@ type TestObservation struct { // 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 (`[]`). Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Synthetics test type. Valid values are `api`, `browser`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Synthetics test type. Valid values are `api`, `browser`, `mobile`. Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) Variables defined from JavaScript code for API HTTP tests. + // Variables defined from JavaScript code for API HTTP tests. + VariablesFromScript *string `json:"variablesFromScript,omitempty" tf:"variables_from_script,omitempty"` } type TestParameters struct { - // (Block List) Steps for multistep api tests (see below for nested schema) - // Steps for multistep api tests + // step api tests (see below for nested schema) + // Steps for multi-step api tests // +kubebuilder:validation:Optional APIStep []APIStepParameters `json:"apiStep,omitempty" tf:"api_step,omitempty"` @@ -2578,18 +4133,29 @@ type TestParameters struct { // +kubebuilder:validation:Optional BrowserVariable []BrowserVariableParameters `json:"browserVariable,omitempty" tf:"browser_variable,omitempty"` + // (Map of String) Initial application arguments for the mobile test. + // Initial application arguments for the mobile test. + // +kubebuilder:validation:Optional + // +mapType=granular + ConfigInitialApplicationArguments map[string]*string `json:"configInitialApplicationArguments,omitempty" tf:"config_initial_application_arguments,omitempty"` + // (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) // Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below. // +kubebuilder:validation:Optional ConfigVariable []ConfigVariableParameters `json:"configVariable,omitempty" tf:"config_variable,omitempty"` - // (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. - // 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`. + // (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + // Required if `type = "browser"`. Array with the different device IDs used to run the test. // +kubebuilder:validation:Optional DeviceIds []*string `json:"deviceIds,omitempty" tf:"device_ids,omitempty"` - // (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. - // Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations. + // (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + // A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + // +kubebuilder:validation:Optional + ForceDeleteDependencies *bool `json:"forceDeleteDependencies,omitempty" tf:"force_delete_dependencies,omitempty"` + + // (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 or find the possible values listed in this API response. + // Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true). // +kubebuilder:validation:Optional // +listType=set Locations []*string `json:"locations,omitempty" tf:"locations,omitempty"` @@ -2599,6 +4165,15 @@ type TestParameters struct { // +kubebuilder:validation:Optional Message *string `json:"message,omitempty" tf:"message,omitempty"` + // (Block List, Max: 1) (see below for nested schema) + // +kubebuilder:validation:Optional + MobileOptionsList *MobileOptionsListParameters `json:"mobileOptionsList,omitempty" tf:"mobile_options_list,omitempty"` + + // (Block List) Steps for mobile tests (see below for nested schema) + // Steps for mobile tests + // +kubebuilder:validation:Optional + MobileStep []MobileStepParameters `json:"mobileStep,omitempty" tf:"mobile_step,omitempty"` + // (String) Name of Datadog synthetics test. // Name of Datadog synthetics test. // +kubebuilder:validation:Optional @@ -2606,22 +4181,27 @@ type TestParameters struct { // (Block List, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - OptionsList []OptionsListParameters `json:"optionsList,omitempty" tf:"options_list,omitempty"` + OptionsList *OptionsListParameters `json:"optionsList,omitempty" tf:"options_list,omitempty"` // (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) // The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - RequestBasicauth []TestRequestBasicauthParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` + RequestBasicauth *TestRequestBasicauthParameters `json:"requestBasicauth,omitempty" tf:"request_basicauth,omitempty"` // (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) // Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. // +kubebuilder:validation:Optional - RequestClientCertificate []TestRequestClientCertificateParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` + RequestClientCertificate *TestRequestClientCertificateParameters `json:"requestClientCertificate,omitempty" tf:"request_client_certificate,omitempty"` // (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) // Required if `type = "api"`. The synthetics test request. // +kubebuilder:validation:Optional - RequestDefinition []TestRequestDefinitionParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + RequestDefinition *TestRequestDefinitionParameters `json:"requestDefinition,omitempty" tf:"request_definition,omitempty"` + + // (Block List) Files to be used as part of the request in the test. (see below for nested schema) + // Files to be used as part of the request in the test. + // +kubebuilder:validation:Optional + RequestFile []TestRequestFileParameters `json:"requestFile,omitempty" tf:"request_file,omitempty"` // (Map of String) Header name and value map. // Header name and value map. @@ -2629,8 +4209,8 @@ type TestParameters struct { // +mapType=granular RequestHeaders map[string]*string `json:"requestHeaders,omitempty" tf:"request_headers,omitempty"` - // (Map of String) Metadata to include when performing the gRPC test. - // Metadata to include when performing the gRPC test. + // (Map of String) Metadata to include when performing the gRPC request. + // Metadata to include when performing the gRPC request. // +kubebuilder:validation:Optional // +mapType=granular RequestMetadata map[string]*string `json:"requestMetadata,omitempty" tf:"request_metadata,omitempty"` @@ -2638,7 +4218,7 @@ type TestParameters struct { // (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) // The proxy to perform the test. // +kubebuilder:validation:Optional - RequestProxy []TestRequestProxyParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` + RequestProxy *TestRequestProxyParameters `json:"requestProxy,omitempty" tf:"request_proxy,omitempty"` // (Map of String) Query arguments name and value map. // Query arguments name and value map. @@ -2666,14 +4246,23 @@ type TestParameters struct { // +kubebuilder:validation:Optional Tags []*string `json:"tags,omitempty" tf:"tags,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. - // Synthetics test type. Valid values are `api`, `browser`. + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Synthetics test type. Valid values are `api`, `browser`, `mobile`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (String) Variables defined from JavaScript code for API HTTP tests. + // Variables defined from JavaScript code for API HTTP tests. + // +kubebuilder:validation:Optional + VariablesFromScript *string `json:"variablesFromScript,omitempty" tf:"variables_from_script,omitempty"` } type TestRequestBasicauthInitParameters struct { + // (String, Sensitive) Access key for SIGV4 authentication. + // Access key for `SIGV4` authentication. + AccessKeySecretRef *v1.SecretKeySelector `json:"accessKeySecretRef,omitempty" tf:"-"` + // client or oauth-rop authentication. // Access token url for `oauth-client` or `oauth-rop` authentication. AccessTokenURL *string `json:"accessTokenUrl,omitempty" tf:"access_token_url,omitempty"` @@ -2686,10 +4275,18 @@ type TestRequestBasicauthInitParameters struct { // Client ID for `oauth-client` or `oauth-rop` authentication. ClientID *string `json:"clientId,omitempty" tf:"client_id,omitempty"` + // client or oauth-rop authentication. + // Client secret for `oauth-client` or `oauth-rop` authentication. + ClientSecretSecretRef *v1.SecretKeySelector `json:"clientSecretSecretRef,omitempty" tf:"-"` + // (String) Domain for ntlm authentication. // Domain for `ntlm` authentication. Domain *string `json:"domain,omitempty" tf:"domain,omitempty"` + // (String, Sensitive) Password for authentication. + // Password for authentication. + PasswordSecretRef *v1.SecretKeySelector `json:"passwordSecretRef,omitempty" tf:"-"` + // (String) Region for SIGV4 authentication. // Region for `SIGV4` authentication. Region *string `json:"region,omitempty" tf:"region,omitempty"` @@ -2702,6 +4299,10 @@ type TestRequestBasicauthInitParameters struct { // Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. Scope *string `json:"scope,omitempty" tf:"scope,omitempty"` + // (String, Sensitive) Secret key for SIGV4 authentication. + // Secret key for `SIGV4` authentication. + SecretKeySecretRef *v1.SecretKeySelector `json:"secretKeySecretRef,omitempty" tf:"-"` + // (String) Service name for SIGV4 authentication. // Service name for `SIGV4` authentication. ServiceName *string `json:"serviceName,omitempty" tf:"service_name,omitempty"` @@ -2714,7 +4315,7 @@ type TestRequestBasicauthInitParameters struct { // Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. TokenAPIAuthentication *string `json:"tokenApiAuthentication,omitempty" tf:"token_api_authentication,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of basic authentication to use when performing the test. Defaults to `"web"`. Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -2769,7 +4370,7 @@ type TestRequestBasicauthObservation struct { // Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. TokenAPIAuthentication *string `json:"tokenApiAuthentication,omitempty" tf:"token_api_authentication,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of basic authentication to use when performing the test. Defaults to `"web"`. Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -2854,7 +4455,7 @@ type TestRequestBasicauthParameters struct { // +kubebuilder:validation:Optional TokenAPIAuthentication *string `json:"tokenApiAuthentication,omitempty" tf:"token_api_authentication,omitempty"` - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Type of basic authentication to use when performing the test. Defaults to `"web"`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` @@ -2873,30 +4474,30 @@ type TestRequestBasicauthParameters struct { type TestRequestClientCertificateInitParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Cert []RequestClientCertificateCertInitParameters `json:"cert,omitempty" tf:"cert,omitempty"` + Cert *RequestClientCertificateCertInitParameters `json:"cert,omitempty" tf:"cert,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) - Key []RequestClientCertificateKeyInitParameters `json:"key,omitempty" tf:"key,omitempty"` + Key *RequestClientCertificateKeyInitParameters `json:"key,omitempty" tf:"key,omitempty"` } type TestRequestClientCertificateObservation struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) - Cert []RequestClientCertificateCertObservation `json:"cert,omitempty" tf:"cert,omitempty"` + Cert *RequestClientCertificateCertObservation `json:"cert,omitempty" tf:"cert,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) - Key []RequestClientCertificateKeyObservation `json:"key,omitempty" tf:"key,omitempty"` + Key *RequestClientCertificateKeyObservation `json:"key,omitempty" tf:"key,omitempty"` } type TestRequestClientCertificateParameters struct { // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Cert []RequestClientCertificateCertParameters `json:"cert" tf:"cert,omitempty"` + Cert *RequestClientCertificateCertParameters `json:"cert" tf:"cert,omitempty"` // (Block List, Min: 1, Max: 1) (see below for nested schema) // +kubebuilder:validation:Optional - Key []RequestClientCertificateKeyParameters `json:"key" tf:"key,omitempty"` + Key *RequestClientCertificateKeyParameters `json:"key" tf:"key,omitempty"` } type TestRequestDefinitionInitParameters struct { @@ -2905,8 +4506,8 @@ type TestRequestDefinitionInitParameters struct { // The request body. Body *string `json:"body,omitempty" tf:"body,omitempty"` - // www-form-urlencoded, graphql. - // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`. + // www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. BodyType *string `json:"bodyType,omitempty" tf:"body_type,omitempty"` // (String) The type of gRPC call to perform. Valid values are healthcheck, unary. @@ -2921,14 +4522,27 @@ type TestRequestDefinitionInitParameters struct { // DNS server to use for DNS tests (`subtype = "dns"`). DNSServer *string `json:"dnsServer,omitempty" tf:"dns_server,omitempty"` - // (Number) DNS server port to use for DNS tests. + // (String) DNS server port to use for DNS tests. // DNS server port to use for DNS tests. - DNSServerPort *float64 `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + DNSServerPort *string `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + + // data. + // Form data to be sent when `body_type` is `multipart/form-data`. + // +mapType=granular + Form map[string]*string `json:"form,omitempty" tf:"form,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead. + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` // (String) Host name to perform the test with. // Host name to perform the test with. Host *string `json:"host,omitempty" tf:"host,omitempty"` + // encoded. + // Whether the message is base64-encoded. + IsMessageBase64Encoded *bool `json:"isMessageBase64Encoded,omitempty" tf:"is_message_base64_encoded,omitempty"` + // (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 "". // For UDP and websocket tests, message to send with the request. Message *string `json:"message,omitempty" tf:"message,omitempty"` @@ -2953,9 +4567,9 @@ type TestRequestDefinitionInitParameters struct { // The content of a proto file as a string. PlainProtoFile *string `json:"plainProtoFile,omitempty" tf:"plain_proto_file,omitempty"` - // (Number) Port to use when performing the test. + // (String) Port to use when performing the test. // Port to use when performing the test. - Port *float64 `json:"port,omitempty" tf:"port,omitempty"` + Port *string `json:"port,omitempty" tf:"port,omitempty"` // (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. // A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. @@ -2973,8 +4587,8 @@ type TestRequestDefinitionInitParameters struct { // This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). ShouldTrackHops *bool `json:"shouldTrackHops,omitempty" tf:"should_track_hops,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. - // Timeout in seconds for the test. Defaults to `60`. + // (Number) Timeout in seconds for the test. + // Timeout in seconds for the test. Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` // (String) The URL to send the request to. @@ -2988,8 +4602,8 @@ type TestRequestDefinitionObservation struct { // The request body. Body *string `json:"body,omitempty" tf:"body,omitempty"` - // www-form-urlencoded, graphql. - // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`. + // www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. BodyType *string `json:"bodyType,omitempty" tf:"body_type,omitempty"` // (String) The type of gRPC call to perform. Valid values are healthcheck, unary. @@ -3004,14 +4618,27 @@ type TestRequestDefinitionObservation struct { // DNS server to use for DNS tests (`subtype = "dns"`). DNSServer *string `json:"dnsServer,omitempty" tf:"dns_server,omitempty"` - // (Number) DNS server port to use for DNS tests. + // (String) DNS server port to use for DNS tests. // DNS server port to use for DNS tests. - DNSServerPort *float64 `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + DNSServerPort *string `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + + // data. + // Form data to be sent when `body_type` is `multipart/form-data`. + // +mapType=granular + Form map[string]*string `json:"form,omitempty" tf:"form,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead. + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` // (String) Host name to perform the test with. // Host name to perform the test with. Host *string `json:"host,omitempty" tf:"host,omitempty"` + // encoded. + // Whether the message is base64-encoded. + IsMessageBase64Encoded *bool `json:"isMessageBase64Encoded,omitempty" tf:"is_message_base64_encoded,omitempty"` + // (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 "". // For UDP and websocket tests, message to send with the request. Message *string `json:"message,omitempty" tf:"message,omitempty"` @@ -3036,9 +4663,9 @@ type TestRequestDefinitionObservation struct { // The content of a proto file as a string. PlainProtoFile *string `json:"plainProtoFile,omitempty" tf:"plain_proto_file,omitempty"` - // (Number) Port to use when performing the test. + // (String) Port to use when performing the test. // Port to use when performing the test. - Port *float64 `json:"port,omitempty" tf:"port,omitempty"` + Port *string `json:"port,omitempty" tf:"port,omitempty"` // (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. // A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. @@ -3056,8 +4683,8 @@ type TestRequestDefinitionObservation struct { // This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). ShouldTrackHops *bool `json:"shouldTrackHops,omitempty" tf:"should_track_hops,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. - // Timeout in seconds for the test. Defaults to `60`. + // (Number) Timeout in seconds for the test. + // Timeout in seconds for the test. Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` // (String) The URL to send the request to. @@ -3072,8 +4699,8 @@ type TestRequestDefinitionParameters struct { // +kubebuilder:validation:Optional Body *string `json:"body,omitempty" tf:"body,omitempty"` - // www-form-urlencoded, graphql. - // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`. + // www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + // Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. // +kubebuilder:validation:Optional BodyType *string `json:"bodyType,omitempty" tf:"body_type,omitempty"` @@ -3092,16 +4719,32 @@ type TestRequestDefinitionParameters struct { // +kubebuilder:validation:Optional DNSServer *string `json:"dnsServer,omitempty" tf:"dns_server,omitempty"` - // (Number) DNS server port to use for DNS tests. + // (String) DNS server port to use for DNS tests. // DNS server port to use for DNS tests. // +kubebuilder:validation:Optional - DNSServerPort *float64 `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + DNSServerPort *string `json:"dnsServerPort,omitempty" tf:"dns_server_port,omitempty"` + + // data. + // Form data to be sent when `body_type` is `multipart/form-data`. + // +kubebuilder:validation:Optional + // +mapType=granular + Form map[string]*string `json:"form,omitempty" tf:"form,omitempty"` + + // (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + // HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead. + // +kubebuilder:validation:Optional + HTTPVersion *string `json:"httpVersion,omitempty" tf:"http_version,omitempty"` // (String) Host name to perform the test with. // Host name to perform the test with. // +kubebuilder:validation:Optional Host *string `json:"host,omitempty" tf:"host,omitempty"` + // encoded. + // Whether the message is base64-encoded. + // +kubebuilder:validation:Optional + IsMessageBase64Encoded *bool `json:"isMessageBase64Encoded,omitempty" tf:"is_message_base64_encoded,omitempty"` + // (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 "". // For UDP and websocket tests, message to send with the request. // +kubebuilder:validation:Optional @@ -3132,10 +4775,10 @@ type TestRequestDefinitionParameters struct { // +kubebuilder:validation:Optional PlainProtoFile *string `json:"plainProtoFile,omitempty" tf:"plain_proto_file,omitempty"` - // (Number) Port to use when performing the test. + // (String) Port to use when performing the test. // Port to use when performing the test. // +kubebuilder:validation:Optional - Port *float64 `json:"port,omitempty" tf:"port,omitempty"` + Port *string `json:"port,omitempty" tf:"port,omitempty"` // (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. // A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. @@ -3157,8 +4800,8 @@ type TestRequestDefinitionParameters struct { // +kubebuilder:validation:Optional ShouldTrackHops *bool `json:"shouldTrackHops,omitempty" tf:"should_track_hops,omitempty"` - // (Number) Timeout in seconds for the test. Defaults to 60. - // Timeout in seconds for the test. Defaults to `60`. + // (Number) Timeout in seconds for the test. + // Timeout in seconds for the test. // +kubebuilder:validation:Optional Timeout *float64 `json:"timeout,omitempty" tf:"timeout,omitempty"` @@ -3168,6 +4811,84 @@ type TestRequestDefinitionParameters struct { URL *string `json:"url,omitempty" tf:"url,omitempty"` } +type TestRequestFileInitParameters struct { + + // (String, Sensitive) Content of the certificate. + // Content of the file. + Content *string `json:"content,omitempty" tf:"content,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the file. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Original name of the file. + // Original name of the file. + OriginalFileName *string `json:"originalFileName,omitempty" tf:"original_file_name,omitempty"` + + // (Number) Size of the file. + // Size of the file. + Size *float64 `json:"size,omitempty" tf:"size,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the file. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type TestRequestFileObservation struct { + + // (String) Bucket key of the file. + // Bucket key of the file. + BucketKey *string `json:"bucketKey,omitempty" tf:"bucket_key,omitempty"` + + // (String, Sensitive) Content of the certificate. + // Content of the file. + Content *string `json:"content,omitempty" tf:"content,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the file. + Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (String) Original name of the file. + // Original name of the file. + OriginalFileName *string `json:"originalFileName,omitempty" tf:"original_file_name,omitempty"` + + // (Number) Size of the file. + // Size of the file. + Size *float64 `json:"size,omitempty" tf:"size,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the file. + Type *string `json:"type,omitempty" tf:"type,omitempty"` +} + +type TestRequestFileParameters struct { + + // (String, Sensitive) Content of the certificate. + // Content of the file. + // +kubebuilder:validation:Optional + Content *string `json:"content,omitempty" tf:"content,omitempty"` + + // (String) Name of Datadog synthetics test. + // Name of the file. + // +kubebuilder:validation:Optional + Name *string `json:"name" tf:"name,omitempty"` + + // (String) Original name of the file. + // Original name of the file. + // +kubebuilder:validation:Optional + OriginalFileName *string `json:"originalFileName,omitempty" tf:"original_file_name,omitempty"` + + // (Number) Size of the file. + // Size of the file. + // +kubebuilder:validation:Optional + Size *float64 `json:"size" tf:"size,omitempty"` + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Type of the file. + // +kubebuilder:validation:Optional + Type *string `json:"type" tf:"type,omitempty"` +} + type TestRequestProxyInitParameters struct { // (Map of String) Header name and value map. @@ -3254,38 +4975,99 @@ type TimeframesParameters struct { To *string `json:"to" tf:"to,omitempty"` } +type UserLocatorInitParameters struct { + + // (Boolean) Defaults to false. + FailTestOnCannotLocate *bool `json:"failTestOnCannotLocate,omitempty" tf:"fail_test_on_cannot_locate,omitempty"` + + // (Block List, Max: 5) (see below for nested schema) + Values []ValuesInitParameters `json:"values,omitempty" tf:"values,omitempty"` +} + +type UserLocatorObservation struct { + + // (Boolean) Defaults to false. + FailTestOnCannotLocate *bool `json:"failTestOnCannotLocate,omitempty" tf:"fail_test_on_cannot_locate,omitempty"` + + // (Block List, Max: 5) (see below for nested schema) + Values []ValuesObservation `json:"values,omitempty" tf:"values,omitempty"` +} + +type UserLocatorParameters struct { + + // (Boolean) Defaults to false. + // +kubebuilder:validation:Optional + FailTestOnCannotLocate *bool `json:"failTestOnCannotLocate,omitempty" tf:"fail_test_on_cannot_locate,omitempty"` + + // (Block List, Max: 5) (see below for nested schema) + // +kubebuilder:validation:Optional + Values []ValuesParameters `json:"values,omitempty" tf:"values,omitempty"` +} + type ValueInitParameters struct { - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Defaults to `"css"`. Type *string `json:"type,omitempty" tf:"type,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. Value *string `json:"value,omitempty" tf:"value,omitempty"` } type ValueObservation struct { - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Defaults to `"css"`. Type *string `json:"type,omitempty" tf:"type,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. Value *string `json:"value,omitempty" tf:"value,omitempty"` } type ValueParameters struct { - // (String) Synthetics test type. Valid values are api, browser. + // (String) Synthetics test type. Valid values are api, browser, mobile. // Defaults to `"css"`. // +kubebuilder:validation:Optional Type *string `json:"type,omitempty" tf:"type,omitempty"` - // (String) Regex or JSON path used for the parser. Not used with type raw. + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. // +kubebuilder:validation:Optional Value *string `json:"value" tf:"value,omitempty"` } +type ValuesInitParameters struct { + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type ValuesObservation struct { + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`. + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + +type ValuesParameters struct { + + // (String) Synthetics test type. Valid values are api, browser, mobile. + // Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`. + // +kubebuilder:validation:Optional + Type *string `json:"type,omitempty" tf:"type,omitempty"` + + // (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + // +kubebuilder:validation:Optional + Value *string `json:"value,omitempty" tf:"value,omitempty"` +} + type VariableInitParameters struct { // (String) Example of the extracted variable. Defaults to "". @@ -3295,6 +5077,10 @@ type VariableInitParameters struct { // (String) Name of Datadog synthetics test. // Name of the extracted variable. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Determines whether or not the extracted value will be obfuscated. + // Whether the value of this variable will be obfuscated in test results. Defaults to `false`. + Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` } type VariableObservation struct { @@ -3306,6 +5092,10 @@ type VariableObservation struct { // (String) Name of Datadog synthetics test. // Name of the extracted variable. Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Determines whether or not the extracted value will be obfuscated. + // Whether the value of this variable will be obfuscated in test results. Defaults to `false`. + Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` } type VariableParameters struct { @@ -3319,6 +5109,11 @@ type VariableParameters struct { // Name of the extracted variable. // +kubebuilder:validation:Optional Name *string `json:"name,omitempty" tf:"name,omitempty"` + + // (Boolean) Determines whether or not the extracted value will be obfuscated. + // Whether the value of this variable will be obfuscated in test results. Defaults to `false`. + // +kubebuilder:validation:Optional + Secure *bool `json:"secure,omitempty" tf:"secure,omitempty"` } // TestSpec defines the desired state of Test @@ -3349,8 +5144,8 @@ type TestStatus struct { // +kubebuilder:storageversion // Test is the Schema for the Tests API. Provides a Datadog synthetics test resource. This can be used to create and manage Datadog synthetics test. -// +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="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].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} diff --git a/apis/zz_register.go b/apis/zz_register.go index d26b91b..21a681a 100755 --- a/apis/zz_register.go +++ b/apis/zz_register.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -14,33 +10,53 @@ package apis import ( "k8s.io/apimachinery/pkg/runtime" - 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" + v1beta1 "github.com/upbound/provider-datadog/apis/access/v1beta1" + v1beta1apm "github.com/upbound/provider-datadog/apis/apm/v1beta1" + v1beta1authentication "github.com/upbound/provider-datadog/apis/authentication/v1beta1" + v1beta1cloud "github.com/upbound/provider-datadog/apis/cloud/v1beta1" + v1beta1dashboard "github.com/upbound/provider-datadog/apis/dashboard/v1beta1" + v1beta1iam "github.com/upbound/provider-datadog/apis/iam/v1beta1" + v1beta1integration "github.com/upbound/provider-datadog/apis/integration/v1beta1" + v1beta1logs "github.com/upbound/provider-datadog/apis/logs/v1beta1" + v1beta1metric "github.com/upbound/provider-datadog/apis/metric/v1beta1" + v1beta1monitor "github.com/upbound/provider-datadog/apis/monitor/v1beta1" + v1beta1notification "github.com/upbound/provider-datadog/apis/notification/v1beta1" + v1beta1organization "github.com/upbound/provider-datadog/apis/organization/v1beta1" + v1beta1rum "github.com/upbound/provider-datadog/apis/rum/v1beta1" + v1beta1security "github.com/upbound/provider-datadog/apis/security/v1beta1" + v1beta1securitymonitoring "github.com/upbound/provider-datadog/apis/securitymonitoring/v1beta1" + v1beta1sensitivedata "github.com/upbound/provider-datadog/apis/sensitivedata/v1beta1" + v1beta1service "github.com/upbound/provider-datadog/apis/service/v1beta1" + v1beta1slo "github.com/upbound/provider-datadog/apis/slo/v1beta1" + v1beta1synthetics "github.com/upbound/provider-datadog/apis/synthetics/v1beta1" + v1alpha1 "github.com/upbound/provider-datadog/apis/v1alpha1" + v1beta1apis "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, + v1beta1apm.SchemeBuilder.AddToScheme, + v1beta1authentication.SchemeBuilder.AddToScheme, + v1beta1cloud.SchemeBuilder.AddToScheme, + v1beta1dashboard.SchemeBuilder.AddToScheme, + v1beta1iam.SchemeBuilder.AddToScheme, + v1beta1integration.SchemeBuilder.AddToScheme, + v1beta1logs.SchemeBuilder.AddToScheme, + v1beta1metric.SchemeBuilder.AddToScheme, + v1beta1monitor.SchemeBuilder.AddToScheme, + v1beta1notification.SchemeBuilder.AddToScheme, + v1beta1organization.SchemeBuilder.AddToScheme, + v1beta1rum.SchemeBuilder.AddToScheme, + v1beta1security.SchemeBuilder.AddToScheme, + v1beta1securitymonitoring.SchemeBuilder.AddToScheme, + v1beta1sensitivedata.SchemeBuilder.AddToScheme, + v1beta1service.SchemeBuilder.AddToScheme, + v1beta1slo.SchemeBuilder.AddToScheme, + v1beta1synthetics.SchemeBuilder.AddToScheme, + v1alpha1.SchemeBuilder.AddToScheme, + v1beta1apis.SchemeBuilder.AddToScheme, ) } diff --git a/cluster/images/provider-datadog/Dockerfile b/cluster/images/provider-datadog/Dockerfile index ed0187d..cfb059c 100644 --- a/cluster/images/provider-datadog/Dockerfile +++ b/cluster/images/provider-datadog/Dockerfile @@ -1,51 +1,14 @@ -FROM alpine:3.17.7 +FROM alpine:3.20.3 RUN apk --no-cache add ca-certificates bash ARG TARGETOS ARG TARGETARCH -ADD "bin/${TARGETOS}_${TARGETARCH}/provider" /usr/local/bin/provider - ENV USER_ID=65532 - -# Setup Terraform environment - -## Provider-dependent configuration -ARG TERRAFORM_VERSION -ARG TERRAFORM_PROVIDER_SOURCE -ARG TERRAFORM_PROVIDER_VERSION -ARG TERRAFORM_PROVIDER_DOWNLOAD_NAME -ARG TERRAFORM_NATIVE_PROVIDER_BINARY -ARG TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX - -## End of - Provider-dependent configuration - -ENV PLUGIN_DIR /terraform/provider-mirror/registry.terraform.io/${TERRAFORM_PROVIDER_SOURCE}/${TERRAFORM_PROVIDER_VERSION}/${TARGETOS}_${TARGETARCH} -ENV TF_CLI_CONFIG_FILE /terraform/.terraformrc -ENV TF_FORK 0 - -RUN mkdir -p ${PLUGIN_DIR} - -ADD https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_${TARGETOS}_${TARGETARCH}.zip /tmp -ADD ${TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX}/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_${TARGETOS}_${TARGETARCH}.zip /tmp -ADD terraformrc.hcl ${TF_CLI_CONFIG_FILE} - -RUN unzip /tmp/terraform_${TERRAFORM_VERSION}_${TARGETOS}_${TARGETARCH}.zip -d /usr/local/bin \ - && chmod +x /usr/local/bin/terraform \ - && rm /tmp/terraform_${TERRAFORM_VERSION}_${TARGETOS}_${TARGETARCH}.zip \ - && unzip /tmp/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_${TARGETOS}_${TARGETARCH}.zip -d ${PLUGIN_DIR} \ - && chmod +x ${PLUGIN_DIR}/* \ - && rm /tmp/${TERRAFORM_PROVIDER_DOWNLOAD_NAME}_${TERRAFORM_PROVIDER_VERSION}_${TARGETOS}_${TARGETARCH}.zip \ - && chown -R ${USER_ID}:${USER_ID} /terraform -# End of - Setup Terraform environment - -# Provider controller needs these environment variable at runtime -ENV TERRAFORM_VERSION ${TERRAFORM_VERSION} -ENV TERRAFORM_PROVIDER_SOURCE ${TERRAFORM_PROVIDER_SOURCE} -ENV TERRAFORM_PROVIDER_VERSION ${TERRAFORM_PROVIDER_VERSION} -ENV TERRAFORM_NATIVE_PROVIDER_PATH ${PLUGIN_DIR}/${TERRAFORM_NATIVE_PROVIDER_BINARY} - USER ${USER_ID} + EXPOSE 8080 +ADD "bin/${TARGETOS}_${TARGETARCH}/provider" /usr/local/bin/provider + ENTRYPOINT ["provider"] diff --git a/cluster/images/provider-datadog/Makefile b/cluster/images/provider-datadog/Makefile index 083bec1..cfe2c3a 100755 --- a/cluster/images/provider-datadog/Makefile +++ b/cluster/images/provider-datadog/Makefile @@ -23,16 +23,9 @@ img.publish: img.build.shared: @cp Dockerfile $(IMAGE_TEMP_DIR) || $(FAIL) - @cp terraformrc.hcl $(IMAGE_TEMP_DIR) || $(FAIL) @cp -r $(OUTPUT_DIR)/bin/ $(IMAGE_TEMP_DIR)/bin || $(FAIL) @docker buildx build $(BUILD_ARGS) \ --platform $(IMAGE_PLATFORMS) \ - --build-arg TERRAFORM_VERSION=$(TERRAFORM_VERSION) \ - --build-arg TERRAFORM_PROVIDER_SOURCE=$(TERRAFORM_PROVIDER_SOURCE) \ - --build-arg TERRAFORM_PROVIDER_VERSION=$(TERRAFORM_PROVIDER_VERSION) \ - --build-arg TERRAFORM_PROVIDER_DOWNLOAD_NAME=$(TERRAFORM_PROVIDER_DOWNLOAD_NAME) \ - --build-arg TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX=$(TERRAFORM_PROVIDER_DOWNLOAD_URL_PREFIX) \ - --build-arg TERRAFORM_NATIVE_PROVIDER_BINARY=$(TERRAFORM_NATIVE_PROVIDER_BINARY) \ -t $(IMAGE) \ $(IMAGE_TEMP_DIR) || $(FAIL) diff --git a/cluster/images/provider-datadog/terraformrc.hcl b/cluster/images/provider-datadog/terraformrc.hcl deleted file mode 100644 index 022203c..0000000 --- a/cluster/images/provider-datadog/terraformrc.hcl +++ /dev/null @@ -1,9 +0,0 @@ -provider_installation { - filesystem_mirror { - path = "/terraform/provider-mirror" - include = ["*/*"] - } - direct { - exclude = ["*/*"] - } -} diff --git a/cmd/generator/main.go b/cmd/generator/main.go index 4760b3d..64326a2 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -10,6 +10,8 @@ import ( "path/filepath" "github.com/crossplane/upjet/pkg/pipeline" + "gopkg.in/alecthomas/kingpin.v2" + "github.com/upbound/provider-datadog/config" ) @@ -22,5 +24,7 @@ func main() { if err != nil { panic(fmt.Sprintf("cannot calculate the absolute path with %s", rootDir)) } - pipeline.Run(config.GetProvider(), absRootDir) + p, err := config.GetProvider(true) + kingpin.FatalIfError(err, "Cannot initialize the provider configuration") + pipeline.Run(p, absRootDir) } diff --git a/cmd/provider/main.go b/cmd/provider/main.go index 40ab5a1..0ee0196 100644 --- a/cmd/provider/main.go +++ b/cmd/provider/main.go @@ -6,24 +6,22 @@ package main import ( "context" + "io" + "log" "os" "path/filepath" "time" xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1" + "github.com/crossplane/crossplane-runtime/pkg/certificates" xpcontroller "github.com/crossplane/crossplane-runtime/pkg/controller" "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/logging" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" - "github.com/crossplane/upjet/pkg/terraform" - "github.com/upbound/provider-datadog/apis" - "github.com/upbound/provider-datadog/apis/v1alpha1" - "github.com/upbound/provider-datadog/config" - "github.com/upbound/provider-datadog/internal/clients" - "github.com/upbound/provider-datadog/internal/controller" - "github.com/upbound/provider-datadog/internal/features" "gopkg.in/alecthomas/kingpin.v2" kerrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,6 +29,14 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/log/zap" + "sigs.k8s.io/controller-runtime/pkg/metrics" + + "github.com/upbound/provider-datadog/apis" + "github.com/upbound/provider-datadog/apis/v1alpha1" + "github.com/upbound/provider-datadog/config" + "github.com/upbound/provider-datadog/internal/clients" + "github.com/upbound/provider-datadog/internal/controller" + "github.com/upbound/provider-datadog/internal/features" ) func main() { @@ -42,19 +48,18 @@ func main() { leaderElection = app.Flag("leader-election", "Use leader election for the controller manager.").Short('l').Default("false").OverrideDefaultFromEnvar("LEADER_ELECTION").Bool() maxReconcileRate = app.Flag("max-reconcile-rate", "The global maximum rate per second at which resources may be checked for drift from the desired state.").Default("10").Int() - terraformVersion = app.Flag("terraform-version", "Terraform version.").Required().Envar("TERRAFORM_VERSION").String() - providerSource = app.Flag("terraform-provider-source", "Terraform provider source.").Required().Envar("TERRAFORM_PROVIDER_SOURCE").String() - providerVersion = app.Flag("terraform-provider-version", "Terraform provider version.").Required().Envar("TERRAFORM_PROVIDER_VERSION").String() - namespace = app.Flag("namespace", "Namespace used to set as default scope in default secret store config.").Default("crossplane-system").Envar("POD_NAMESPACE").String() enableExternalSecretStores = app.Flag("enable-external-secret-stores", "Enable support for ExternalSecretStores.").Default("false").Envar("ENABLE_EXTERNAL_SECRET_STORES").Bool() enableManagementPolicies = app.Flag("enable-management-policies", "Enable support for Management Policies.").Default("true").Envar("ENABLE_MANAGEMENT_POLICIES").Bool() + essTLSCertsPath = app.Flag("ess-tls-cert-dir", "Path of ESS TLS certificates.").Envar("ESS_TLS_CERTS_DIR").String() ) kingpin.MustParse(app.Parse(os.Args[1:])) + log.Default().SetOutput(io.Discard) + ctrl.SetLogger(zap.New(zap.WriteTo(io.Discard))) zl := zap.New(zap.UseDevMode(*debug)) - log := logging.NewLogrLogger(zl.WithName("provider-datadog")) + logr := logging.NewLogrLogger(zl.WithName("provider-datadog")) if *debug { // The controller-runtime runs with a no-op logger by default. It is // *very* verbose even at info level, so we only provide it a real @@ -62,7 +67,10 @@ func main() { ctrl.SetLogger(zl) } - log.Debug("Starting", "sync-period", syncPeriod.String(), "poll-interval", pollInterval.String(), "max-reconcile-rate", *maxReconcileRate) + // currently, we configure the jitter to be the 5% of the poll interval + pollJitter := time.Duration(float64(*pollInterval) * 0.05) + logr.Debug("Starting", "sync-period", syncPeriod.String(), + "poll-interval", pollInterval.String(), "poll-jitter", pollJitter, "max-reconcile-rate", *maxReconcileRate) cfg, err := ctrl.GetConfig() kingpin.FatalIfError(err, "Cannot get API server rest config") @@ -79,27 +87,46 @@ func main() { }) kingpin.FatalIfError(err, "Cannot create controller manager") kingpin.FatalIfError(apis.AddToScheme(mgr.GetScheme()), "Cannot add Datadog APIs to scheme") + + metricRecorder := managed.NewMRMetricRecorder() + stateMetrics := statemetrics.NewMRStateMetrics() + + metrics.Registry.MustRegister(metricRecorder) + metrics.Registry.MustRegister(stateMetrics) + + provider, err := config.GetProvider(false) + kingpin.FatalIfError(err, "Cannot initialize the provider configuration") o := tjcontroller.Options{ Options: xpcontroller.Options{ - Logger: log, + Logger: logr, GlobalRateLimiter: ratelimiter.NewGlobal(*maxReconcileRate), PollInterval: *pollInterval, MaxConcurrentReconciles: *maxReconcileRate, Features: &feature.Flags{}, }, - Provider: config.GetProvider(), - // use the following WorkspaceStoreOption to enable the shared gRPC mode - // terraform.WithProviderRunner(terraform.NewSharedProvider(log, os.Getenv("TERRAFORM_NATIVE_PROVIDER_PATH"), terraform.WithNativeProviderArgs("-debuggable"))) - WorkspaceStore: terraform.NewWorkspaceStore(log), - SetupFn: clients.TerraformSetupBuilder(*terraformVersion, *providerSource, *providerVersion), + Provider: provider, + SetupFn: clients.TerraformSetupBuilder(provider.TerraformProvider, provider.TerraformPluginFrameworkProvider), + PollJitter: pollJitter, + OperationTrackerStore: tjcontroller.NewOperationStore(logr), } + ctx := context.Background() if *enableExternalSecretStores { + o.Features.Enable(features.EnableAlphaExternalSecretStores) o.SecretStoreConfigGVK = &v1alpha1.StoreConfigGroupVersionKind - log.Info("Alpha feature enabled", "flag", features.EnableAlphaExternalSecretStores) + logr.Info("Alpha feature enabled", "flag", features.EnableAlphaExternalSecretStores) + + o.ESSOptions = &tjcontroller.ESSOptions{} + if *essTLSCertsPath != "" { + logr.Info("ESS TLS certificates path is set. Loading mTLS configuration.") + tCfg, err := certificates.LoadMTLSConfig(filepath.Join(*essTLSCertsPath, "ca.crt"), filepath.Join(*essTLSCertsPath, "tls.crt"), filepath.Join(*essTLSCertsPath, "tls.key"), false) + kingpin.FatalIfError(err, "Cannot load ESS TLS config.") + + o.ESSOptions.TLSConfig = tCfg + } // Ensure default store config exists. - kingpin.FatalIfError(resource.Ignore(kerrors.IsAlreadyExists, mgr.GetClient().Create(context.Background(), &v1alpha1.StoreConfig{ + kingpin.FatalIfError(resource.Ignore(kerrors.IsAlreadyExists, mgr.GetClient().Create(ctx, &v1alpha1.StoreConfig{ ObjectMeta: metav1.ObjectMeta{ Name: "default", }, @@ -115,7 +142,7 @@ func main() { if *enableManagementPolicies { o.Features.Enable(features.EnableBetaManagementPolicies) - log.Info("Beta feature enabled", "flag", features.EnableBetaManagementPolicies) + logr.Info("Beta feature enabled", "flag", features.EnableBetaManagementPolicies) } kingpin.FatalIfError(controller.Setup(mgr, o), "Cannot setup Datadog controllers") diff --git a/config/api/config.go b/config/api/config.go deleted file mode 100644 index 0aac458..0000000 --- a/config/api/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package api - -import "github.com/crossplane/upjet/pkg/config" - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_api_key", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "APIKey" - r.ShortGroup = "datadog" - }) -} diff --git a/config/apm/config.go b/config/apm/config.go index 766343a..ed5336b 100644 --- a/config/apm/config.go +++ b/config/apm/config.go @@ -7,16 +7,12 @@ import ( // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { p.AddResourceConfigurator("datadog_apm_retention_filter", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "RetentionFilter" - r.ShortGroup = "apm.datadog" + r.RemoveSingletonListConversion("filter") r.SchemaElementOptions.SetEmbeddedObject("filter") }) p.AddResourceConfigurator("datadog_apm_retention_filter_order", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "RetentionFilterOrder" - r.ShortGroup = "apm.datadog" + r.References["filter_ids"] = config.Reference{ + TerraformName: "datadog_apm_retention_filter", + } }) } diff --git a/config/application/config.go b/config/application/config.go deleted file mode 100644 index c832f9a..0000000 --- a/config/application/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package application - -import "github.com/crossplane/upjet/pkg/config" - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_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 = "AppKey" - r.ShortGroup = "datadog" - }) -} diff --git a/config/authentication/config.go b/config/authentication/config.go new file mode 100644 index 0000000..40af8e7 --- /dev/null +++ b/config/authentication/config.go @@ -0,0 +1,14 @@ +package authentication + +import ( + "github.com/crossplane/upjet/pkg/config" +) + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_authn_mapping", func(r *config.Resource) { + r.References["role"] = config.Reference{ + TerraformName: "datadog_role", + } + }) +} diff --git a/config/authn/config.go b/config/authn/config.go deleted file mode 100644 index b26ba67..0000000 --- a/config/authn/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package authn - -import "github.com/crossplane/upjet/pkg/config" - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_authn_mapping", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "AuthnMapping" - r.ShortGroup = "datadog" - }) -} diff --git a/config/child/config.go b/config/child/config.go deleted file mode 100644 index 851758a..0000000 --- a/config/child/config.go +++ /dev/null @@ -1,14 +0,0 @@ -package child - -import "github.com/crossplane/upjet/pkg/config" - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_child_organization", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ExternalName = config.IdentifierFromProvider - r.Kind = "ChildOrganization" - r.ShortGroup = "datadog" - }) -} diff --git a/config/cloud/config.go b/config/cloud/config.go deleted file mode 100644 index 3c629f7..0000000 --- a/config/cloud/config.go +++ /dev/null @@ -1,17 +0,0 @@ -package cloud - -import "github.com/crossplane/upjet/pkg/config" - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_cloud_configuration_rule", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = "cloud.datadog" - }) - p.AddResourceConfigurator("datadog_cloud_workload_security_agent_rule", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = "cloud.datadog" - }) -} diff --git a/config/dashboard/config.go b/config/dashboard/config.go index 6d00451..b7094fd 100644 --- a/config/dashboard/config.go +++ b/config/dashboard/config.go @@ -9,11 +9,6 @@ import ( // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { p.AddResourceConfigurator("datadog_dashboard", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "Dashboard" - r.ShortGroup = "datadog" - delete(r.TerraformResource.Schema, "widget") desc, _ := comments.New("JSON widget to add to a dashboard", @@ -24,16 +19,15 @@ func Configure(p *config.Provider) { Description: desc.String(), } }) - p.AddResourceConfigurator("datadog_dashboard_json", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "DashboardJSON" - r.ShortGroup = "datadog" - }) - p.AddResourceConfigurator("datadog_dashboard_list", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "DashboardList" - r.ShortGroup = "datadog" + p.AddResourceConfigurator("datadog_powerpack", func(r *config.Resource) { + delete(r.TerraformResource.Schema, "widget") + + desc, _ := comments.New("(String) The JSON formatted definition of the list of widgets to display in the powerpack.", + comments.WithTFTag("-")) + r.TerraformResource.Schema["widget"] = &schema.Schema{ + Type: schema.TypeString, + Optional: true, + Description: desc.String(), + } }) } diff --git a/config/downtime/config.go b/config/downtime/config.go deleted file mode 100644 index 98ca824..0000000 --- a/config/downtime/config.go +++ /dev/null @@ -1,23 +0,0 @@ -package downtime - -import ( - "github.com/crossplane/upjet/pkg/config" -) - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_downtime", 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_downtime_schedule", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "DowntimeSchedule" - r.ShortGroup = "datadog" - r.SchemaElementOptions.SetEmbeddedObject("monitor_identifier") - r.SchemaElementOptions.SetEmbeddedObject("one_time_schedule") - r.SchemaElementOptions.SetEmbeddedObject("recurring_schedule") - }) -} diff --git a/config/external_name.go b/config/external_name.go index d084729..83bc481 100644 --- a/config/external_name.go +++ b/config/external_name.go @@ -11,49 +11,28 @@ import ( "github.com/google/uuid" ) -// ExternalNameConfigs contains all external name configurations for this -// provider. -var ExternalNameConfigs = map[string]config.ExternalName{ - // Import requires using a randomly generated ID from provider: nl-2e21sda - "datadog_api_key": datadogExternalNameWithInjectedID(), - "datadog_apm_retention_filter": config.IdentifierFromProvider, - "datadog_apm_retention_filter_order": config.IdentifierFromProvider, - "datadog_application_key": datadogExternalNameWithInjectedID(), - "datadog_authn_mapping": config.IdentifierFromProvider, - "datadog_child_organization": config.IdentifierFromProvider, - "datadog_cloud_configuration_rule": config.IdentifierFromProvider, - "datadog_cloud_workload_security_agent_rule": config.IdentifierFromProvider, - // "datadog_dashboard": config.IdentifierFromProvider, +var terraformPluginSDKExternalNameConfigs = map[string]config.ExternalName{ + "datadog_authn_mapping": config.IdentifierFromProvider, + "datadog_child_organization": config.IdentifierFromProvider, + "datadog_cloud_configuration_rule": config.IdentifierFromProvider, "datadog_dashboard_json": config.IdentifierFromProvider, - "datadog_dashboard_list": datadogExternalNameWithInjectedID(), "datadog_downtime": config.IdentifierFromProvider, - "datadog_downtime_schedule": datadogExternalNameWithInjectedUUID(), "datadog_integration_aws": config.IdentifierFromProvider, - "datadog_integration_aws_event_bridge": config.IdentifierFromProvider, "datadog_integration_aws_lambda_arn": config.IdentifierFromProvider, "datadog_integration_aws_log_collection": config.IdentifierFromProvider, "datadog_integration_aws_tag_filter": config.IdentifierFromProvider, - "datadog_integration_azure": config.IdentifierFromProvider, - "datadog_integration_cloudflare_account": config.IdentifierFromProvider, - "datadog_integration_confluent_account": config.IdentifierFromProvider, - "datadog_integration_confluent_resource": config.IdentifierFromProvider, - "datadog_integration_fastly_account": config.IdentifierFromProvider, - "datadog_integration_fastly_service": config.IdentifierFromProvider, - "datadog_integration_gcp": config.IdentifierFromProvider, - "datadog_integration_gcp_sts": config.IdentifierFromProvider, "datadog_integration_opsgenie_service_object": config.IdentifierFromProvider, "datadog_integration_pagerduty": config.IdentifierFromProvider, "datadog_integration_pagerduty_service_object": config.IdentifierFromProvider, "datadog_integration_slack_channel": config.IdentifierFromProvider, - "datadog_ip_allowlist": config.IdentifierFromProvider, "datadog_logs_archive": config.IdentifierFromProvider, "datadog_logs_archive_order": config.IdentifierFromProvider, "datadog_logs_custom_pipeline": config.IdentifierFromProvider, - "datadog_logs_index": config.IdentifierFromProvider, - "datadog_logs_index_order": config.IdentifierFromProvider, + "datadog_logs_index": config.NameAsIdentifier, + "datadog_logs_index_order": config.NameAsIdentifier, "datadog_logs_integration_pipeline": config.IdentifierFromProvider, "datadog_logs_metric": config.IdentifierFromProvider, - "datadog_logs_pipeline_order": config.IdentifierFromProvider, + "datadog_logs_pipeline_order": config.NameAsIdentifier, "datadog_metric_metadata": config.IdentifierFromProvider, "datadog_metric_tag_configuration": config.IdentifierFromProvider, "datadog_monitor": config.IdentifierFromProvider, @@ -61,32 +40,75 @@ var ExternalNameConfigs = map[string]config.ExternalName{ "datadog_monitor_json": config.IdentifierFromProvider, "datadog_organization_settings": config.IdentifierFromProvider, "datadog_powerpack": config.IdentifierFromProvider, - "datadog_restriction_policy": config.IdentifierFromProvider, "datadog_role": config.IdentifierFromProvider, - "datadog_rum_application": datadogExternalNameWithInjectedID(), "datadog_security_monitoring_default_rule": config.IdentifierFromProvider, - "datadog_security_monitoring_filter": config.IdentifierFromProvider, "datadog_security_monitoring_rule": config.IdentifierFromProvider, + "datadog_security_monitoring_filter": config.IdentifierFromProvider, "datadog_sensitive_data_scanner_group": config.IdentifierFromProvider, - "datadog_sensitive_data_scanner_group_order": config.IdentifierFromProvider, "datadog_sensitive_data_scanner_rule": config.IdentifierFromProvider, - "datadog_service_account": config.IdentifierFromProvider, - "datadog_service_account_application_key": config.IdentifierFromProvider, "datadog_service_definition_yaml": config.IdentifierFromProvider, "datadog_service_level_objective": config.IdentifierFromProvider, "datadog_slo_correction": config.IdentifierFromProvider, - "datadog_spans_metric": datadogExternalNameWithInjectedID(), - "datadog_synthetics_concurrency_cap": config.IdentifierFromProvider, - "datadog_synthetics_global_variable": config.IdentifierFromProvider, - "datadog_synthetics_private_location": config.IdentifierFromProvider, "datadog_synthetics_test": config.IdentifierFromProvider, - "datadog_team": datadogExternalNameWithInjectedID(), - "datadog_team_link": datadogExternalNameWithInjectedID(), - "datadog_team_membership": config.IdentifierFromProvider, - "datadog_team_permission_setting": datadogExternalNameWithInjectedID(), "datadog_user": datadogExternalNameWithInjectedID(), - "datadog_webhook": config.IdentifierFromProvider, - "datadog_webhook_custom_variable": config.IdentifierFromProvider, +} + +var terraformPluginFrameworkExternalNameConfigs = map[string]config.ExternalName{ + "datadog_api_key": datadogExternalNameWithInjectedID(), + "datadog_apm_retention_filter": datadogExternalNameWithInjectedID(), + "datadog_apm_retention_filter_order": config.IdentifierFromProvider, + "datadog_application_key": datadogExternalNameWithInjectedID(), + "datadog_dashboard_list": datadogExternalNameWithInjectedID(), + "datadog_downtime_schedule": datadogExternalNameWithInjectedUUID(), + "datadog_integration_aws_event_bridge": config.IdentifierFromProvider, + "datadog_integration_azure": config.IdentifierFromProvider, + "datadog_integration_cloudflare_account": config.IdentifierFromProvider, + "datadog_integration_confluent_account": config.IdentifierFromProvider, + "datadog_integration_confluent_resource": config.IdentifierFromProvider, + "datadog_integration_fastly_account": config.IdentifierFromProvider, + "datadog_integration_fastly_service": config.IdentifierFromProvider, + "datadog_integration_gcp": config.IdentifierFromProvider, + "datadog_integration_gcp_sts": config.IdentifierFromProvider, + "datadog_ip_allowlist": config.IdentifierFromProvider, + "datadog_restriction_policy": config.IdentifierFromProvider, + "datadog_rum_application": datadogExternalNameWithInjectedID(), + "datadog_sensitive_data_scanner_group_order": config.IdentifierFromProvider, + "datadog_service_account_application_key": datadogExternalNameWithInjectedUUID(), + "datadog_service_account": datadogExternalNameWithInjectedID(), + "datadog_spans_metric": datadogExternalNameWithInjectedID(), + "datadog_synthetics_concurrency_cap": config.IdentifierFromProvider, + "datadog_synthetics_global_variable": datadogExternalNameWithInjectedID(), + "datadog_synthetics_private_location": datadogExternalNameWithInjectedID(), + "datadog_team": datadogExternalNameWithInjectedID(), + "datadog_team_link": datadogExternalNameWithInjectedID(), + "datadog_team_membership": config.IdentifierFromProvider, + "datadog_team_permission_setting": config.TemplatedStringAsIdentifier("", "TeamPermission-{{ .parameters.team_id }}-{{ .parameters.action }}"), + "datadog_webhook": config.IdentifierFromProvider, + "datadog_webhook_custom_variable": config.IdentifierFromProvider, +} + +// ExternalNameConfigs contains all external name configurations for this +// provider. +var cliReconciledExternalNameConfigs = map[string]config.ExternalName{} + +func ResourceConfigurator() config.ResourceOption { + return func(r *config.Resource) { + // If an external name is configured for multiple architectures, + // Terraform Plugin Framework takes precedence over Terraform + // Plugin SDKv2, which takes precedence over CLI architecture. + e, configured := terraformPluginFrameworkExternalNameConfigs[r.Name] + if !configured { + e, configured = terraformPluginSDKExternalNameConfigs[r.Name] + if !configured { + e, configured = cliReconciledExternalNameConfigs[r.Name] + } + } + if !configured { + return + } + r.Version = "v1beta1" + r.ExternalName = e + } } // datadogExternalNameWithInjectedID injects an id when there is none. @@ -120,27 +142,3 @@ func datadogExternalNameWithInjectedUUID() config.ExternalName { } return e } - -// ExternalNameConfigurations applies all external name configs listed in the -// table ExternalNameConfigs and sets the version of those resources to v1beta1 -// assuming they will be tested. -func ExternalNameConfigurations() config.ResourceOption { - return func(r *config.Resource) { - if e, ok := ExternalNameConfigs[r.Name]; ok { - r.ExternalName = e - } - } -} - -// ExternalNameConfigured returns the list of all resources whose external name -// is configured manually. -func ExternalNameConfigured() []string { - l := make([]string, len(ExternalNameConfigs)) - i := 0 - for name := range ExternalNameConfigs { - // $ is added to match the exact string since the format is regex. - l[i] = name + "$" - i++ - } - return l -} diff --git a/config/groups.go b/config/groups.go new file mode 100644 index 0000000..4ac1336 --- /dev/null +++ b/config/groups.go @@ -0,0 +1,66 @@ +package config + +import ( + "strings" + + "github.com/crossplane/upjet/pkg/config" + "github.com/crossplane/upjet/pkg/types/name" +) + +// GroupKindOverrides overrides the group and kind of the resource if it matches +// any entry in the GroupMap. +func GroupKindOverrides() config.ResourceOption { + return func(r *config.Resource) { + if f, ok := GroupMap[r.Name]; ok { + r.ShortGroup, r.Kind = f(r.Name) + } + } +} + +// GroupKindCalculator returns the correct group and kind name for given TF +// resource. +type GroupKindCalculator func(resource string) (string, string) + +// ReplaceGroupWords uses given group as the group of the resource and removes +// a number of words in resource name before calculating the kind of the resource. +func ReplaceGroupWords(group string, count int) GroupKindCalculator { + return func(resource string) (string, string) { + words := strings.Split(strings.TrimPrefix(resource, "datadog_"), "_") + snakeKind := strings.Join(words[count:], "_") + return group, name.NewFromSnake(snakeKind).Camel + } +} + +var GroupMap = map[string]GroupKindCalculator{ + "datadog_api_key": ReplaceGroupWords("access", 0), + "datadog_application_key": ReplaceGroupWords("access", 0), + "datadog_authn_mapping": ReplaceGroupWords("authentication", 0), + "datadog_dashboard": ReplaceGroupWords("dashboard", 0), + "datadog_dashboard_json": ReplaceGroupWords("dashboard", 0), + "datadog_dashboard_list": ReplaceGroupWords("dashboard", 0), + "datadog_powerpack": ReplaceGroupWords("dashboard", 0), + "datadog_restriction_policy": ReplaceGroupWords("iam", 0), + "datadog_role": ReplaceGroupWords("iam", 0), + "datadog_user": ReplaceGroupWords("iam", 0), + "datadog_service_account": ReplaceGroupWords("iam", 0), + "datadog_service_account_application_key": ReplaceGroupWords("iam", 0), + "datadog_team": ReplaceGroupWords("iam", 0), + "datadog_team_link": ReplaceGroupWords("iam", 0), + "datadog_team_membership": ReplaceGroupWords("iam", 0), + "datadog_team_permission_setting": ReplaceGroupWords("iam", 0), + "datadog_spans_metric": ReplaceGroupWords("metric", 0), + "datadog_monitor": ReplaceGroupWords("monitor", 0), + "datadog_monitor_json": ReplaceGroupWords("monitor", 0), + "datadog_downtime": ReplaceGroupWords("monitor", 0), + "datadog_downtime_schedule": ReplaceGroupWords("monitor", 0), + "datadog_webhook": ReplaceGroupWords("notification", 0), + "datadog_webhook_custom_variable": ReplaceGroupWords("notification", 0), + "datadog_child_organization": ReplaceGroupWords("organization", 0), + "datadog_security_monitoring_default_rule": ReplaceGroupWords("securitymonitoring", 2), + "datadog_security_monitoring_filter": ReplaceGroupWords("securitymonitoring", 2), + "datadog_security_monitoring_rule": ReplaceGroupWords("securitymonitoring", 2), + "datadog_sensitive_data_scanner_group": ReplaceGroupWords("sensitivedata", 2), + "datadog_sensitive_data_scanner_group_order": ReplaceGroupWords("sensitivedata", 2), + "datadog_sensitive_data_scanner_rule": ReplaceGroupWords("sensitivedata", 2), + "datadog_service_level_objective": ReplaceGroupWords("slo", 0), +} diff --git a/config/iam/config.go b/config/iam/config.go new file mode 100644 index 0000000..e53b7d9 --- /dev/null +++ b/config/iam/config.go @@ -0,0 +1,42 @@ +package iam + +import ( + "github.com/crossplane/upjet/pkg/config" +) + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_service_account", func(r *config.Resource) { + r.References["roles"] = config.Reference{ + TerraformName: "datadog_role", + } + }) + p.AddResourceConfigurator("datadog_service_account_application_key", func(r *config.Resource) { + r.References["service_account_id"] = config.Reference{ + TerraformName: "datadog_service_account", + } + }) + p.AddResourceConfigurator("datadog_team_link", func(r *config.Resource) { + r.References["team_id"] = config.Reference{ + TerraformName: "datadog_team", + } + }) + p.AddResourceConfigurator("datadog_team_membership", func(r *config.Resource) { + r.References["team_id"] = config.Reference{ + TerraformName: "datadog_team", + } + r.References["user_id"] = config.Reference{ + TerraformName: "datadog_user", + } + }) + p.AddResourceConfigurator("datadog_team_permission_setting", func(r *config.Resource) { + r.References["team_id"] = config.Reference{ + TerraformName: "datadog_team", + } + }) + p.AddResourceConfigurator("datadog_user", func(r *config.Resource) { + r.References["roles"] = config.Reference{ + TerraformName: "datadog_role", + } + }) +} diff --git a/config/integration/config.go b/config/integration/config.go index 11ab9b3..3f93a82 100644 --- a/config/integration/config.go +++ b/config/integration/config.go @@ -1,111 +1,19 @@ package integration -import "github.com/crossplane/upjet/pkg/config" - -const integrationDatadog = "integration.datadog" +import ( + "github.com/crossplane/upjet/pkg/config" +) // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_integration_aws", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "AWS" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_aws_event_bridge", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "AWSEventBridge" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_aws_lambda_arn", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "AWSLambdaARN" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_aws_log_collection", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "AWSLogCollection" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_aws_tag_filter", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "AWSTagFilter" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_azure", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "Azure" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_cloudflare_account", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "CloudflareAccount" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_confluent_account", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "ConfluentAccount" - r.ShortGroup = integrationDatadog - }) p.AddResourceConfigurator("datadog_integration_confluent_resource", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "ConfluentResource" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_fastly_account", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "FastlyAccount" - r.ShortGroup = integrationDatadog + r.References["account_id"] = config.Reference{ + TerraformName: "datadog_integration_confluent_account", + } }) p.AddResourceConfigurator("datadog_integration_fastly_service", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "FastlyService" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_gcp", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "GCP" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_gcp_sts", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "GCPSTS" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_opsgenie_service_object", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "OpsgenieServiceObject" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_pagerduty", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "Pagerduty" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_pagerduty_service_object", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "PagerdutyServiceObject" - r.ShortGroup = integrationDatadog - }) - p.AddResourceConfigurator("datadog_integration_slack_channel", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "SlackChannel" - r.ShortGroup = integrationDatadog + r.References["account_id"] = config.Reference{ + TerraformName: "datadog_integration_fastly_account", + } }) } diff --git a/config/logs/config.go b/config/logs/config.go index 7daa7ca..9068ddb 100644 --- a/config/logs/config.go +++ b/config/logs/config.go @@ -1,49 +1,19 @@ package logs -import "github.com/crossplane/upjet/pkg/config" - -const logsDatadog = "logs.datadog" +import ( + "github.com/crossplane/upjet/pkg/config" +) // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_logs_archive", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog - }) p.AddResourceConfigurator("datadog_logs_archive_order", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog - }) - p.AddResourceConfigurator("datadog_logs_custom_pipeline", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog - }) - p.AddResourceConfigurator("datadog_logs_index", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog + r.References["archive_ids"] = config.Reference{ + TerraformName: "datadog_logs_archive", + } }) p.AddResourceConfigurator("datadog_logs_index_order", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog - }) - p.AddResourceConfigurator("datadog_logs_integration_pipeline", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog - }) - p.AddResourceConfigurator("datadog_logs_metric", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog - }) - p.AddResourceConfigurator("datadog_logs_pipeline_order", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = logsDatadog + r.References["indexes"] = config.Reference{ + TerraformName: "datadog_logs_index", + } }) } diff --git a/config/metric/config.go b/config/metric/config.go index be1666b..ea9bd1a 100644 --- a/config/metric/config.go +++ b/config/metric/config.go @@ -4,14 +4,10 @@ import "github.com/crossplane/upjet/pkg/config" // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_metric_metadata", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = "metric.datadog" - }) - p.AddResourceConfigurator("datadog_metric_tag_configuration", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = "metric.datadog" + p.AddResourceConfigurator("datadog_spans_metric", func(r *config.Resource) { + r.RemoveSingletonListConversion("compute") + r.RemoveSingletonListConversion("filter") + r.SchemaElementOptions.SetEmbeddedObject("compute") + r.SchemaElementOptions.SetEmbeddedObject("filter") }) } diff --git a/config/monitor/config.go b/config/monitor/config.go index 2779468..af2b8cb 100644 --- a/config/monitor/config.go +++ b/config/monitor/config.go @@ -4,22 +4,18 @@ import "github.com/crossplane/upjet/pkg/config" // Configure configures individual resources by adding custom ResourceConfigurators. func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_monitor", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "Monitor" - r.ShortGroup = "datadog" + p.AddResourceConfigurator("datadog_downtime_schedule", func(r *config.Resource) { + r.RemoveSingletonListConversion("monitor_identifier") + r.RemoveSingletonListConversion("one_time_schedule") + r.RemoveSingletonListConversion("recurring_schedule") + r.SchemaElementOptions.SetEmbeddedObject("monitor_identifier") + r.SchemaElementOptions.SetEmbeddedObject("one_time_schedule") + r.SchemaElementOptions.SetEmbeddedObject("recurring_schedule") }) - p.AddResourceConfigurator("datadog_monitor_config_policy", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "MonitorConfigPolicy" - r.ShortGroup = "datadog" - }) - p.AddResourceConfigurator("datadog_monitor_json", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "MonitorJSON" - r.ShortGroup = "datadog" + + p.AddResourceConfigurator("datadog_downtime", func(r *config.Resource) { + r.References["monitor_id"] = config.Reference{ + TerraformName: "datadog_monitor", + } }) } diff --git a/config/organization/config.go b/config/organization/config.go deleted file mode 100644 index 3fc4631..0000000 --- a/config/organization/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package organization - -import "github.com/crossplane/upjet/pkg/config" - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_organization_settings", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.Kind = "OrganizationSettings" - r.ShortGroup = "datadog" - }) -} diff --git a/config/powerpack/config.go b/config/powerpack/config.go deleted file mode 100644 index 5007725..0000000 --- a/config/powerpack/config.go +++ /dev/null @@ -1,28 +0,0 @@ -package powerpack - -import ( - "github.com/crossplane/upjet/pkg/config" - "github.com/crossplane/upjet/pkg/types/comments" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -// Configure configures individual resources by adding custom ResourceConfigurators. -func Configure(p *config.Provider) { - p.AddResourceConfigurator("datadog_powerpack", func(r *config.Resource) { - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ExternalName = config.IdentifierFromProvider - r.Kind = "Powerpack" - r.ShortGroup = "datadog" - - delete(r.TerraformResource.Schema, "widget") - - desc, _ := comments.New("(String) The JSON formatted definition of the list of widgets to display in the powerpack.", - comments.WithTFTag("-")) - r.TerraformResource.Schema["widget"] = &schema.Schema{ - Type: schema.TypeString, - Optional: true, - Description: desc.String(), - } - }) -} diff --git a/config/provider-metadata.yaml b/config/provider-metadata.yaml index cb43634..3b388c6 100644 --- a/config/provider-metadata.yaml +++ b/config/provider-metadata.yaml @@ -1,8 +1,105 @@ name: DataDog/datadog resources: + datadog_action_connection: + subCategory: "" + description: A connection that can be used in Actions, including in the Workflow Automation and App Builder products. + name: datadog_action_connection + title: datadog_action_connection Resource - terraform-provider-datadog + examples: + - name: aws_connection + manifest: |- + { + "aws": [ + { + "assume_role": [ + { + "account_id": "123456789012", + "role": "role2" + } + ] + } + ], + "name": "My AWS Connection" + } + - name: http_connection + manifest: |- + { + "http": [ + { + "base_url": "https://catfact.ninja", + "token_auth": [ + { + "body": [ + { + "content": "${jsonencode({\n key = \"mykey\"\n value = \"maybe with a secret: {{ token2 }}\"\n })}", + "content_type": "application/json" + } + ], + "header": [ + { + "name": "header-one", + "value": "headerval" + }, + { + "name": "h2", + "value": "{{ token1 }} test" + } + ], + "token": [ + { + "name": "token1", + "type": "SECRET", + "value": "${var.token1}" + }, + { + "name": "token2", + "type": "SECRET", + "value": "${var.token2}" + } + ], + "url_parameter": [ + { + "name": "param1", + "value": "{{ token1 }}" + }, + { + "name": "param2", + "value": "paramVal2" + } + ] + } + ] + } + ], + "name": "My HTTP connection with token auth" + } + references: + http.token_auth.token.value: var.token2 + argumentDocs: + account_id: (String) AWS account that the connection is created for. String length must be at least 1. + assume_role: (Block, Optional) Configuration for an assume role AWS connection (see below for nested schema) + aws: (Block, Optional) Configuration for an AWS connection (see below for nested schema) + base_url: (String) Base HTTP url for the integration. String length must be at least 1. + body: (Block, Optional) Body for HTTP authentication (see below for nested schema) + content: (String) Serialized body content. String length must be at least 1. + content_type: (String) Content type of the body. String length must be at least 1. + external_id: (String) External ID that specifies which connection can be used to assume the role + header: (Block List) Header for HTTP authentication (see below for nested schema) + http: (Block, Optional) Configuration for an HTTP connection (see below for nested schema) + id: (String) The ID of this resource. + name: (String) Name of the connection + principal_id: (String) AWS account that will assume the role + role: (String) Role to assume. String length must be at least 1. + token: (Block List) Token for HTTP authentication (see below for nested schema) + token_auth: (Block, Optional) Configuration for an HTTP connection that uses token auth (see below for nested schema) + type: (String) Token type Valid values are SECRET. + url_parameter: (Block List) URL parameter for HTTP authentication (see below for nested schema) + value: (String) String length must be at least 1. + importStatements: + - terraform import datadog_action_connection.my_connection 11111111-2222-3333-4444-555555555555 datadog_api_key: subCategory: "" - description: Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys. + description: Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys. Import functionality for this resource is deprecated and will be removed in a future release with prior notice. Securely store your API keys using a secret management system or use this resource to create and manage new API keys. name: datadog_api_key title: datadog_api_key Resource - terraform-provider-datadog examples: @@ -15,6 +112,7 @@ resources: id: (String) The ID of this resource. key: (String, Sensitive) The value of the API Key. name: (String) Name for API Key. + remote_config_read_enabled: (Boolean) Whether the API key is used for remote config. Set to true only if remote config is enabled in /organization-settings/remote-config. importStatements: - terraform import datadog_api_key.foo 11111111-2222-3333-4444-555555555555 datadog_apm_retention_filter: @@ -29,7 +127,7 @@ resources: "enabled": false, "filter": [ { - "query": "*" + "query": "service:sample AND env:production AND @http.method:GET AND app:sampleapp AND @http.status_code:200 AND @duration:\u003e600000000" } ], "filter_type": "spans-sampling-processor", @@ -42,8 +140,9 @@ resources: filter_type: (String) The type of the retention filter, currently only spans-processing-sampling is available. Valid values are spans-sampling-processor. id: (String) The ID of this resource. name: (String) The name of the retention filter. - query: (String) The search query - following the span search syntax. Defaults to "*". - rate: (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. + query: (String) The search query - follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + rate: (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. Value must be between 0.00 and 1.00. + trace_rate: (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. importStatements: - "# Import existing APM retention filter \nterraform import datadog_apm_retention_filter.foo " datadog_apm_retention_filter_order: @@ -59,6 +158,8 @@ resources: "${datadog_apm_retention_filter.foo.id}" ] } + references: + filter_ids: datadog_apm_retention_filter.foo.id dependencies: datadog_apm_retention_filter.foo: |- { @@ -80,9 +181,50 @@ resources: # 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_app_builder_app: + subCategory: "" + description: Provides a Datadog App resource for creating and managing Datadog Apps from App Builder using the JSON definition. To easily export an App for use with Terraform, use the export button in the Datadog App Builder UI. + name: datadog_app_builder_app + title: datadog_app_builder_app Resource - terraform-provider-datadog + examples: + - name: example_app_from_file + manifest: |- + { + "action_query_names_to_connection_ids": { + "listTeams0": "${var.connection_id}" + }, + "app_json": "${file(\"${path.module}/resource.json\")}" + } + - name: example_app_inline_optional + manifest: |- + { + "action_query_names_to_connection_ids": { + "listTeams0": "${var.connection_id}" + }, + "app_json": "${jsonencode(\n {\n \"queries\" : [\n {\n \"id\" : \"11111111-1111-1111-1111-111111111111\",\n \"type\" : \"action\",\n \"name\" : \"listTeams0\",\n \"events\" : [],\n \"properties\" : {\n \"spec\" : {\n \"fqn\" : \"com.datadoghq.dd.teams.listTeams\",\n \"connectionId\" : \"11111111-1111-1111-1111-111111111111\",\n \"inputs\" : {}\n }\n }\n }\n ],\n \"id\" : \"11111111-2222-3333-4444-555555555555\",\n \"components\" : [\n {\n \"events\" : [],\n \"name\" : \"grid0\",\n \"properties\" : {\n \"children\" : []\n },\n \"type\" : \"grid\"\n }\n ],\n \"description\" : \"This description will be overridden\",\n \"favorite\" : false,\n \"name\" : \"This name will be overridden\",\n \"rootInstanceName\" : \"This rootInstanceName will be overridden\",\n \"selfService\" : false,\n \"tags\" : [],\n \"connections\" : [\n {\n \"id\" : \"11111111-1111-1111-1111-111111111111\",\n \"name\" : \"A connection that will be overridden\"\n }\n ],\n \"deployment\" : {\n \"id\" : \"11111111-1111-1111-1111-111111111111\",\n \"app_version_id\" : \"00000000-0000-0000-0000-000000000000\"\n }\n }\n )}", + "description": "Created using the Datadog provider in Terraform.", + "name": "Example Terraform App - Inline - Optional", + "published": false, + "root_instance_name": "grid0" + } + - name: example_app_escaped_interpolated + manifest: |- + { + "app_json": "${jsonencode(\n {\n \"queries\" : [\n {\n \"id\" : \"11111111-1111-1111-1111-111111111111\",\n \"name\" : \"listTeams0\",\n \"type\" : \"action\",\n \"properties\" : {\n \"onlyTriggerManually\" : false,\n \"outputs\" : \"$${((outputs) =\u003e {// Use 'outputs' to reference the query's unformatted output.\\n\\n// TODO: Apply transformations to the raw query output\\n\\nreturn outputs.data.map(item =\u003e item.attributes.name);})(self.rawOutputs)}\",\n \"spec\" : {\n \"fqn\" : \"com.datadoghq.dd.teams.listTeams\",\n \"inputs\" : {},\n \"connectionId\" : \"${var.connection_id}\"\n }\n }\n }\n ],\n \"id\" : \"11111111-2222-3333-4444-555555555555\",\n \"components\" : [\n {\n \"events\" : [],\n \"name\" : \"grid0\",\n \"properties\" : {\n \"children\" : []\n },\n \"type\" : \"grid\"\n }\n ],\n \"description\" : \"${var.description}\",\n \"favorite\" : false,\n \"name\" : \"${var.name}\",\n \"rootInstanceName\" : \"${var.root_instance_name}\",\n \"selfService\" : false,\n \"tags\" : [],\n \"connections\" : [\n {\n \"id\" : \"${var.connection_id}\",\n \"name\" : \"A connection that will be overridden\"\n }\n ],\n \"deployment\" : {\n \"id\" : \"11111111-1111-1111-1111-111111111111\",\n \"app_version_id\" : \"00000000-0000-0000-0000-000000000000\"\n }\n }\n )}" + } + argumentDocs: + action_query_names_to_connection_ids: (Map of String) If specified, this will override the Action Connection IDs for the specified Action Query Names in the App JSON. Otherwise, a map of the App's Action Query Names to Action Connection IDs will be returned in output. + app_json: (String) The JSON representation of the App. String length must be at least 1. + description: (String) If specified, this will override the human-readable description of the App in the App JSON. String length must be at least 1. + id: (String) The ID of this resource. + name: (String) If specified, this will override the name of the App in the App JSON. String length must be at least 1. + published: (Boolean) Set the app to published or unpublished. Published apps are available to other users. To ensure the app is accessible to the correct users, you also need to set a Restriction Policy on the app if a policy does not yet exist. Defaults to false. + root_instance_name: (String) The name of the root component of the app. This must be a grid component that contains all other components. If specified, this will override the root instance name of the App in the App JSON. String length must be at least 1. + importStatements: + - terraform import datadog_app_builder_app.my_app 11111111-2222-3333-4444-555555555555 datadog_application_key: subCategory: "" - description: Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys. + description: Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys. Import functionality for this resource is deprecated and will be removed in a future release with prior notice. Securely store your application keys using a secret management system or use this resource to create and manage new application keys. name: datadog_application_key title: datadog_application_key Resource - terraform-provider-datadog examples: @@ -95,8 +237,141 @@ resources: id: (String) The ID of this resource. key: (String, Sensitive) The value of the Application Key. name: (String) Name for Application Key. + scopes: (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. importStatements: - terraform import datadog_application_key.foo 11111111-2222-3333-4444-555555555555 + datadog_appsec_waf_custom_rule: + subCategory: "" + description: Provides a Datadog AppsecWafCustomRule resource. This can be used to create and manage Datadog appsec_waf_custom_rule. + name: datadog_appsec_waf_custom_rule + title: datadog_appsec_waf_custom_rule Resource - terraform-provider-datadog + examples: + - name: ioc000 + manifest: |- + { + "action": [ + { + "action": "redirect_request", + "parameters": [ + { + "location": "/blocking", + "status_code": 302 + } + ] + } + ], + "blocking": true, + "condition": [ + { + "operator": "match_regex", + "parameters": [ + { + "input": [ + { + "address": "server.db.statement" + } + ], + "regex": "stmt.*" + } + ] + } + ], + "enabled": true, + "name": "Block requests from a bad actor", + "path_glob": "/db/*", + "tags": { + "category": "attack_attempt", + "type": "custom_ioc" + } + } + - name: biz000 + manifest: |- + { + "blocking": false, + "condition": [ + { + "operator": "capture_data", + "parameters": [ + { + "input": [ + { + "address": "server.request.query", + "key_path": [ + "payment_id" + ] + } + ], + "value": "payment" + } + ] + } + ], + "enabled": true, + "name": "Track payments", + "path_glob": "/cart/*", + "scope": [ + { + "env": "prod", + "service": "paymentsvc" + } + ], + "tags": { + "category": "business_logic", + "type": "payment.checkout" + } + } + argumentDocs: + action: (Block, Optional) (see below for nested schema) + address: (String) Input from the request on which the condition should apply. + blocking: (Boolean) Indicates whether the WAF custom rule will block the request. + case_sensitive: (Boolean) Evaluate the value as case sensitive. + condition: (Block List) (see below for nested schema) + data: (String) Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter. + enabled: (Boolean) Indicates whether the WAF custom rule is enabled. + env: (String) The environment scope for the WAF custom rule. + id: (String) The ID of this resource. + input: (Block List) (see below for nested schema) + key_path: (List of String) Specific path for the input. + list: (List of String) List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and !exact_match operator. + location: (String) The location to redirect to when the WAF custom rule triggers. + min_length: (Number) Only evaluate this condition if the value has a minimum amount of characters. + name: (String) The Name of the WAF custom rule. + operator: (String) Operator to use for the WAF Condition. + options: (Block, Optional) (see below for nested schema) + parameters: (Block, Optional) (see below for nested schema) + path_glob: (String) The path glob for the WAF custom rule. + regex: (String) Regex to use with the condition. Only used with match_regex and !match_regex operator. + scope: (Block List) (see below for nested schema) + service: (String) The service scope for the WAF custom rule. + status_code: (Number) The status code to return when the WAF custom rule triggers. + tags: (Map of String) Tags associated with the WAF custom rule. category and type tags are required. Supported categories include business_logic, attack_attempt and security_response. + value: (String) Store the captured value in the specified tag name. Only used with the capture_data operator. + importStatements: + - terraform import datadog_appsec_waf_custom_rule.new_list "" + datadog_appsec_waf_exclusion_filter Resource - terraform-provider-datadog: + subCategory: "" + description: Provides a Datadog AppsecWafExclusionFilter resource. This can be used to create and manage Datadog appsec_waf_exclusion_filter. + name: datadog_appsec_waf_exclusion_filter Resource - terraform-provider-datadog + title: datadog_appsec_waf_exclusion_filter Resource - terraform-provider-datadog + argumentDocs: + category: (String) The category of the targeted WAF rules. + description: (String) A description for the exclusion filter. + enabled: (Boolean) Indicates whether the exclusion filter is enabled. + env: (String) Deploy on this environment. + event_query: (String) The event query matched by the legacy exclusion filter. Cannot be created nor updated. + id: (String) The ID of this resource. + ip_list: (List of String) The client IP addresses matched by the exclusion filter (CIDR notation is supported). + on_match: (String) The action taken when the exclusion filter matches. When set to monitor, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked. + parameters: (List of String) A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character. + path_glob: (String) The HTTP path glob expression matched by the exclusion filter. + rule_id: (String) Target a single WAF rule based on its identifier. + rules_target: (Block List) (see below for nested schema) + scope: (Block List) (see below for nested schema) + service: (String) Deploy on this service. + tags: (Block, Optional) (see below for nested schema) + type: (String) The type of the targeted WAF rules. + importStatements: + - terraform import datadog_appsec_exclusion_filter.passlist_entry "45b7032f-0ac4-4b2f-9118-363523c625f6" 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. @@ -115,7 +390,8 @@ resources: 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. + role: (String) The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with team. + team: (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. value: (String) Identity provider value. importStatements: - |- @@ -189,11 +465,11 @@ resources: 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. + group_by: (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. 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. + notifications: (List of String) This function will be deprecated soon. Use the notification rules function instead. 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. @@ -206,7 +482,7 @@ resources: 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. + description: 'Provides a Datadog Cloud Workload Security Agent Rule API resource for agent rules. Deprecated, use datadog_csm_threats_agent_rules resource instead: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/csm_threats_agent_rule' name: datadog_cloud_workload_security_agent_rule title: datadog_cloud_workload_security_agent_rule Resource - terraform-provider-datadog examples: @@ -228,9 +504,171 @@ resources: - |- # 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_compliance_custom_framework: + subCategory: "" + description: Provides a Datadog Compliance Custom Framework resource, which is used to create and manage compliance custom frameworks. + name: datadog_compliance_custom_framework + title: datadog_compliance_custom_framework Resource - terraform-provider-datadog + examples: + - name: framework + manifest: |- + { + "handle": "my-custom-framework-terraform-2", + "name": "my-custom-framework-terraform-2", + "requirements": [ + { + "controls": [ + { + "name": "control2", + "rules_id": [ + "def-000-h9o", + "def-000-b6i", + "def-000-yed", + "def-000-h5a", + "def-000-aw5" + ] + }, + { + "name": "control1", + "rules_id": [ + "def-000-j9v", + "def-000-465", + "def-000-vq1", + "def-000-4hf", + "def-000-s2d", + "def-000-vnl" + ] + } + ], + "name": "requirement2" + }, + { + "controls": [ + { + "name": "control2", + "rules_id": [ + "def-000-wuf", + "def-000-7og" + ] + }, + { + "name": "control5", + "rules_id": [ + "def-000-mdt", + "def-000-zrx", + "def-000-z6k" + ] + } + ], + "name": "requirement1" + } + ], + "version": "2.0.0" + } + argumentDocs: + controls: (Block List) The controls of the requirement. Length must be at least 1. (see below for nested schema) + handle: (String) The framework handle. String length must be at least 1. This field is immutable. + icon_url: (String) The URL of the icon representing the framework + id: (String) The ID of the compliance custom framework resource. + name: (String) The framework name. String length must be at least 1. + requirements: (Block List) The requirements of the framework. Length must be at least 1. (see below for nested schema) + rules_id: (Set of String) The set of rules IDs for the control. Length must be at least 1. + version: (String) The framework version. String length must be at least 1. This field is immutable. + importStatements: [] + datadog_compliance_resource_evaluation_filter: + subCategory: "" + description: Provides a Datadog ComplianceResourceEvaluationFilter resource. This can be used to create and manage a compliance resource evaluation filter. + name: datadog_compliance_resource_evaluation_filter + title: datadog_compliance_resource_evaluation_filter Resource - terraform-provider-datadog + examples: + - name: basic_filter + manifest: |- + { + "cloud_provider": "aws", + "resource_id": "000000000000", + "tags": [ + "tag1:val1" + ] + } + argumentDocs: + aws: ': account ID' + azure: ': subscription ID' + cloud_provider: (String) The cloud provider of the filter's targeted resource. Only aws, gcp, or azure are considered valid cloud providers. + gcp: ': project ID' + id: (String) The ID of the resource evaluation filter resource. + resource_id: '(String) The ID of the of the filter''s targeted resource. Different cloud providers target different resource IDs:' + tags: '(List of String) List of tags to filter misconfiguration detections. Each entry should follow the format: "key":"value".' + importStatements: + - terraform import datadog_compliance_resource_evaluation_filter.test_filter aws:00000000000000 + datadog_cost_budget Resource - terraform-provider-datadog: + subCategory: "" + description: Provides a Datadog Cost Budget resource. + name: datadog_cost_budget Resource - terraform-provider-datadog + title: datadog_cost_budget Resource - terraform-provider-datadog + argumentDocs: + amount: (Number) + end_month: (Number) The month when the budget ends (YYYYMM). + entries: (Block List) The entries of the budget. (see below for nested schema) + id: (String) The ID of the budget. + metrics_query: (String) The cost query used to track against the budget. + month: (Number) + name: (String) The name of the budget. + start_month: (Number) The month when the budget starts (YYYYMM). + tag_filters: (Block List) (see below for nested schema) + tag_key: (String) + tag_value: (String) + total_amount: (Number) The sum of all budget entries' amounts. + importStatements: [] + datadog_csm_threats_agent_rule: + subCategory: "" + description: Provides a Datadog CSM Threats Agent Rule API resource. + name: datadog_csm_threats_agent_rule + title: datadog_csm_threats_agent_rule Resource - terraform-provider-datadog + examples: + - name: my_agent_rule + manifest: |- + { + "description": "im a rule", + "enabled": true, + "expression": "open.file.name == \"etc/shadow/password\"", + "name": "my_agent_rule" + } + argumentDocs: + actions: (Block List) The list of actions the rule can perform (see below for nested schema) + append: (Boolean) Whether to append to the set + description: (String) A description for the Agent rule. + enabled: (Boolean) Indicates whether the Agent rule is enabled. Must not be used without policy_id. + expression: (String) The SECL expression of the Agent rule + field: (String) The field to get the value from + id: (String) The ID of this resource. + name: (String) The name of the Agent rule. + policy_id: (String) The ID of the agent policy in which the rule is saved + product_tags: (Set of String) The list of product tags associated with the rule + scope: (String) The scope of the set action (process, container, cgroup, or empty) + set: (Block, Optional) Set action configuration (see below for nested schema) + size: (Number) The maximum size of the set + ttl: (Number) The time to live for the set in nanoseconds + value: (String) The value to set + importStatements: + - |- + # CSM Agent Rules can be imported using ID. For example: + terraform import datadog_csm_threats_agent_rule.my_agent_rule m0o-hto-lkb + datadog_csm_threats_policy Resource - terraform-provider-datadog: + subCategory: "" + description: Provides a Datadog CSM Threats policy API resource. + name: datadog_csm_threats_policy Resource - terraform-provider-datadog + title: datadog_csm_threats_policy Resource - terraform-provider-datadog + argumentDocs: + description: (String) A description for the policy. + enabled: (Boolean) Indicates whether the policy is enabled. Defaults to false. + host_tags_lists: (Set of List of String) Host tags that define where the policy is deployed. Inner values are ANDed, outer arrays are ORed. + id: (String) The ID of this resource. + name: (String) The name of the policy. + tags: (Set of String) Host tags that define where the policy is deployed. Deprecated, use host_tags_lists instead. + importStatements: [] datadog_dashboard: subCategory: "" - description: Provides a Datadog dashboard resource. This can be used to create and manage Datadog dashboards. + description: Provides a Datadog dashboard resource. This can be used to create and manage Datadog dashboards. !> The is_read_only field is deprecated and non-functional. Use restricted_roles instead to define which roles are required to edit the dashboard. name: datadog_dashboard title: datadog_dashboard Resource - terraform-provider-datadog examples: @@ -238,7 +676,6 @@ resources: manifest: |- { "description": "Created using the Datadog provider in Terraform", - "is_read_only": true, "layout_type": "ordered", "template_variable": [ { @@ -757,7 +1194,6 @@ resources: manifest: |- { "description": "Created using the Datadog provider in Terraform", - "is_read_only": false, "layout_type": "free", "template_variable": [ { @@ -1199,12 +1635,15 @@ resources: 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. + canonical: '(Block List, Max: 1) Canonical Units (see below for nested schema)' + cell_display_mode: (String) A list of display modes for each table cell. Valid values are number, bar, trend. + cell_display_mode_options: '(Block List, Max: 1) A list of display modes for each table cell. (see below for nested schema)' 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)' + clustering_pattern_field_path: (String) Specifies the field for logs pattern clustering. Can only be used with logs_pattern_stream. 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. @@ -1219,9 +1658,12 @@ resources: 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. + cross_org_uuids: (List of String) The source organization UUID for cross organization queries. Feature in Private Beta. + custom: '(Block List, Max: 1) Use custom (non canonical metrics) (see below for nested schema)' 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_links: (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. @@ -1230,6 +1672,7 @@ resources: 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: (Block List) The display mode for the widget. (see below for nested schema) 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)' @@ -1285,7 +1728,7 @@ resources: 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_read_only: (Boolean, Deprecated) Whether this dashboard is read-only. Deprecated. This field is deprecated and non-functional. Use restricted_roles instead 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. @@ -1305,8 +1748,9 @@ resources: 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) + match: '(Block List, Min: 1, Max: 1) Match rule for the table widget text format. (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. + measure: (String) SLO measures queries. Valid values are good_events, bad_events, good_minutes, bad_minutes, 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. @@ -1320,6 +1764,7 @@ resources: 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. + number_format: '(Block List, Max: 1) Number formatting options for the formula. (see below for nested schema)' 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. @@ -1330,6 +1775,7 @@ resources: 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. + per_unit_name: (String) per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second' 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. @@ -1344,6 +1790,7 @@ resources: 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. + replace: '(Block List, Max: 1) Match rule for the table widget text format. (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. @@ -1355,6 +1802,7 @@ resources: 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.' + scaling: (String) The scaling mode for the widget. Valid values are absolute, relative. 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. @@ -1386,7 +1834,7 @@ resources: 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". + slo_query_type: (String) type of the SLO to query. Valid values are metric, monitor, time_slice. 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)' @@ -1399,6 +1847,7 @@ resources: 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)' + substring: (String) Text that will be replaced. Must be used with type substring. 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. @@ -1412,6 +1861,8 @@ resources: 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. + text_format: (Block List) The text format to apply to the items in a table widget column. (see below for nested schema) + text_formats: (Block List) Text formats define how to format text in table widget content. Multiple text_formats blocks are allowed using the structure below. This resource is in beta and is subject to change. (see below for nested schema) 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. @@ -1425,8 +1876,11 @@ resources: 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. + trend_type: (String) The type of trend line to display. Valid values are area, line, bars. + type: (String) Match or compare option. Valid values are is, is_not, contains, does_not_contain, starts_with, ends_with. unit: (String) The unit for the value displayed in the widget. + unit_name: (String) Unit name. It should be in singular form ('megabyte' and not 'megabytes') + unit_scale: '(Block List, Max: 1) (see below for nested schema)' 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. @@ -1439,11 +1893,13 @@ resources: 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. + with: (String) Table Widget Match String. 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)' + y_scale: (String) The scale of the y-axis. Valid values are shared, independent. + yaxis: '(Block List, Max: 1) A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below. (see below for nested schema)' importStatements: - terraform import datadog_dashboard.my_service_dashboard sv7-gyh-kas datadog_dashboard_json: @@ -1545,6 +2001,25 @@ resources: 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_domain_allowlist: + subCategory: "" + description: Provides the Datadog Email Domain Allowlist resource. This can be used to manage the Datadog Email Domain Allowlist. + name: datadog_domain_allowlist + title: datadog_domain_allowlist Resource - terraform-provider-datadog + examples: + - name: example + manifest: |- + { + "domains": [ + "@gmail.com" + ], + "enabled": true + } + argumentDocs: + domains: (List of String) The domains within the domain allowlist. + enabled: (Boolean) Whether the Email Domain Allowlist is enabled. + id: (String) The ID of this resource. + importStatements: [] 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. @@ -1671,7 +2146,7 @@ resources: - 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. + description: '!>This resource is deprecated - use the datadog_integration_aws_account resource instead. 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: @@ -1702,18 +2177,179 @@ resources: 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. + extended_resource_collection_enabled: (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. 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. + resource_collection_enabled: (String, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. 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_account: + 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_account + title: datadog_integration_aws_account Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "account_tags": [ + "env:prod" + ], + "auth_config": [ + { + "aws_auth_config_role": [ + { + "role_name": "DatadogIntegrationRole" + } + ] + } + ], + "aws_account_id": "123456789012", + "aws_partition": "aws", + "aws_regions": [ + { + "include_all": true + } + ], + "logs_config": [ + { + "lambda_forwarder": [ + { + "lambdas": [ + "arn:aws:lambda:us-east-1:123456789012:function:my-lambda" + ], + "sources": [ + "s3" + ] + } + ] + } + ], + "metrics_config": [ + { + "automute_enabled": true, + "collect_cloudwatch_alarms": true, + "collect_custom_metrics": true, + "enabled": true, + "namespace_filters": [ + { + "exclude_only": [ + "AWS/SQS", + "AWS/ElasticMapReduce" + ] + } + ], + "tag_filters": [ + { + "namespace": "AWS/EC2", + "tags": [ + "datadog:true" + ] + } + ] + } + ], + "resources_config": [ + { + "cloud_security_posture_management_collection": true, + "extended_collection": true + } + ], + "traces_config": [ + { + "xray_services": [ + { + "include_all": true + } + ] + } + ] + } + - name: foo-defaults + manifest: |- + { + "auth_config": [ + { + "aws_auth_config_role": [ + { + "role_name": "DatadogIntegrationRole" + } + ] + } + ], + "aws_account_id": "234567890123", + "aws_partition": "aws", + "aws_regions": [ + {} + ], + "logs_config": [ + { + "lambda_forwarder": [ + {} + ] + } + ], + "metrics_config": [ + { + "namespace_filters": [ + {} + ] + } + ], + "resources_config": [ + {} + ], + "traces_config": [ + { + "xray_services": [ + {} + ] + } + ] + } + argumentDocs: + access_key_id: (String) AWS Access Key ID + account_tags: (List of String) Tags to apply to all metrics in the account. Defaults to []. + auth_config: (Block) Configure how Datadog authenticates to your AWS account. Either aws_auth_config_keys or aws_auth_config_role block is required within. (see below for nested schema) + automute_enabled: (Boolean) Enable EC2 automute for AWS metrics Defaults to true. + aws_account_id: (String) Your AWS Account ID without dashes. + aws_auth_config_keys: (Block, Optional) (see below for nested schema) + aws_auth_config_role: (Block, Optional) (see below for nested schema) + aws_partition: (String) AWS Account partition. + aws_regions: (Block) AWS regions to collect data from. Defaults to include_all if block is empty. (see below for nested schema) + cloud_security_posture_management_collection: (Boolean) Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Requires extended_collection to be set to true. Defaults to false. + collect_cloudwatch_alarms: (Boolean) Enable CloudWatch alarms collection Defaults to false. + collect_custom_metrics: (Boolean) Enable custom metrics collection Defaults to false. + enabled: (Boolean) Enable AWS metrics collection Defaults to true. + exclude_only: (List of String) Exclude only these namespaces from metrics collection. Use datadog_integration_aws_available_namespaces data source to get allowed values. Defaults to ["AWS/SQS", "AWS/ElasticMapReduce"]. AWS/SQS and AWS/ElasticMapReduce are excluded by default to reduce your AWS CloudWatch costs from GetMetricData API calls. + extended_collection: (Boolean) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cloud_security_posture_management_collection. Defaults to true. + external_id: (String) AWS IAM external ID for associated role. If omitted, one is generated. + id: (String) The ID of this resource. + include_all: (Boolean) Include all regions. Defaults to true. + include_only: (List of String) Include only these regions. + lambda_forwarder: (Block) Leave empty to omit logs config. (see below for nested schema) + lambdas: (List of String) List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to []. + logs_config: (Block) Configure log autosubscription for your Datadog Forwarder Lambda functions. The lambda_fowarder block is required within, but may be empty to use defaults. (see below for nested schema) + metrics_config: (Block) Configure metrics collection from AWS CloudWatch. The namespace_filters block is required within, but may be empty to use defaults. (see below for nested schema) + namespace: (String) The AWS service for which the tag filters defined in tags will be applied. + namespace_filters: (Block) AWS metrics namespace filters. Defaults to a pre-set exclude_only list if block is empty. (see below for nested schema) + resources_config: (Block) AWS resources collection config. May be empty to use defaults. (see below for nested schema) + role_name: (String) AWS IAM role name. + secret_access_key: (String, Sensitive) AWS Secret Access Key. This value is write-only; changes made outside of Terraform will not be drift-detected. + sources: (List of String) List of service IDs set to enable automatic log collection. Use datadog_integration_aws_available_logs_services data source or the AWS Logs Integration API to get allowed values. Defaults to []. + tag_filters: (Block List) AWS Metrics Collection tag filters list. The array of custom AWS resource tags (in the form key:value) defines a filter that Datadog uses when collecting metrics from a specified service. Wildcards, such as ? (match a single character) and * (match multiple characters), and exclusion using ! before the tag are supported. For EC2, only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. For example, env:production,instance-type:c?.*,!region:us-east-1. (see below for nested schema) + tags: (List of String) The AWS resource tags to filter on for the service specified by namespace. Defaults to []. + traces_config: (Block) AWS traces collection config. The xray_services block is required within, but may be empty to use defaults. (see below for nested schema) + xray_services: (Block) AWS X-Ray services to collect traces from. Defaults to include_only. (see below for nested schema) + importStatements: + - terraform import datadog_integration_aws_account.example "" 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. @@ -1738,18 +2374,51 @@ resources: - |- # 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: + datadog_integration_aws_external_id: 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 + description: '!>A new external ID must be used to create an AWS account integration in Datadog within 48 hours of creation or it will expire. !>Running terraform destroy only removes the resource from Terraform state and does not deactivate anything in Datadog or AWS. Provides a Datadog-Amazon Web Services external ID resource. This can be used to create Datadog-Amazon Web Services external IDs This resource can be used in conjunction with the datadog_integration_aws_account https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account resource. The external ID value can be referenced as shown:' + name: datadog_integration_aws_external_id + title: datadog_integration_aws_external_id 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" - } + - name: foo + manifest: '{}' + dependencies: + datadog_integration_aws_account.foo-defaults: |- + { + "auth_config": [ + { + "aws_auth_config_role": [ + { + "external_id": "${datadog_integration_aws_external_id.foo.id}", + "role_name": "DatadogIntegrationRole" + } + ] + } + ], + "aws_account_id": "123456789019", + "aws_partition": "aws" + } + - name: foo + manifest: '{}' + argumentDocs: + id: (String) The external ID. + importStatements: + - terraform apply -replace="datadog_integration_aws_external_id.foo" + - |- + # Amazon Web Services external IDs can be imported using the ID value. + terraform import datadog_integration_aws_external_id.foo ${id} + datadog_integration_aws_lambda_arn: + subCategory: "" + description: '!>This resource is deprecated - use the datadog_integration_aws_account resource instead. 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. Note: If you are using AWS GovCloud or the AWS China* region, update the lambda_arn parameter for your environment. *All use of Datadog Services in (or in connection with environments within) mainland China is subject to the disclaimer published in the Restricted Service Locations section on our website.' + 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. @@ -1760,7 +2429,7 @@ resources: 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. + description: '!>This resource is deprecated - use the datadog_integration_aws_account resource instead. 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: @@ -1782,7 +2451,7 @@ resources: 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. + description: '!>This resource is deprecated - use the datadog_integration_aws_account resource instead. 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: @@ -1796,7 +2465,7 @@ resources: 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. + namespace: (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. tag_filter_str: (String) The tag filter string. importStatements: - |- @@ -1833,15 +2502,21 @@ resources: 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. + metrics_enabled: (Boolean) Enable Azure metrics for your organization. Defaults to true. + metrics_enabled_default: (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + namespace: (String) 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. + resource_provider_configs: (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) tenant_name: (String) Your Azure Active Directory ID. + usage_metrics_enabled: (Boolean) Enable azure.usage metrics for your organization. Defaults to true. importStatements: - |- # Microsoft Azure integrations can be imported using their `tenant name` and `client` id separated with a colon (`:`). + # The client_secret should be passed by setting the environment variable CLIENT_SECRET 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. + description: Provides a Datadog IntegrationCloudflareAccount resource. This can be used to create and manage Datadog integration_cloudflare_account. name: datadog_integration_cloudflare_account title: datadog_integration_cloudflare_account Resource - terraform-provider-datadog examples: @@ -1857,11 +2532,12 @@ resources: 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. + resources: (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). importStatements: - - terraform import datadog_integration_cloudflare_account.new_list "" + - 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. + description: Provides a Datadog IntegrationConfluentAccount resource. This can be used to create and manage Datadog integration_confluent_account. name: datadog_integration_confluent_account title: datadog_integration_confluent_account Resource - terraform-provider-datadog examples: @@ -1888,7 +2564,7 @@ resources: 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. + description: Provides a Datadog IntegrationConfluentResource resource. This can be used to create and manage Datadog integration_confluent_resource. name: datadog_integration_confluent_resource title: datadog_integration_confluent_resource Resource - terraform-provider-datadog examples: @@ -1926,7 +2602,7 @@ resources: - 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. + description: Provides a Datadog IntegrationFastlyAccount resource. This can be used to create and manage Datadog integration_fastly_account. name: datadog_integration_fastly_account title: datadog_integration_fastly_account Resource - terraform-provider-datadog examples: @@ -1944,7 +2620,7 @@ resources: - 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. + description: Provides a Datadog IntegrationFastlyService resource. This can be used to create and manage Datadog integration_fastly_service. name: datadog_integration_fastly_service title: datadog_integration_fastly_service Resource - terraform-provider-datadog examples: @@ -1972,10 +2648,10 @@ resources: 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" + - terraform import datadog_integration_fastly_service.new_list "account-id: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. + 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: @@ -1984,6 +2660,10 @@ resources: { "client_email": "awesome-service-account@awesome-project-id.iam.gserviceaccount.com", "client_id": "123456789012345678901", + "cloud_run_revision_filters": [ + "filter_one", + "filter_two" + ], "host_filters": "foo:bar,buzz:lightyear", "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", "private_key_id": "1234567890123456789012345678901234567890", @@ -2022,12 +2702,16 @@ resources: 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. + cloud_run_revision_filters: (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + cspm_resource_collection_enabled: (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. 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. Defaults to "". id: (String) The ID of this resource. + is_resource_change_collection_enabled: (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + is_security_command_center_enabled: '(Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false.' 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. + resource_collection_enabled: (Boolean) When enabled, Datadog scans for all resources in your GCP environment. importStatements: - |- # Google Cloud Platform integrations can be imported using their project ID, e.g. @@ -2043,6 +2727,10 @@ resources: { "automute": true, "client_email": "${google_service_account.datadog_integration.email}", + "cloud_run_revision_filters": [ + "filter_one", + "filter_two" + ], "host_filters": [ "filter_one", "filter_two" @@ -2065,14 +2753,44 @@ resources: "service_account_id": "${google_service_account.datadog_integration.name}" } argumentDocs: + account_tags: (Set of String) Tags to be associated with GCP metrics and service checks from your account. automute: (Boolean) Silence monitors for expected GCE instance shutdowns. client_email: (String) Your service account email address. + cloud_run_revision_filters: (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. delegate_account_email: (String) Datadog's STS Delegate Email. + disabled: (Boolean) 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. + is_cspm_enabled: (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + is_per_project_quota_enabled: (Boolean) When enabled, Datadog includes the X-Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + is_resource_change_collection_enabled: (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + is_security_command_center_enabled: '(Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false.' + metric_namespace_configs: (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + resource_collection_enabled: (Boolean) When enabled, Datadog scans for all resources in your GCP environment. importStatements: - terraform import datadog_integration_gcp_sts.foo "9c303af3-b963-45e0-8c8f-469b9e1a213f" + datadog_integration_ms_teams_tenant_based_handle Resource - terraform-provider-datadog: + subCategory: "" + description: Resource for interacting with Datadog Microsoft Teams Integration tenant-based handles. + name: datadog_integration_ms_teams_tenant_based_handle Resource - terraform-provider-datadog + title: datadog_integration_ms_teams_tenant_based_handle Resource - terraform-provider-datadog + argumentDocs: + channel_name: (String) Your channel name. + id: (String) The ID of this resource. + name: (String) Your tenant-based handle name. + team_name: (String) Your team name. + tenant_name: (String) Your tenant name. + importStatements: [] + datadog_integration_ms_teams_workflows_webhook_handle Resource - terraform-provider-datadog: + subCategory: "" + description: Resource for interacting with Datadog Microsoft Teams integration Microsoft Workflows webhook handles. + name: datadog_integration_ms_teams_workflows_webhook_handle Resource - terraform-provider-datadog + title: datadog_integration_ms_teams_workflows_webhook_handle Resource - terraform-provider-datadog + argumentDocs: + id: (String) The ID of this resource. + name: (String) Your Microsoft Workflows webhook handle name. + url: (String, Sensitive) Your Microsoft Workflows webhook URL. + importStatements: [] datadog_integration_opsgenie_service_object: subCategory: "" description: Resource for interacting with Datadog Opsgenie Service API. @@ -2191,6 +2909,7 @@ resources: 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. + mute_buttons: (Boolean) Show interactive buttons to mute the alerting monitor. 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. @@ -2198,13 +2917,29 @@ resources: - |- # 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: + datadog_ip_allowlist: 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 + name: datadog_ip_allowlist title: datadog_ip_allowlist Resource - terraform-provider-datadog + examples: + - name: example + manifest: |- + { + "enabled": false, + "entry": [ + { + "cidr_block": "127.0.0.0/32", + "note": "1st Example IP Range" + }, + { + "cidr_block": "192.0.2.0/24", + "note": "2nd Example IP Range" + } + ] + } argumentDocs: - cidr_block: (String) IP address or range of addresses. + cidr_block: (String) IP address or range of addresses. String must be a valid CIDR block or IP address. 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. @@ -2237,6 +2972,8 @@ resources: client_email: (String) Your client email. client_id: (String) Your client id. container: (String) The container where the archive is stored. + encryption_key: (String) The AWS KMS encryption key. + encryption_type: (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". 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. @@ -2249,6 +2986,7 @@ resources: 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. + storage_class: (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". tenant_id: (String) Your tenant id. importStatements: - terraform import datadog_logs_archive.my_s3_archive 1Aabc2_dfQPLnXy3HlfK4hi @@ -2266,6 +3004,8 @@ resources: "${datadog_logs_archive.sample_archive_2.id}" ] } + references: + archive_ids: datadog_logs_archive.sample_archive_1.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. @@ -2273,6 +3013,71 @@ resources: - |- # 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_destination: + subCategory: "" + description: Provides a Datadog Logs Custom Destination API resource, which is used to create and manage Datadog log forwarding. + name: datadog_logs_custom_destination + title: datadog_logs_custom_destination Resource - terraform-provider-datadog + examples: + - name: sample_destination + manifest: |- + { + "enabled": true, + "http_destination": [ + { + "basic_auth": [ + { + "password": "my-password", + "username": "my-username" + } + ], + "endpoint": "https://example.org" + } + ], + "name": "sample destination", + "query": "service:my-service" + } + argumentDocs: + access_token: (String, Sensitive) Access token of the Splunk HTTP Event Collector. This field is not returned by the API. + basic_auth: (Block List) Basic access authentication. (see below for nested schema) + custom_header_auth: (Block List) Custom header access authentication. (see below for nested schema) + elasticsearch_destination: (Block List) The Elasticsearch destination. (see below for nested schema) + enabled: (Boolean) Whether logs matching this custom destination should be forwarded or not. + endpoint: (String) The destination for which logs will be forwarded to. Must have HTTPS scheme. Forwarding back to Datadog is not allowed. + forward_tags: (Boolean) Whether tags from the forwarded logs should be forwarded or not. + forward_tags_restriction_list: |- + (List of String) List of tag keys to be filtered. + An empty list represents no restriction is in place and either all or no tags will be + forwarded depending on forward_tags_restriction_list_type parameter. + forward_tags_restriction_list_type: |- + (String) How the forward_tags_restriction_list parameter should be interpreted. + If ALLOW_LIST, then only tags whose keys on the forwarded logs match the ones on the restriction list + are forwarded. + BLOCK_LIST works the opposite way. It does not forward the tags matching the ones on the list. Valid values are ALLOW_LIST, BLOCK_LIST. + header_name: (String) The header name of the authentication. + header_value: (String, Sensitive) The header value of the authentication. This field is not returned by the API. + http_destination: (Block List) The HTTP destination. (see below for nested schema) + id: (String) The ID of this resource. + index_name: (String) Name of the Elasticsearch index (must follow Elasticsearch's criteria). + index_rotation: |- + (String) Date pattern with US locale and UTC timezone to be appended to the index name after adding '-' + (that is, '${index_name}-${indexPattern}'). + You can customize the index rotation naming pattern by choosing one of these options: + - Hourly: 'yyyy-MM-dd-HH' (as an example, it would render: '2022-10-19-09') + - Daily: 'yyyy-MM-dd' (as an example, it would render: '2022-10-19') + - Weekly: 'yyyy-'W'ww' (as an example, it would render: '2022-W42') + - Monthly: 'yyyy-MM' (as an example, it would render: '2022-10') + If this field is missing or is blank, it means that the index name will always be the same + (that is, no rotation). + name: (String) The custom destination name. + password: (String, Sensitive) The password of the authentication. This field is not returned by the API. + query: (String) The custom destination query filter. Logs matching this query are forwarded to the destination. + splunk_destination: (Block List) The Splunk HTTP Event Collector (HEC) destination. (see below for nested schema) + username: (String, Sensitive) The username of the authentication. This field is not returned by the API. + importStatements: + - |- + # Custom destinations can be imported using the destination ID. Caution: auth credentials can not be imported. + terraform import datadog_logs_custom_destination.sample_destination "destination-id" 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.' @@ -2508,6 +3313,7 @@ resources: 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. + description: (String) 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)' @@ -2535,9 +3341,11 @@ resources: 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. + span_id_remapper: '(Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema)' 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. + tags: (Set of String) 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. @@ -2594,6 +3402,7 @@ resources: "query": "*" } ], + "flex_retention_days": 180, "name": "your index", "retention_days": 7 } @@ -2604,13 +3413,14 @@ resources: 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)' + flex_retention_days: (Number) The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. 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. + name: (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. 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. + retention_days: (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. sample_rate: (Number) The fraction of logs excluded by the exclusion filter, when active. importStatements: - terraform import @@ -2628,6 +3438,8 @@ resources: ], "name": "sample_index_order" } + references: + indexes: datadog_logs_index.sample_index.id 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. @@ -2716,6 +3528,8 @@ resources: "${datadog_logs_integration_pipeline.python.id}" ] } + references: + pipelines: datadog_logs_custom_pipeline.sample_pipeline.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. @@ -2828,17 +3642,19 @@ resources: } 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. + aggregator: (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + cloud_cost_query: '(Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema)' 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. + custom_schedule: '(Block List, Max: 1) 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 cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. 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) + evaluation_window: '(Block List, Max: 1) 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). @@ -2866,9 +3682,9 @@ resources: 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.' + 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 not available for Service Check, Composite, or SLO 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. + priority: (String) 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)' @@ -2878,7 +3694,7 @@ resources: 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) + scheduling_options: '(Block List, Max: 1) 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' @@ -2886,7 +3702,7 @@ resources: 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.' + 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, network-performance alert, cost 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)' @@ -2932,7 +3748,7 @@ resources: - 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" + "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 \"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. @@ -2940,9 +3756,469 @@ resources: url: (String) The URL of the monitor. importStatements: - terraform import datadog_monitor_json.monitor_json 123456 + datadog_monitor_notification_rule: + subCategory: "" + description: 'Provides a Datadog MonitorNotificationRule resource. Note: This resource is in Preview. Request access https://www.datadoghq.com/product-preview/monitor-notification-rules/.' + name: datadog_monitor_notification_rule + title: datadog_monitor_notification_rule Resource - terraform-provider-datadog + examples: + - name: foo + manifest: |- + { + "filter": [ + { + "tags": [ + "env:foo" + ] + } + ], + "name": "A notification rule name", + "recipients": [ + "slack-test-channel", + "jira-test" + ] + } + argumentDocs: + filter: (Block, Optional) (see below for nested schema) + id: (String) The ID of this resource. + name: (String) The name of the monitor notification rule. + recipients: (Set of String) List of recipients to notify. + tags: (Set of String) All tags that target monitors must match. + importStatements: + - terraform import datadog_monitor_notification_rule.new_list "00e000000-0000-1234-0000-000000000000" + datadog_observability_pipeline: + subCategory: "" + description: Provides a Datadog Observability Pipeline resource. Observability Pipelines allows you to collect and process logs within your own infrastructure, and then route them to downstream integrations. This resource is in Preview. Reach out to Datadog support to enable it for your account. Datadog recommends using the -parallelism=1 option to apply this resource. + name: datadog_observability_pipeline + title: datadog_observability_pipeline Resource - terraform-provider-datadog + examples: + - name: test + manifest: |- + { + "config": [ + { + "destinations": [ + { + "datadog_logs": [ + { + "id": "sink-1", + "inputs": [ + "filter-3" + ] + } + ] + } + ], + "processors": [ + { + "filter": [ + { + "id": "filter-2", + "include": "service:nginx", + "inputs": [ + "filter-1" + ] + } + ], + "parse_json": [ + { + "field": "message2", + "id": "filter-1", + "include": "service:nginx", + "inputs": [ + "source-1" + ] + }, + { + "field": "message", + "id": "filter-3", + "include": "service:nginx", + "inputs": [ + "filter-2" + ] + } + ] + } + ], + "sources": [ + { + "kafka": [ + { + "group_id": "my-consumer-group", + "id": "source-1", + "librdkafka_option": [ + { + "name": "fetch.message.max.bytes", + "value": "1048576" + }, + { + "name": "socket.timeout.ms", + "value": "500" + } + ], + "sasl": [ + { + "mechanism": "SCRAM-SHA-512" + } + ], + "tls": [ + { + "ca_file": "/etc/certs/ca.crt", + "crt_file": "/etc/certs/client.crt", + "key_file": "/etc/certs/client.key" + } + ], + "topics": [ + "my-topic-1", + "my-topic-2" + ] + } + ] + } + ] + } + ], + "name": "test pipeline" + } + argumentDocs: + acl: (String) Access control list setting for objects written to the bucket. + add_env_vars: (Block List) The add_env_vars processor adds environment variable values to log events. (see below for nested schema) + add_fields: (Block List) The add_fields processor adds static key-value fields to logs. (see below for nested schema) + all: (Boolean) Scan all fields. + amazon_data_firehose: (Block List) The amazon_data_firehose source ingests logs from AWS Data Firehose. (see below for nested schema) + amazon_opensearch: (Block List) The amazon_opensearch destination writes logs to Amazon OpenSearch. (see below for nested schema) + amazon_s3: (Block List) The amazon_s3 source ingests logs from an Amazon S3 bucket. It supports AWS authentication and TLS encryption. (see below for nested schema) + api_version: (String) The Elasticsearch API version to use. Set to auto to auto-detect. + assume_role: (String) ARN of the role to assume. + auth: (Block, Optional) (see below for nested schema) + auth_strategy: (String) Optional authentication strategy for HTTP requests. + auto_extract_timestamp: (Boolean) If true, Splunk tries to extract timestamps from incoming log events. + aws_region: (String) AWS region override (if applicable). + azure_storage: (Block List) The azure_storage destination forwards logs to an Azure Blob Storage container. (see below for nested schema) + blob_prefix: (String) Optional prefix for blobs written to the container. + bucket: (String) Name of the GCS bucket. + bulk_index: (String) The index or datastream to write logs to. + ca_file: (String) Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate. + characters: (Number) Number of characters to keep. + client_id: (String) Azure AD client ID used for authentication. + column: (String) The items column. + comparison: (String) The comparison method (e.g. equals). + config: (Block, Optional) Configuration for the pipeline. (see below for nested schema) + container_name: (String) The name of the Azure Blob Storage container to store logs in. + credentials_file: (String) Path to the GCP service account key file. + crt_file: (String) Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services. + custom: (Block, Optional) Pattern detection using a custom regular expression. (see below for nested schema) + customer_id: (String) The Google Chronicle customer ID. + datadog_agent: (Block List) The datadog_agent source collects logs from the Datadog Agent. (see below for nested schema) + datadog_logs: (Block List) The datadog_logs destination forwards logs to Datadog Log Management. (see below for nested schema) + dcr_immutable_id: (String) The immutable ID of the Data Collection Rule (DCR). + decoding: (String) The decoding format used to interpret incoming logs. + dedupe: (Block List) The dedupe processor removes duplicate fields in log events. (see below for nested schema) + delimiter: (String) The encoding delimiter. + destination: (String) Destination field name. + destinations: (Block, Optional) List of destinations. (see below for nested schema) + direction: '(String) Direction from which to keep characters: first or last.' + disable_library_rules: (Boolean) If set to true, disables the default Grok rules provided by Datadog. + drop_events: (Boolean) Whether to drop events exceeding the limit. + elasticsearch: (Block List) The elasticsearch destination writes logs to an Elasticsearch cluster. (see below for nested schema) + encoding: (String) The encoding format for the logs sent to Chronicle. + enforce: (String) Whether to enforce by 'bytes' or 'events'. Valid values are bytes, events. + enrichment_table: (Block List) The enrichment_table processor enriches logs using a static CSV file or GeoIP database. (see below for nested schema) + exclude: (Block, Optional) Explicitly exclude these fields from scanning. (see below for nested schema) + external_id: (String) External ID for assumed role. + field: (String) The target field in the log event. + fields: (List of String) A list of log field paths to check for duplicates. + file: (Block, Optional) Defines a static enrichment table loaded from a CSV file. (see below for nested schema) + filter: (Block List) The filter processor allows conditional processing of logs based on a Datadog search query. Logs that match the include query are passed through; others are discarded. (see below for nested schema) + fluent_bit: (Block List) The fluent source ingests logs from Fluent Bit. (see below for nested schema) + fluentd: (Block List) The fluent source ingests logs from a Fluentd-compatible service. (see below for nested schema) + generate_datadog_metrics: (Block List) The generate_datadog_metrics processor creates custom metrics from logs. Metrics can be counters, gauges, or distributions and optionally grouped by log fields. (see below for nested schema) + geoip: (Block, Optional) Uses a GeoIP database to enrich logs based on an IP field. (see below for nested schema) + google_chronicle: (Block List) The google_chronicle destination sends logs to Google Chronicle. (see below for nested schema) + google_cloud_storage: (Block List) The google_cloud_storage destination stores logs in a Google Cloud Storage (GCS) bucket. (see below for nested schema) + google_pubsub: (Block List) The google_pubsub source ingests logs from a Google Cloud Pub/Sub subscription. (see below for nested schema) + group_by: (List of String) Optional fields used to group the metric series. + group_id: (String) The Kafka consumer group ID. + hash: (Block, Optional) Hashes the matched value. (see below for nested schema) + header_custom_fields: (Block List) A list of custom headers to include in the request to Sumo Logic. (see below for nested schema) + header_host_name: (String) Optional override for the host name header. + header_source_category: (String) Optional override for the source category header. + header_source_name: (String) Optional override for the source name header. + http_client: (Block List) The http_client source scrapes logs from HTTP endpoints at regular intervals. (see below for nested schema) + http_server: (Block List) The http_server source collects logs over HTTP POST from external services. (see below for nested schema) + id: (String) The ID of this resource. + ignore_when_missing_partitions: (Boolean) Whether to ignore when partition fields are missing. + include: (String) A Datadog search query used to determine which logs this processor targets. + includes_headers: (Boolean) The encoding includes_headers. + index: (String) Optional name of the Splunk index where logs are written. + inputs: (List of String) A list of component IDs whose output is used as the input for this component. + kafka: (Block List) The kafka source ingests data from Apache Kafka topics. (see below for nested schema) + keepalive: (Number) Optional socket keepalive duration in milliseconds. + key: (Block List) Key fields used to look up enrichment values. (see below for nested schema) + key_field: (String) Path to the IP field in the log. + key_file: (String) Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication. + key_prefix: (String) Optional prefix for object keys within the GCS bucket. + keyword_options: (Block, Optional) Keyword-based proximity matching for sensitive data. (see below for nested schema) + keywords: (List of String) A list of keywords to match near the sensitive pattern. + library: (Block, Optional) Pattern detection using a predefined pattern from the sensitive data scanner pattern library. (see below for nested schema) + library_mapping: (String) Predefined library mapping for log transformation. + librdkafka_option: (Block List) Advanced librdkafka client configuration options. (see below for nested schema) + limit: (Block, Optional) (see below for nested schema) + locale: (String) Locale used to resolve geographical names. + log_type: (String) The log type metadata associated with the Chronicle destination. + logstash: (Block List) The logstash source ingests logs from a Logstash forwarder. (see below for nested schema) + mapping: (Block List) List of OCSF mapping entries using library mapping. (see below for nested schema) + match_rule: (Block List) A list of Grok parsing rules that define how to extract fields from the source field. Each rule must contain a name and a valid Grok pattern. (see below for nested schema) + mechanism: (String) SASL mechanism to use (e.g., PLAIN, SCRAM-SHA-256, SCRAM-SHA-512). Valid values are PLAIN, SCRAM-SHA-256, SCRAM-SHA-512. + merge_strategies: (Block List) List of merge strategies defining how values from grouped events should be combined. (see below for nested schema) + metadata: (Block List) Custom metadata key-value pairs added to each object. (see below for nested schema) + metric_type: (String) Type of metric to create. + metrics: (Block List) Configuration for generating individual metrics. (see below for nested schema) + microsoft_sentinel: (Block List) The microsoft_sentinel destination forwards logs to Microsoft Sentinel. (see below for nested schema) + mode: (String) The deduplication mode to apply to the fields. + name: (String) The pipeline name. + new_relic: (Block List) The new_relic destination sends logs to the New Relic platform. (see below for nested schema) + ocsf_mapper: (Block List) The ocsf_mapper processor transforms logs into the OCSF schema using predefined library mappings. (see below for nested schema) + on_match: (Block, Optional) The action to take when a sensitive value is found. (see below for nested schema) + opensearch: (Block List) The opensearch destination writes logs to an OpenSearch cluster. (see below for nested schema) + overflow_action: '(String) The action to take when the quota is exceeded: drop, no_action, or overflow_routing.' + overrides: (Block List) The overrides for field-specific quotas. (see below for nested schema) + parse_grok: (Block List) The parse_grok processor extracts structured fields from unstructured log messages using Grok patterns. (see below for nested schema) + parse_json: (Block List) The parse_json processor extracts JSON from a specified field and flattens it into the event. This is useful when logs contain embedded JSON as a string. (see below for nested schema) + partial_redact: (Block, Optional) Redacts part of the matched value (e.g., keep last 4 characters). (see below for nested schema) + partition_fields: (List of String) List of partition fields. + path: (String) Path to the CSV file. + pattern: (Block, Optional) Pattern detection configuration for identifying sensitive data using either a custom regex or a library reference. (see below for nested schema) + percentage: (Number) The percentage of logs to sample. + preserve_source: (Boolean) Whether to keep the original field. + processors: (Block, Optional) List of processors. (see below for nested schema) + project: (String) The GCP project ID that owns the Pub/Sub subscription. + proximity: (Number) Maximum number of tokens between a keyword and a sensitive value match. + quota: (Block List) The quota measures logging traffic for logs that match a specified filter. When the configured daily quota is met, the processor can drop or alert. (see below for nested schema) + rate: (Number) Number of events to sample (1 in N). + redact: (Block, Optional) Redacts the matched value. (see below for nested schema) + reduce: (Block List) The reduce processor aggregates and merges logs based on matching keys and merge strategies. (see below for nested schema) + region: (String) The New Relic region. + remove_fields: (Block List) The remove_fields processor deletes specified fields from logs. (see below for nested schema) + rename_fields: (Block List) The rename_fields processor changes field names. (see below for nested schema) + replace: (String) Replacement string for redacted values (e.g., ***). + rsyslog: (Block List) The rsyslog destination forwards logs to an external rsyslog server over TCP or UDP using the syslog protocol. (see below for nested schema) + rule: (String) The definition of the Grok rule. + rules: (Block List) The list of Grok parsing rules. If multiple parsing rules are provided, they are evaluated in order. The first successful match is applied. (see below for nested schema) + sample: (Block List) The sample processor allows probabilistic sampling of logs at a fixed rate. (see below for nested schema) + sasl: (Block, Optional) SASL authentication settings. (see below for nested schema) + schema: (Block List) Schema defining column names and their types. (see below for nested schema) + scope: (Block, Optional) Field-level targeting options that determine where the scanner should operate. (see below for nested schema) + scrape_interval_secs: (Number) The interval (in seconds) between HTTP scrape requests. + scrape_timeout_secs: (Number) The timeout (in seconds) for each scrape request. + sensitive_data_scanner: (Block List) The sensitive_data_scanner processor detects and optionally redacts sensitive data in log events. (see below for nested schema) + sentinel_one: (Block List) The sentinel_one destination sends logs to SentinelOne. (see below for nested schema) + session_name: (String) Session name for assumed role. + source: (String) The name of the field in the log event to apply the Grok rules to. + sources: (Block, Optional) List of sources. (see below for nested schema) + sourcetype: (String) The Splunk sourcetype to assign to log events. + splunk_hec: (Block List) The splunk_hec destination forwards logs to Splunk using the HTTP Event Collector (HEC). (see below for nested schema) + splunk_tcp: (Block List) The splunk_tcp source receives logs from a Splunk Universal Forwarder over TCP. TLS is supported for secure transmission. (see below for nested schema) + storage_class: (String) Storage class used for objects stored in GCS. + strategy: (String) The authentication strategy to use (e.g. aws or basic). + subscription: (String) The Pub/Sub subscription name from which messages are consumed. + sumo_logic: (Block List) The sumo_logic destination forwards logs to Sumo Logic. (see below for nested schema) + support_rule: (Block List) A list of helper Grok rules that can be referenced by the parsing rules. (see below for nested schema) + syslog_ng: (Block List) The syslog_ng destination forwards logs to an external syslog-ng server over TCP or UDP using the syslog protocol. (see below for nested schema) + table: (String) The name of the Log Analytics table where logs will be sent. + tags: (List of String) Tags assigned to this rule for filtering and classification. + target: (String) Path where enrichment results should be stored in the log. + tenant_id: (String) Azure AD tenant ID. + threshold: (Number) The number of events to allow before throttling is applied. + throttle: (Block List) The throttle processor limits the number of events that pass through over a given time window. (see below for nested schema) + tls: (Block, Optional) Configuration for enabling TLS encryption between the pipeline component and external services. (see below for nested schema) + topics: (List of String) A list of Kafka topic names to subscribe to. The source ingests messages from each topic specified. + type: (String) File encoding format. + use_recommended_keywords: (Boolean) Whether to augment the pattern with recommended keywords (optional). + value: (String) The metadata value. + variables: (Block List) A list of environment variable mappings to apply to log fields. (see below for nested schema) + window: (Number) The time window in seconds over which the threshold applies. + importStatements: + - terraform import datadog_observability_pipeline.example_pipeline 8beabbc4-1f4d-11f0-942b-da7ad0900001 + datadog_on_call_escalation_policy: + subCategory: "" + description: Provides a Datadog On-Call escalation policy resource. This can be used to create and manage Datadog On-Call escalation policies. + name: datadog_on_call_escalation_policy + title: datadog_on_call_escalation_policy Resource - terraform-provider-datadog + examples: + - name: policy_test + manifest: |- + { + "name": "Policy Name", + "resolve_page_on_policy_end": true, + "retries": 3, + "step": [ + { + "assignment": "round-robin", + "escalate_after_seconds": 300, + "target": [ + { + "team": "00000000-aba2-0000-0000-000000000000" + }, + { + "user": "00000000-aba2-0000-0000-000000000000" + }, + { + "schedule": "00000000-aba2-0000-0000-000000000000" + } + ] + } + ] + } + argumentDocs: + assignment: (String) Specifies how this escalation step will assign targets. Can be default (page all targets at once) or round-robin. Valid values are assignment, round-robin. Defaults to "default". + escalate_after_seconds: (Number) Defines how many seconds to wait before escalating to the next step. Value must be between 60 and 36000. + id: (String) The ID of this resource. + name: (String) A human-readable name for the escalation policy. + resolve_page_on_policy_end: (Boolean) If true, pages will be automatically resolved if unacknowledged after the final step. Defaults to false. + retries: (Number) If set, policy will be retried this many times after the final step. Must be in the range 0-10. Value must be between 0 and 10. Defaults to 0. + schedule: (String) Targeted schedule ID. + step: (Block List) List of steps for the escalation policy. (see below for nested schema) + target: (Block List) List of targets for the step. (see below for nested schema) + team: (String) Targeted team ID. + teams: (List of String) A list of team ids associated with the escalation policy. + user: (String) Targeted user ID. + importStatements: + - |- + # Import an existing on_call_schedule + terraform import datadog_on_call_schedule.test "b03a07d5-49da-43e9-83b4-5d84969b588b" + datadog_on_call_schedule: + subCategory: "" + description: Provides a Datadog On-Call schedule resource. This can be used to create and manage Datadog On-Call schedules. + name: datadog_on_call_schedule + title: datadog_on_call_schedule Resource - terraform-provider-datadog + examples: + - name: test + manifest: |- + { + "layer": [ + { + "effective_date": "2025-01-01T00:00:00Z", + "end_date": "2026-01-01T00:00:00Z", + "interval": [ + { + "days": 1, + "seconds": 300 + } + ], + "name": "Primary On-Call Layer", + "restriction": [ + { + "end_day": "monday", + "end_time": "17:00:00", + "start_day": "monday", + "start_time": "09:00:00" + } + ], + "rotation_start": "2025-01-01T00:00:00Z", + "users": [ + "00000000-aba1-0000-0000-000000000000" + ] + } + ], + "name": "Team A On-Call", + "teams": [ + "00000000-aba2-0000-0000-000000000000" + ], + "time_zone": "America/New_York" + } + argumentDocs: + days: (Number) The number of full days in each rotation period. + effective_date: (String) The date/time when this layer should become active (in ISO 8601). + end_date: (String) The date/time after which this layer no longer applies (in ISO 8601). + end_day: (String) The weekday when the restriction period ends. Valid values are monday, tuesday, wednesday, thursday, friday, saturday, sunday. + end_time: (String) The time of day when the restriction ends (hh:mm:ss). + id: (String) The ID of this resource. + interval: (Block, Optional) (see below for nested schema) + layer: (Block List) List of layers for the schedule. (see below for nested schema) + name: (String) A human-readable name for the new schedule. + restriction: (Block List) List of restrictions for the layer. (see below for nested schema) + rotation_start: (String) The date/time when the rotation for this layer starts (in ISO 8601). + seconds: (Number) For intervals that are not expressible in whole days, this will be added to days. Defaults to 0. + start_day: (String) The weekday when the restriction period starts. Valid values are monday, tuesday, wednesday, thursday, friday, saturday, sunday. + start_time: (String) The time of day when the restriction begins (hh:mm:ss). + teams: (List of String) A list of team ids associated with the schedule. + time_zone: (String) The time zone in which the schedule is defined. + users: (List of String) List of user IDs for the layer. Can either be a valid user id or null + importStatements: + - |- + # Import an existing on_call_schedule + terraform import datadog_on_call_schedule.test "b03a07d5-49da-43e9-83b4-5d84969b588b" + datadog_on_call_team_routing_rules: + subCategory: "" + description: Provides a Datadog On-Call team routing rules resource. + name: datadog_on_call_team_routing_rules + title: datadog_on_call_team_routing_rules Resource - terraform-provider-datadog + examples: + - name: team_rules_test + manifest: |- + { + "id": "00000000-aba2-0000-0000-000000000000", + "rule": [ + { + "action": [ + { + "send_slack_message": [ + { + "channel": "channel", + "workspace": "workspace" + } + ] + } + ], + "query": "tags.service:test", + "time_restrictions": [ + { + "restriction": [ + { + "end_day": "monday", + "end_time": "17:00:00", + "start_day": "monday", + "start_time": "09:00:00" + } + ], + "time_zone": "America/New_York" + } + ] + }, + { + "escalation_policy": "00000000-aba2-0000-0000-000000000000", + "urgency": "dynamic" + } + ] + } + argumentDocs: + action: (Block List) Specifies the list of actions to perform when the routing rule is matched. (see below for nested schema) + channel: (String) Slack channel ID. + end_day: (String) The weekday when the restriction period ends. Valid values are monday, tuesday, wednesday, thursday, friday, saturday, sunday. + end_time: (String) The time of day when the restriction ends (hh:mm:ss). + escalation_policy: (String) ID of the policy to be applied when this routing rule matches. + id: (String) ID of the team to associate the routing rules with. + query: (String) Defines the query or condition that triggers this routing rule. Defaults to "". + restriction: (Block List) List of restrictions for the rule. (see below for nested schema) + rule: (Block List) List of team routing rules. (see below for nested schema) + send_slack_message: (Block, Optional) (see below for nested schema) + send_teams_message: (Block, Optional) (see below for nested schema) + start_day: (String) The weekday when the restriction period starts. Valid values are monday, tuesday, wednesday, thursday, friday, saturday, sunday. + start_time: (String) The time of day when the restriction begins (hh:mm:ss). + team: (String) Teams team ID. + tenant: (String) Teams tenant ID. + time_restrictions: (Block, Optional) Holds time zone information and a list of time restrictions for a routing rule. (see below for nested schema) + time_zone: (String) Specifies the time zone applicable to the restrictions, e.g. America/New_York. + urgency: (String) Defines the urgency for pages created via this rule. Only valid if escalation_policy is set. Valid values are high, low, dynamic. + workspace: (String) Slack workspace ID. + importStatements: + - |- + # Import an existing on_call_schedule + terraform import datadog_on_call_team_routing_rules.test "b03a07d5-49da-43e9-83b4-5d84969b588b" datadog_openapi_api: subCategory: "" - description: Provides a Datadog OpenapiApi resource. This can be used to create and manage Datadog openapi_api. + description: 'Deprecated: use the datadog_software_catalog resource https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/software_catalog instead. Provides a Datadog OpenAPI resource. This can be used to synchronize Datadog''s API catalog https://docs.datadoghq.com/api_catalog/ with an OpenAPI https://www.openapis.org/ specifications file.' name: datadog_openapi_api title: datadog_openapi_api Resource - terraform-provider-datadog examples: @@ -2952,8 +4228,8 @@ resources: "spec": "${file(\"./path/my-api.yaml\")}" } argumentDocs: - id: (String) The ID of this resource. - spec: (String) The OpenAPI spec. + id: (String) The API ID of this resource in Datadog. + spec: (String) The textual content of the OpenAPI specification. Use file() in order to reference another file in the repository (see exmaple). importStatements: - terraform import datadog_openapi_api.new_list "90646597-5fdb-4a17-a240-647003f8c028" datadog_organization_settings: @@ -2984,6 +4260,7 @@ resources: 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)' + security_contacts: (List of String) List of emails used for security event notifications from the organization. settings: '(Block List, Max: 1) Organization settings (see below for nested schema)' importStatements: - terraform import datadog_organization_settings.organization 11111111-2222-3333-4444-555555555555 @@ -3028,11 +4305,6 @@ resources: } ] } - 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. @@ -3049,12 +4321,15 @@ resources: 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. + canonical: '(Block List, Max: 1) Canonical Units (see below for nested schema)' + cell_display_mode: (String) A list of display modes for each table cell. Valid values are number, bar, trend. + cell_display_mode_options: '(Block List, Max: 1) A list of display modes for each table cell. (see below for nested schema)' 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)' + clustering_pattern_field_path: (String) Specifies the field for logs pattern clustering. Can only be used with logs_pattern_stream. 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. @@ -3067,14 +4342,18 @@ resources: 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. + cross_org_uuids: (List of String) The source organization UUID for cross organization queries. Feature in Private Beta. + custom: '(Block List, Max: 1) Use custom (non canonical metrics) (see below for nested schema)' 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_links: (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: (Block List) The display mode for the widget. (see below for nested schema) 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)' @@ -3147,8 +4426,9 @@ resources: 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) + match: '(Block List, Min: 1, Max: 1) Match rule for the table widget text format. (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. + measure: (String) SLO measures queries. Valid values are good_events, bad_events, good_minutes, bad_minutes, 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. @@ -3161,6 +4441,7 @@ resources: 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)' + number_format: '(Block List, Max: 1) Number formatting options for the formula. (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. @@ -3170,6 +4451,7 @@ resources: 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. + per_unit_name: (String) per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second' 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. @@ -3180,6 +4462,7 @@ resources: 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)' + replace: '(Block List, Max: 1) Match rule for the table widget text format. (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. @@ -3190,6 +4473,7 @@ resources: 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.' + scaling: (String) The scaling mode for the widget. Valid values are absolute, relative. 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. @@ -3221,13 +4505,14 @@ resources: 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". + slo_query_type: (String) type of the SLO to query. Valid values are metric, monitor, time_slice. 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)' + substring: (String) Text that will be replaced. Must be used with type substring. 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. @@ -3237,6 +4522,8 @@ resources: 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. + text_format: (Block List) The text format to apply to the items in a table widget column. (see below for nested schema) + text_formats: (Block List) Text formats define how to format text in table widget content. Multiple text_formats blocks are allowed using the structure below. This resource is in beta and is subject to change. (see below for nested schema) 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. @@ -3250,8 +4537,11 @@ resources: 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. + trend_type: (String) The type of trend line to display. Valid values are area, line, bars. + type: (String) Match or compare option. Valid values are is, is_not, contains, does_not_contain, starts_with, ends_with. unit: (String) The unit for the value displayed in the widget. + unit_name: (String) Unit name. It should be in singular form ('megabyte' and not 'megabytes') + unit_scale: '(Block List, Max: 1) (see below for nested schema)' 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. @@ -3263,11 +4553,13 @@ resources: 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. + with: (String) Table Widget Match String. 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)' + y_scale: (String) The scale of the y-axis. Valid values are shared, independent. + yaxis: '(Block List, Max: 1) A nested block describing the Y-Axis Controls. Exactly one nested block is allowed using the structure below. (see below for nested schema)' importStatements: - terraform import datadog_powerpack.foo 11111111-2222-3333-4444-555555555555 datadog_restriction_policy: @@ -3298,11 +4590,11 @@ resources: 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.' + 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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field.' 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 "" + - 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. @@ -3325,6 +4617,7 @@ resources: references: permission.id: data.datadog_permissions.bar.permissions.monitors_write argumentDocs: + default_permissions_opt_out: (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. The include_restricted attribute for the datadog_permissions data source must be set to true to manage default permissions in Terraform. 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) @@ -3353,6 +4646,118 @@ resources: 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_rum_metric: + subCategory: "" + description: Provides a Datadog RumMetric resource. This can be used to create and manage Datadog rum_metric. + name: datadog_rum_metric + title: datadog_rum_metric Resource - terraform-provider-datadog + examples: + - name: testing_rum_metric + manifest: |- + { + "compute": [ + { + "aggregation_type": "distribution", + "include_percentiles": true, + "path": "@duration" + } + ], + "event_type": "session", + "filter": [ + { + "query": "@service:web-ui" + } + ], + "group_by": [ + { + "path": "@browser.name", + "tag_name": "browser_name" + } + ], + "name": "testing.rum.metric", + "uniqueness": [ + { + "when": "match" + } + ] + } + argumentDocs: + aggregation_type: (String) The type of aggregation to use. + compute: (Block, Optional) (see below for nested schema) + event_type: (String) The type of RUM events to filter on. + 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 aggregation_type is distribution. + name: (String) The name of the RUM-based metric. This field can't be updated after creation. + path: (String) The path to the value the RUM-based metric will aggregate on. Only present when aggregation_type is distribution. + query: (String) The search query. Follows RUM search syntax. + tag_name: (String) Name of the tag that gets created. By default, path is used as the tag name. + uniqueness: (Block, Optional) (see below for nested schema) + when: (String) When to count updatable events. match when the event is first seen, or end when the event is complete. + importStatements: + - terraform import datadog_rum_metric.testing_rum_metric "testing.rum.metric" + datadog_rum_retention_filter: + subCategory: "" + description: Provides a Datadog RumRetentionFilter resource. This can be used to create and manage Datadog rum_retention_filter. + name: datadog_rum_retention_filter + title: datadog_rum_retention_filter Resource - terraform-provider-datadog + examples: + - name: testing_rum_retention_filter + manifest: |- + { + "application_id": "\u003cAPPLICATION_ID\u003e", + "enabled": false, + "event_type": "session", + "name": "testing.rum.retention_filter", + "query": "@session.has_replay:true", + "sample_rate": 41 + } + argumentDocs: + application_id: (String) RUM application ID. + enabled: (Boolean) Whether the retention filter is to be enabled. Defaults to true. + event_type: (String) The type of RUM events to filter on. + id: (String) The ID of this resource. + name: (String) The name of a RUM retention filter. + query: (String) The Query string for a RUM retention filter. Defaults to "". + sample_rate: (Number) The sample rate for a RUM retention filter, between 0 and 100. + importStatements: + - terraform import datadog_rum_retention_filter.testing_rum_retention_filter ":" + datadog_rum_retention_filters_order: + subCategory: "" + description: Provides a Datadog RumRetentionFiltersOrder resource. This is used to manage the order of Datadog RUM retention filters. Please note that retention_filter_ids should contain all IDs of retention filters, including the default ones created internally for a given RUM application. + name: datadog_rum_retention_filters_order + title: datadog_rum_retention_filters_order Resource - terraform-provider-datadog + examples: + - name: my_rum_retention_filters_order + manifest: |- + { + "application_id": "${resource.datadog_rum_application.my_rum_application.id}", + "retention_filter_ids": "${concat(\n [for rf in data.datadog_rum_retention_filters.my_retention_filters.retention_filters :\n rf.id if startswith(rf.id, \"default\")\n ],\n [datadog_rum_retention_filter.new_rum_retention_filter.id],\n [for rf in data.datadog_rum_retention_filters.my_retention_filters.retention_filters :\n rf.id if !startswith(rf.id, \"default\") \u0026\u0026 rf.id != datadog_rum_retention_filter.new_rum_retention_filter.id\n ])}" + } + references: + application_id: resource.datadog_rum_application.my_rum_application.id + dependencies: + datadog_rum_application.my_rum_application: |- + { + "name": "my-rum-application-test", + "type": "browser" + } + datadog_rum_retention_filter.new_rum_retention_filter: |- + { + "application_id": "${resource.datadog_rum_application.my_rum_application.id}", + "enabled": true, + "event_type": "action", + "name": "testing.rum.retention_filter", + "query": "@session.has_replay:true", + "sample_rate": 60 + } + argumentDocs: + application_id: (String) RUM application ID. + id: (String) The ID of this resource. + retention_filter_ids: (List of String) RUM retention filter ID list. The order of IDs in this attribute defines the order of RUM retention filters. + importStatements: + - terraform import datadog_rum_retention_filters_order.testing_rum_retention_filters_order "" 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. @@ -3375,6 +4780,7 @@ resources: 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)' + custom_tags: (Set of String) Custom tags for generated signals. 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) @@ -3457,6 +4863,7 @@ resources: "query": [ { "aggregation": "count", + "data_source": "logs", "group_by_fields": [ "host" ], @@ -3465,6 +4872,7 @@ resources: }, { "aggregation": "count", + "data_source": "logs", "group_by_fields": [ "host" ], @@ -3477,34 +4885,40 @@ resources: ] } argumentDocs: - action: (String) The type of filtering action. Valid values are require, suppress. + action: (Block List) Action to perform when the case trigger (see below for nested schema) 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)' + check_presence: (Boolean) Whether to include or exclude logs that match the reference table. + column_name: (String) The name of the column in the reference table. 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 "". + data_source: (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". 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". + detection_method: (String) The detection method. Valid values are threshold, new_value, anomaly_detection, impossible_travel, hardcoded, third_party, anomaly_threshold. Defaults to "threshold". distinct_fields: (List of String) Field for which the cardinality is measured. Sent as an array. + duration: (Number) Duration of the action in seconds. 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. + 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, 10800, 21600, 43200, 86400. 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) + filter: '(Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (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. + group_signals_by: (List of String) Additional grouping to perform on top of the query grouping. 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. + 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, 43200, 86400. 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. + log_field_path: (String) The field in the log that should be matched against the reference table. 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. @@ -3514,19 +4928,39 @@ resources: 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) + reference_tables: (Block List) Reference tables for filtering query results. (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. + rule_query_name: (String) The name of the query to filter. 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. + table_name: (String) The name of the reference table. + tags: '(Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource.' 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". + validate: (Boolean) Whether or not to validate the Rule. 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_rule_json: + subCategory: "" + description: Provides a Datadog Security Monitoring Rule JSON resource. This can be used to create and manage Datadog security monitoring rules using raw JSON. + name: datadog_security_monitoring_rule_json + title: datadog_security_monitoring_rule_json Resource - terraform-provider-datadog + examples: + - name: security_rule_json + manifest: |- + { + "rule": "{\n \"name\": \"High error rate security monitoring\",\n \"isEnabled\": true,\n \"type\": \"log_detection\",\n \"message\": \"High error rate detected in logs\",\n \"tags\": [\"env:prod\", \"security\"],\n \"cases\": [\n {\n \"name\": \"high case\",\n \"status\": \"high\",\n \"condition\": \"errors \u003e 100 \u0026\u0026 warnings \u003e 1000\",\n \"notifications\": [\"@security-team\"]\n }\n ],\n \"queries\": [\n {\n \"name\": \"errors\",\n \"query\": \"status:error\",\n \"aggregation\": \"count\",\n \"dataSource\": \"logs\",\n \"groupByFields\": [\"service\", \"env\"]\n },\n {\n \"name\": \"warnings\",\n \"query\": \"status:warning\",\n \"aggregation\": \"count\",\n \"dataSource\": \"logs\",\n \"groupByFields\": [\"service\", \"env\"]\n }\n ],\n \"options\": {\n \"evaluationWindow\": 300,\n \"keepAlive\": 600,\n \"maxSignalDuration\": 900,\n \"detectionMethod\": \"threshold\"\n }\n}\n" + } + argumentDocs: + id: (String) The ID of this resource. + json: (String) The JSON definition of the Security Monitoring Rule. + importStatements: + - terraform import datadog_security_monitoring_rule_json.security_rule_json aaa-yyy-vvv 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. @@ -3536,25 +4970,96 @@ resources: - name: my_suppression manifest: |- { - "description": "Suppression for low severity CloudTrail signals from test environments limited to 2024", + "data_exclusion_query": "env:test", + "description": "Suppression for low severity CloudTrail signals from John Doe, excluding test environments from analysis, 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" + "start_date": "2024-12-01T16:00:00Z", + "suppression_query": "@usr.id:john.doe" } argumentDocs: + data_exclusion_query: (String) An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule. 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. + start_date: (String) A RFC3339 timestamp giving a start date for the suppression rule. Before this date, it doesn't suppress signals. + suppression_query: (String) The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer. importStatements: - |- # Security monitoring suppressions can be imported using ID, for example: terraform import datadog_security_monitoring_suppression.my_suppression m0o-hto-lkb + datadog_security_notification_rule: + subCategory: "" + description: Provides a Datadog Security Monitoring Notification Rule API resource for creating and managing Datadog security notification rules. + name: datadog_security_notification_rule + title: datadog_security_notification_rule Resource - terraform-provider-datadog + examples: + - name: signal_rule + manifest: |- + { + "enabled": false, + "name": "My signal notification rule", + "selectors": [ + { + "query": "env:prod", + "rule_types": [ + "workload_security" + ], + "trigger_source": "security_signals" + } + ], + "targets": [ + "@bob@email.com", + "@alice@email.com" + ] + } + - name: vulnerability_rule + manifest: |- + { + "name": "My vulnerability notification rule", + "selectors": [ + { + "rule_types": [ + "application_library_vulnerability", + "identity_risk" + ], + "severities": [ + "critical", + "high" + ], + "trigger_source": "security_findings" + } + ], + "targets": [ + "@john@email.com" + ], + "time_aggregation": 36000 + } + argumentDocs: + created_at: (Number) Indicates when this rule was created. + created_by_handle: (String) The handle of the rule creator. + created_by_name: (String) The name of the rule creator. + enabled: (Boolean) Indicates whether the rule is enabled. Defaults to true. + id: (String) The ID of this resource. + modified_at: (Number) Indicates when this rule was last modified. + modified_by_handle: (String) The handle of the rule last modifier. + modified_by_name: (String) The name of the rule last modifier. + name: (String) The name of the rule (must be unique). + query: (String) Comprises one or several key:value pairs for filtering security issues based on tags and attributes. Defaults to "". + rule_types: (Set of String) Specifies security rule types for filtering signals and vulnerabilities that generate notifications. + selectors: (Block, Optional) Defines selectors to filter security issues that generate notifications. (see below for nested schema) + severities: (Set of String) The security rules severities to consider. + targets: (Set of String) The list of handle targets for the notifications. A target must be prefixed with an @. It can be an email address (@bob@email.com), or any installed integration. For example, a Slack recipient (@slack-ops), or a Teams recipient (@teams-ops). + time_aggregation: (Number) Specifies the time period, in seconds, used to aggregate the notification. Defaults to 0. + trigger_source: (String) The type of security issues the rule applies to. Use security_signals for rules based on security signals and security_findings for those based on vulnerabilities. + version: (Number) The rule version (incremented at each update). + importStatements: + - terraform import datadog_security_notification_rule.signal_rule yq9-t9l-bso datadog_sensitive_data_scanner_group: subCategory: "" description: Provides a Sensitive Data Scanner group resource. @@ -3585,7 +5090,7 @@ resources: 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 "" + - 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. @@ -3608,7 +5113,7 @@ resources: - 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. + 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. name: datadog_sensitive_data_scanner_rule title: datadog_sensitive_data_scanner_rule Resource - terraform-provider-datadog examples: @@ -3637,6 +5142,7 @@ resources: ], "name": "My new rule", "pattern": "myregex", + "priority": 1, "tags": [ "sensitive_data:true" ], @@ -3665,7 +5171,49 @@ resources: "apm" ] } - - name: mylibraryrule + - name: mylibraryrule_with_custom_included_keywords + manifest: |- + { + "description": "A 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, + "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" + ] + } + - name: mylibraryrule_with_recommended_keywords manifest: |- { "description": "A description", @@ -3704,20 +5252,21 @@ resources: 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)' + 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. If the rule has the standard_pattern_id field, then discarding this field will apply the recommended keywords. 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. + priority: (Number) Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). 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 "" + - 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. @@ -3733,12 +5282,14 @@ resources: "${data.datadog_role.ro_role.id}" ] } + references: + 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. + roles: (Set of String) A list of 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: @@ -3759,6 +5310,7 @@ resources: 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. + scopes: (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. service_account_id: (String) ID of the service account that owns this key. importStatements: - |- @@ -3929,17 +5481,18 @@ resources: 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)' + query_interval_seconds: (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. 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' + 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. If default tags are present at the provider level, they will be added to this resource.' 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)' + 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. Optionally, a fourth part, the query interval, can be provided. (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. + validate: (Boolean) Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. 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. @@ -4036,6 +5589,37 @@ resources: 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_software_catalog: + subCategory: "" + description: Provides a Datadog Software Catalog Entity resource. This can be used to create and manage entities in Datadog Software Catalog using the YAML/JSON definition. + name: datadog_software_catalog + title: datadog_software_catalog Resource - terraform-provider-datadog + examples: + - name: service_v3 + manifest: |- + { + "entity": "apiVersion: v3\nkind: service\nmetadata:\n name: shopping-cart\n displayName: Shopping Cart\n inheritFrom: service:otherService\n tags:\n - tag:value\n links:\n - name: shopping-cart runbook\n type: runbook\n url: https://runbook/shopping-cart\n - name: shopping-cart architecture\n provider: gdoc\n url: https://google.drive/shopping-cart-architecture\n type: doc\n - name: shopping-cart Wiki\n provider: wiki\n url: https://wiki/shopping-cart\n type: doc\n - name: shopping-cart source code\n provider: github\n url: http://github/shopping-cart\n type: repo\n contacts:\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\n owner: myteam\n additionalOwners:\n - name: opsTeam\n type: operator\nintegrations:\n pagerduty:\n serviceURL: https://www.pagerduty.com/service-directory/Pshopping-cart\n opsgenie:\n serviceURL: https://www.opsgenie.com/service/shopping-cart\n region: US\nextensions:\n datadoghq.com/shopping-cart:\n customField: customValue\nspec:\n lifecycle: production\n tier: \"1\"\n type: web\n languages:\n - go\n - python\n dependsOn:\n - service:serviceA\n - service:serviceB\ndatadog:\n performanceData:\n tags:\n - 'service:shopping-cart'\n - 'hostname:shopping-cart'\n events:\n - name: \"deployment events\"\n query: \"app:myapp AND type:github\"\n - name: \"event type B\"\n query: \"app:myapp AND type:github\"\n logs:\n - name: \"critical logs\"\n query: \"app:myapp AND type:github\"\n - name: \"ops logs\"\n query: \"app:myapp AND type:github\"\n pipelines:\n fingerprints:\n - fp1\n - fp2\n codeLocations:\n - repositoryURL: http://github/shopping-cart.git\n paths:\n - baz/*.c\n - bat/**/*\n - ../plop/*.java\n - repositoryURL: http://github/shopping-cart-2.git\n paths:\n - baz/*.c\n - bat/**/*\n - ../plop/*.java\n" + } + - name: datastore_v3 + manifest: |- + { + "entity": "apiVersion: v3\nkind: datastore\nmetadata:\n name: shopping-cart-db\n tags:\n - tag:value\n links:\n - name: shopping-cart-db runbook\n type: runbook\n url: https://runbook/shopping-cart\n contacts:\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\n owner: myteam\n additionalOwners:\n - name: opsTeam\n type: operator\nintegrations:\n pagerduty:\n serviceURL: https://www.pagerduty.com/service-directory/Pshopping-cart\n opsgenie:\n serviceURL: https://www.opsgenie.com/service/shopping-cart\n region: US\nextensions:\n datadoghq.com/shopping-cart-db:\n customField: customValue\nspec:\n lifecycle: production\n tier: \"1\"\n type: \"postgres\"\ndatadog:\n performanceData:\n tags: ['tag:random']\n" + } + - name: queue_v3 + manifest: |- + { + "entity": "apiVersion: v3\nkind: queue\nmetadata:\n name: order-queue\n tags:\n - tag:value\n links:\n - name: order-queue runbook\n type: runbook\n url: https://runbook/order-queue\n contacts:\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\n owner: myteam\n additionalOwners:\n - name: opsTeam\n type: operator\nintegrations:\n pagerduty:\n serviceURL: https://www.pagerduty.com/service-directory/Pshopping-cart\n opsgenie:\n serviceURL: https://www.opsgenie.com/service/shopping-cart\n region: US\nextensions:\n datadoghq.com/order-queue:\n customField: customValue\nspec:\n lifecycle: production\n tier: \"1\"\n type: kafka\ndatadog:\n performanceData:\n tags: ['tag:random']\n" + } + - name: system_v3 + manifest: |- + { + "entity": "apiVersion: v3\nkind: system\nmetadata:\n name: shopping-system\n displayName: Shopping System\n tags:\n - tag:value\n links:\n - name: shopping-system runbook\n type: runbook\n url: https://runbook/shopping-system\n contacts:\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\n owner: myteam\n additionalOwners:\n - name: opsTeam\n type: operator\nintegrations:\n pagerduty:\n serviceURL: https://www.pagerduty.com/service-directory/Pshopping-cart\n opsgenie:\n serviceURL: https://www.opsgenie.com/service/shopping-cart\n region: US\nspec:\n components:\n - service:shopping-cart\n - queue:order-queue\n - database:shopping-cart-db\nextensions:\n datadoghq.com/shopping-system:\n customField: customValue\ndatadog:\n events:\n - name: \"deployment events\"\n query: \"app:myapp AND type:github\"\n - name: \"event type B\"\n query: \"app:myapp AND type:github\"\n logs:\n - name: \"critical logs\"\n query: \"app:myapp AND type:github\"\n - name: \"ops logs\"\n query: \"app:myapp AND type:github\"\n" + } + argumentDocs: + entity: (String) The catalog entity definition. Entity must be a valid entity YAML/JSON structure. + id: (String) The ID of this resource. + importStatements: + - terraform import datadog_software_catalog.this datadog_spans_metric: subCategory: "" description: Provides a Datadog SpansMetric resource. This can be used to create and manage Datadog spans_metric. @@ -4091,7 +5675,7 @@ resources: } 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. + on_demand_concurrency_cap: (Number) Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. 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. @@ -4114,23 +5698,25 @@ resources: "value": "variable-value" } argumentDocs: - description: (String) Description of the global variable. - digits: (Number) Number of digits for the OTP. + description: (String) Description of the global variable. Defaults to "". + digits: (Number) Number of digits for the OTP. Value must be between 4 and 10. field: (String) Required when type = http_header. Defines the header to use to extract the value id: (String) The ID of this resource. + is_fido: (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + is_totp: (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. 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)' + name: (String) Synthetics global variable name. Must be all uppercase with underscores. + options: (Block List) 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. + parse_test_options: (Block List) ID of the Synthetics test to use a source of the global variable value. (see below for nested schema) + parser: (Block List) (see below for nested schema) + refresh_interval: (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + restricted_roles: (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + secure: (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. 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. + totp_parameters: (Block List) 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, http_status_code, local_variable. + value: (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. importStatements: - |- # Synthetics global variables can be imported using their string ID, e.g. @@ -4152,12 +5738,13 @@ resources: ] } argumentDocs: + api_key: (String, Sensitive) API key used to generate the private location configuration. 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. + description: (String) Description of the private location. Defaults to "". id: (String) The ID of this resource. - metadata: '(Block List, Max: 1) The private location metadata (see below for nested schema)' + metadata: (Block List) 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. + restricted_roles: (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. tags: (List of String) A list of tags to associate with your synthetics private location. importStatements: - |- @@ -4237,6 +5824,7 @@ resources: { "monitor_options": [ { + "escalation_message": "test escalation message", "renotify_interval": 120 } ], @@ -4292,7 +5880,7 @@ resources: "request_definition": [ { "host": "example.org", - "port": 443 + "port": "443" } ], "status": "live", @@ -4334,7 +5922,7 @@ resources: "request_definition": [ { "host": "example.org", - "port": 443 + "port": "443" } ], "status": "live", @@ -4381,6 +5969,66 @@ resources: ], "type": "api" } + - name: test_api_icmp + manifest: |- + { + "assertion": [ + { + "operator": "is", + "target": "0", + "type": "packetLossPercentage" + }, + { + "operator": "lessThan", + "property": "avg", + "target": "1000", + "type": "latency" + }, + { + "operator": "moreThanOrEqual", + "target": "1", + "type": "packetsReceived" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "name": "ICMP Test on example.com", + "options_list": [ + { + "monitor_options": [ + { + "renotify_interval": 120 + } + ], + "retry": [ + { + "count": 2, + "interval": 300 + } + ], + "tick_every": 900 + } + ], + "request_definition": [ + { + "host": "example.com", + "no_saving_response_body": "false", + "number_of_packets": "1", + "persist_cookies": "false", + "should_track_hops": "false", + "timeout": "0" + } + ], + "status": "live", + "subtype": "icmp", + "tags": [ + "foo:bar", + "foo", + "env:test" + ], + "type": "api" + } - name: test_multi_step manifest: |- { @@ -4397,7 +6045,7 @@ resources: "request_definition": [ { "method": "GET", - "url": "https://example.org" + "url": "https://www.example.org" } ], "request_headers": { @@ -4422,6 +6070,48 @@ resources: } ], "subtype": "http" + }, + { + "assertion": [ + { + "operator": "is", + "property": "X-Header", + "target": "test", + "type": "grpcMetadata" + } + ], + "name": "A gRPC health check on example.org", + "request_definition": [ + { + "call_type": "healthcheck", + "host": "example.org", + "port": "443", + "service": "greeter.Greeter" + } + ], + "subtype": "grpc" + }, + { + "assertion": [ + { + "operator": "is", + "target": "1", + "type": "grpcHealthcheckStatus" + } + ], + "name": "A gRPC behavior check on example.org", + "request_definition": [ + { + "call_type": "unary", + "host": "example.org", + "message": "{\"name\": \"John\"}", + "method": "SayHello", + "plain_proto_file": "syntax = \"proto3\";\n\npackage greeter;\n\n// The greeting service definition.\nservice Greeter {\n // Sends a greeting\n rpc SayHello (HelloRequest) returns (HelloReply) {}\n}\n\n// The request message containing the user's name.\nmessage HelloRequest {\n string name = 1;\n}\n\n// The response message containing the greetings\nmessage HelloReply {\n string message = 1;\n}\n", + "port": "443", + "service": "greeter.Greeter" + } + ], + "subtype": "grpc" } ], "locations": [ @@ -4465,6 +6155,35 @@ resources: } ], "type": "assertFileDownload" + }, + { + "name": "Upload a file", + "params": [ + { + "element": "*[@id='simple-file-upload']", + "element_user_locator": [ + { + "value": [ + { + "type": "css", + "value": "#simple-file-upload" + } + ] + } + ], + "files": "${jsonencode([{\n name = \"hello.txt\" // Name of the file\n size = 11 // Size of the file in bytes\n content = \"Hello world\" // Content of the file\n }])}" + } + ], + "type": "uploadFiles" + }, + { + "name": "Test sending http requests", + "params": [ + { + "requests": "${jsonencode(\n {\n count = {\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 url = \"https://www.example.org\"\n }\n )}" + } + ], + "type": "assertRequests" } ], "browser_variable": [ @@ -4502,14 +6221,186 @@ resources: "request_definition": [ { "method": "GET", - "url": "https://app.datadoghq.com" + "url": "https://www.example.org" } ], "status": "paused", "tags": [], "type": "browser" } - - name: grpc + - name: test_mobile + manifest: |- + { + "config_initial_application_arguments": { + "test_process_argument": "test1" + }, + "config_variable": [ + { + "example": "123", + "name": "VARIABLE_NAME", + "pattern": "{{numeric(3)}}", + "secure": false, + "type": "text" + } + ], + "device_ids": [ + "synthetics:mobile:device:apple_iphone_14_plus_ios_16" + ], + "locations": [ + "aws:eu-central-1" + ], + "message": "Notify @datadog.user", + "mobile_options_list": [ + { + "allow_application_crash": false, + "ci": [ + { + "execution_rule": "blocking" + } + ], + "default_step_timeout": 10, + "device_ids": [ + "synthetics:mobile:device:apple_iphone_14_plus_ios_16" + ], + "disable_auto_accept_alert": true, + "min_failure_duration": 0, + "mobile_application": [ + { + "application_id": "5f055d15-0000-aaaa-zzzz-6739f83346aa", + "reference_id": "434d4719-0000-aaaa-zzzz-31082b544718", + "reference_type": "version" + } + ], + "monitor_name": "mobile-test-monitor", + "monitor_options": [ + { + "escalation_message": "test escalation message", + "notification_preset_name": "show_all", + "renotify_interval": 10, + "renotify_occurrences": 3 + } + ], + "monitor_priority": 5, + "no_screenshot": true, + "retry": [ + { + "count": 0, + "interval": 300 + } + ], + "scheduling": [ + { + "timeframes": [ + { + "day": 5, + "from": "07:00", + "to": "16:00" + }, + { + "day": 7, + "from": "07:00", + "to": "16:00" + } + ], + "timezone": "UTC" + } + ], + "tick_every": 43200 + } + ], + "mobile_step": [ + { + "allow_failure": false, + "has_new_step_element": false, + "is_critical": true, + "name": "Tap on StaticText \"Tap\"", + "no_screenshot": false, + "params": [ + { + "element": [ + { + "context": "NATIVE_APP", + "context_type": "native", + "element_description": "\u003cXCUIElementTypeStaticText value=\"Tap\" name=\"Tap\" label=\"Tap\"\u003e", + "multi_locator": {}, + "relative_position": [ + { + "x": 0.07256155303030302, + "y": 0.41522381756756754 + } + ], + "text_content": "Tap", + "user_locator": [ + { + "fail_test_on_cannot_locate": false, + "values": [ + { + "type": "id", + "value": "some_id" + } + ] + } + ], + "view_name": "StaticText" + } + ] + } + ], + "timeout": 100, + "type": "tap" + }, + { + "allow_failure": false, + "has_new_step_element": false, + "is_critical": true, + "name": "Test View \"Tap\" content", + "no_screenshot": false, + "params": [ + { + "check": "contains", + "element": [ + { + "context": "NATIVE_APP", + "context_type": "native", + "element_description": "\u003cXCUIElementTypeOther name=\"Tap\" label=\"Tap\"\u003e", + "multi_locator": {}, + "relative_position": [ + { + "x": 0.27660448306074764, + "y": 0.6841517857142857 + } + ], + "text_content": "Tap", + "user_locator": [ + { + "fail_test_on_cannot_locate": false, + "values": [ + { + "type": "id", + "value": "some_id" + } + ] + } + ], + "view_name": "View" + } + ], + "value": "Tap" + } + ], + "timeout": 100, + "type": "assertElementContent" + } + ], + "name": "A Mobile test on example.org", + "status": "paused", + "tags": [ + "foo:bar", + "baz" + ], + "type": "mobile" + } + - name: test_grpc_unary manifest: |- { "assertion": [ @@ -4538,30 +6429,73 @@ resources: "locations": [ "aws:eu-central-1" ], - "message": "Notify @datadog.user", - "name": "GRPC API test", + "name": "GRPC API behavior check test", "options_list": [ { - "tick_every": 60 + "tick_every": 900 } ], "request_definition": [ { - "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" + "call_type": "unary", + "host": "example.org", + "message": "{\"name\": \"John\"}", + "method": "SayHello", + "plain_proto_file": "syntax = \"proto3\";\n\npackage greeter;\n\n// The greeting service definition.\nservice Greeter {\n // Sends a greeting\n rpc SayHello (HelloRequest) returns (HelloReply) {}\n}\n\n// The request message containing the user's name.\nmessage HelloRequest {\n string name = 1;\n}\n\n// The response message containing the greetings\nmessage HelloReply {\n string message = 1;\n}\n", + "port": "443", + "service": "greeter.Greeter" } ], "request_metadata": { "header": "value" }, - "status": "paused", + "status": "live", "subtype": "grpc", "tags": [ "foo:bar", - "baz" + "foo", + "env:test" + ], + "type": "api" + } + - name: test_grpc_health + manifest: |- + { + "assertion": [ + { + "operator": "lessThan", + "target": "2000", + "type": "responseTime" + }, + { + "operator": "is", + "target": 1, + "type": "grpcHealthcheckStatus" + } + ], + "locations": [ + "aws:eu-central-1" + ], + "name": "GRPC API health check test", + "options_list": [ + { + "tick_every": 900 + } + ], + "request_definition": [ + { + "call_type": "healthcheck", + "host": "example.org", + "port": "443", + "service": "greeter.Greeter" + } + ], + "status": "live", + "subtype": "grpc", + "tags": [ + "foo:bar", + "foo", + "env:test" ], "type": "api" } @@ -4569,17 +6503,21 @@ resources: 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_application_crash: (Boolean) 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. + allow_insecure: (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + always_execute: (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + api_step: (Block List) Steps for multi-step api tests (see below for nested schema) + application_id: (String) 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 "". + bindings: (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) 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. + 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, application/octet-stream, multipart/form-data. 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) + bucket_key: (String) Bucket key of the file. 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. @@ -4587,62 +6525,89 @@ resources: 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. + click_with_javascript: (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. 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. + code: (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + config_initial_application_arguments: (Map of String) Initial application arguments for the mobile test. 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. + context: (String) + context_type: (String) Valid values are native, web. + count: '(Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0.' day: (Number) Number representing the day of the week + default_step_timeout: (Number) 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. + device_ids: (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + direction: (String) Valid values are up, down, left, right. + disable_auto_accept_alert: (Boolean) 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. + dns_server_port: (String) 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: (String) Element to use for the step, JSON encoded string. + element_description: (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. + elementsoperator: (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + email: (String) Details of the email for an "assert email" step, JSON encoded string. + enable: (Boolean) + escalation_message: (String) A message to include with a re-notification. 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. + exit_if_succeed: (Boolean) Determines whether or not to exit the test if the step succeeds. extracted_value: (Block List) Values to parse and save as variables from the response. (see below for nested schema) + extracted_values_from_script: (String) Generate variables using JavaScript. 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. + field: (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. 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. + files: (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. follow_redirects: (Boolean) Determines whether or not the API HTTP test should follow redirects. + force_delete_dependencies: (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). force_element_update: (Boolean) Force update of the "element" parameter for the step + form: (Map of String) Form data to be sent when body_type is multipart/form-data. from: (String) The hour of the day on which scheduling starts. + has_new_step_element: (Boolean) A boolean set to determine if the step has a new step element. 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. + http_version: (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "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. + interval: '(Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. 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. + is_message_base64_encoded: (Boolean) Whether the message is base64-encoded. jsonpath: (String) The JSON path to assert. + jsonschema: (String) The JSON Schema to validate the body against. 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. + local_key: (String) A unique identifier used to track steps after reordering. + 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 or find the possible values listed in this API response. + max_scrolls: (Number) 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 "". + metaschema: (String) The meta schema to use for the JSON Schema. Defaults to "draft-07". 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. + mobile_application: '(Block List, Min: 1, Max: 1) (see below for nested schema)' + mobile_options_list: '(Block List, Max: 1) (see below for nested schema)' + mobile_step: (Block List) Steps for mobile tests (see below for nested schema) 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) + multi_locator: (Map of String) 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. + notification_preset_name: (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. 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)' + original_file_name: (String) Original name of the file. 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. @@ -4650,21 +6615,31 @@ resources: 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. + port: (String) Port to use when performing the test. + positions: (Block List) (see below for nested schema) + principals: (List of String) 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. + public_id: (String) The identifier of the step on the backend. + reference_id: (String) + reference_type: (String) Valid values are latest, version. region: (String) Region for SIGV4 authentication. + relation: (String) Valid values are editor, viewer. + relative_position: '(Block List, Max: 1) (see below for nested schema)' 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. + renotify_occurrences: (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. 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_file: (Block List) Files to be used as part of the request in the test. (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_metadata: (Map of String) Metadata to include when performing the gRPC request. 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. + requests: (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. 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. + restricted_roles: (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. 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)' @@ -4677,27 +6652,36 @@ resources: 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"). + size: (Number) Size of the file. 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)' + targetjsonschema: '(Block List, Max: 1) Expected structure if operator is validatesJSONSchema. 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). + text_content: (String) + tick_every: (Number) How often the test should run (in seconds). Valid range is 300-604800 for mobile tests. 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. + timeout: (Number) Timeout in seconds for the test. 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. + type: (String) Synthetics test type. Valid values are api, browser, mobile. url: (String) The URL to send the request to. + user_locator: '(Block List, Max: 1) (see below for nested schema)' username: (String) Username for authentication. - value: (String) Regex or JSON path used for the parser. Not used with type raw. + value: '(Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180.' + values: '(Block List, Max: 5) (see below for nested schema)' variable: '(Block List, Max: 1) Details of the variable to extract. (see below for nested schema)' + variables_from_script: (String) Variables defined from JavaScript code for API HTTP tests. + verbosity: (Number) + view_name: (String) with_click: (Boolean) For "file upload" steps. + with_enter: (Boolean) workstation: (String) Workstation for ntlm authentication. x: (Number) X coordinates for a "scroll step". xpath: (String) The xpath to assert. @@ -4739,7 +6723,7 @@ resources: manifest: |- { "label": "Link label", - "position": "Example link", + "position": 0, "team_id": "${datadog_team.foo.id}", "url": "https://example.com" } @@ -4799,7 +6783,7 @@ resources: 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. + description: Provides a Datadog TeamPermissionSetting resource. This can be used to manage Datadog team_permission_setting. name: datadog_team_permission_setting title: datadog_team_permission_setting Resource - terraform-provider-datadog examples: @@ -4823,7 +6807,7 @@ resources: 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. + value: (String) The action value. Valid values are dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. importStatements: [] datadog_user: subCategory: "" @@ -4839,17 +6823,57 @@ resources: "${data.datadog_role.ro_role.id}" ] } + references: + 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. + name: (String) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + roles: (Set of String) A list of 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_user_role: + subCategory: "" + description: Provides a Datadog UserRole resource. This can be used to create and manage Datadog User Roles. Conflicts may occur if used together with the datadog_user resource's roles attribute or the datadog_service_account resource's roles attribute. This resource is in beta and is subject to change. + name: datadog_user_role + title: datadog_user_role Resource - terraform-provider-datadog + examples: + - name: new_user_with_monitor_writer_role + manifest: |- + { + "role_id": "${datadog_role.monitor_writer_role.id}", + "user_id": "${datadog_user.new_user.id}" + } + references: + role_id: datadog_role.monitor_writer_role.id + user_id: datadog_user.new_user.id + dependencies: + datadog_role.monitor_writer_role: |- + { + "name": "Monitor Writer Role", + "permission": [ + { + "id": "${data.datadog_permissions.bar.permissions.monitors_write}" + } + ] + } + datadog_user.new_user: |- + { + "email": "new@example.com" + } + argumentDocs: + id: (String) The ID of this resource. + role_id: (String) ID of the role that the user is assigned to. + user_id: (String) The ID of the user. + importStatements: + - |- + # This resource is imported using user_id and role_id seperated by `:`. + + terraform import datadog_user_role.user_with_admin_role "${role_id}:${user_id}" datadog_webhook: subCategory: "" description: Provides a Datadog webhook resource. This can be used to create and manage Datadog webhooks. @@ -4894,3 +6918,32 @@ resources: value: (String, Sensitive) The value of the custom variable. importStatements: - terraform import datadog_webhook_custom_variable.foo EXAMPLE_VARIABLE + datadog_workflow_automation: + subCategory: "" + description: Enables the creation and management of Datadog workflows using Workflow Automation. To easily export a workflow for use with Terraform, click the export button in the Datadog Workflow Automation UI cog menu. This resource requires scoped application keys for authentication. + name: datadog_workflow_automation + title: datadog_workflow_automation Resource - terraform-provider-datadog + examples: + - name: workflow + manifest: |- + { + "description": "This workflow alerts me by email when my monitor goes off. ", + "name": "Send Email when Monitor Alerts", + "published": true, + "spec_json": "${jsonencode(\n {\n \"triggers\" : [\n {\n \"startStepNames\" : [\n \"Send_Email\"\n ],\n \"monitorTrigger\" : {}\n }\n ],\n \"steps\" : [\n {\n \"name\" : \"Send_Email\",\n \"actionId\" : \"com.datadoghq.email.send\",\n \"parameters\" : [\n {\n \"name\" : \"to\",\n \"value\" : \"REPLACE_ME\"\n },\n {\n \"name\" : \"subject\",\n \"value\" : \"Monitor \\\"{{ Source.monitor.name }}\\\" alerted\"\n },\n {\n \"name\" : \"message\",\n \"value\" : \"This message is from {{ WorkflowName }}. \\n\\nYou can find a link to the monitor here: {{ Source.url }}.\"\n }\n ],\n \"display\" : {\n \"bounds\" : {\n \"x\" : 0,\n \"y\" : 216\n }\n }\n }\n ],\n \"handle\" : \"my-handle\"\n }\n )}", + "tags": [ + "service:foo", + "source:alert", + "team:bar" + ] + } + argumentDocs: + description: (String) Description of the workflow. + id: (String) The ID of this resource. + name: (String) Name of the workflow. String length must be at least 1. + published: (Boolean) Set the workflow to published or unpublished. Workflows in an unpublished state are only executable through manual runs. Automatic triggers such as Schedule do not execute the workflow until it is published. + spec_json: (String) The spec defines what the workflow does. + tags: (Set of String) Tags of the workflow. + webhook_secret: (String, Sensitive) If a webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here. String length must be at least 16. + importStatements: + - terraform import datadog_workflow_automation.my_workflow 11111111-2222-3333-4444-555555555555 diff --git a/config/provider.go b/config/provider.go index 011e189..ead33b4 100644 --- a/config/provider.go +++ b/config/provider.go @@ -8,33 +8,26 @@ import ( // Note(turkenh): we are importing this to embed provider schema document _ "embed" + "github.com/DataDog/terraform-provider-datadog/v3/datadog" + "github.com/DataDog/terraform-provider-datadog/v3/datadog/fwprovider" + "github.com/crossplane/crossplane-runtime/pkg/errors" ujconfig "github.com/crossplane/upjet/pkg/config" - "github.com/upbound/provider-datadog/config/api" + conversiontfjson "github.com/crossplane/upjet/pkg/types/conversion/tfjson" + tfjson "github.com/hashicorp/terraform-json" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "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/authentication" "github.com/upbound/provider-datadog/config/dashboard" - "github.com/upbound/provider-datadog/config/downtime" + "github.com/upbound/provider-datadog/config/iam" "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/security" + "github.com/upbound/provider-datadog/config/sensitivedata" + "github.com/upbound/provider-datadog/config/slo" "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 ( @@ -48,48 +41,104 @@ var providerSchema string //go:embed provider-metadata.yaml var providerMetadata string +func getProviderSchema(s string) (*schema.Provider, error) { + ps := tfjson.ProviderSchemas{} + if err := ps.UnmarshalJSON([]byte(s)); err != nil { + panic(err) + } + if len(ps.Schemas) != 1 { + return nil, errors.Errorf("there should exactly be 1 provider schema but there are %d", len(ps.Schemas)) + } + var rs map[string]*tfjson.Schema + for _, v := range ps.Schemas { + rs = v.ResourceSchemas + break + } + return &schema.Provider{ + ResourcesMap: conversiontfjson.GetV2ResourceMap(rs), + }, nil +} + // GetProvider returns provider configuration -func GetProvider() *ujconfig.Provider { +func GetProvider(generationProvider bool) (*ujconfig.Provider, error) { + sdkProvider := datadog.Provider() + fwProvider := fwprovider.New() + + if generationProvider { + p, err := getProviderSchema(providerSchema) + if err != nil { + return nil, errors.Wrap(err, "cannot read the Terraform SDK provider from the JSON schema for code generation") + } + sdkProvider = p + } + pc := ujconfig.NewProvider([]byte(providerSchema), resourcePrefix, modulePath, []byte(providerMetadata), - ujconfig.WithRootGroup("upbound.io"), - ujconfig.WithIncludeList(ExternalNameConfigured()), + ujconfig.WithRootGroup("datadog.upbound.io"), + ujconfig.WithIncludeList(resourceList(cliReconciledExternalNameConfigs)), + ujconfig.WithTerraformPluginSDKIncludeList(resourceList(terraformPluginSDKExternalNameConfigs)), + ujconfig.WithTerraformPluginFrameworkIncludeList(resourceList(terraformPluginFrameworkExternalNameConfigs)), ujconfig.WithFeaturesPackage("internal/features"), + ujconfig.WithTerraformProvider(sdkProvider), + ujconfig.WithTerraformPluginFrameworkProvider(fwProvider), + ujconfig.WithSchemaTraversers(&ujconfig.SingletonListEmbedder{}), ujconfig.WithDefaultResourceOptions( - ExternalNameConfigurations(), + ResourceConfigurator(), + GroupKindOverrides(), )) for _, configure := range []func(provider *ujconfig.Provider){ // add custom config functions - 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, + security.Configure, synthetics.Configure, - team.Configure, - user.Configure, - webhook.Configure, + authentication.Configure, + iam.Configure, + integration.Configure, + logs.Configure, + sensitivedata.Configure, + slo.Configure, } { configure(pc) } pc.ConfigureResources() - return pc + registerTFConversions(pc) + return pc, nil +} + +func registerTFConversions(pc *ujconfig.Provider) { + for name, r := range pc.Resources { + r := r + // nothing to do if no singleton list has been converted to + // an embedded object + if len(r.CRDListConversionPaths()) == 0 { + continue + } + + // the controller will be reconciling on the CRD API version + // with the converted API (with embedded objects in place of + // singleton lists), so we need the appropriate Terraform + // converter in this case. + r.TerraformConversions = []ujconfig.TerraformConversion{ + ujconfig.NewTFSingletonConversion(), + } + + pc.Resources[name] = r + } +} + +// resourceList returns the list of resources that have external +// name configured in the specified table. +func resourceList(t map[string]ujconfig.ExternalName) []string { + l := make([]string, len(t)) + i := 0 + for n := range t { + // Expected format is regex and we'd like to have exact matches. + l[i] = n + "$" + i++ + } + return l } diff --git a/config/restriction/config.go b/config/restriction/config.go deleted file mode 100644 index df2dd05..0000000 --- a/config/restriction/config.go +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 9d18b72..0000000 --- a/config/role/config.go +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 3ec6017..0000000 --- a/config/rum/config.go +++ /dev/null @@ -1,13 +0,0 @@ -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.json b/config/schema.json index ea5cb7e..4c757bb 100644 --- a/config/schema.json +++ b/config/schema.json @@ -1 +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":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"}}}}}} +{"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, and defaults to `https://api.datadoghq.com`. 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}},"block_types":{"default_tags":{"nesting_mode":"list","block":{"attributes":{"tags":{"type":["map","string"],"description":"[Experimental - Logs Pipelines, Monitors Security Monitoring Rules, and Service Level Objectives only] Resource tags to be applied by default across all resources.","description_kind":"plain","optional":true}},"description":"[Experimental - Logs Pipelines, Monitors Security Monitoring Rules, and Service Level Objectives only] Configuration block containing settings to apply default resource tags across all resources.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"resource_schemas":{"datadog_action_connection":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the connection","description_kind":"plain","required":true}},"block_types":{"aws":{"nesting_mode":"single","block":{"block_types":{"assume_role":{"nesting_mode":"single","block":{"attributes":{"account_id":{"type":"string","description":"AWS account that the connection is created for. String length must be at least 1.","description_kind":"plain","optional":true},"external_id":{"type":"string","description":"External ID that specifies which connection can be used to assume the role","description_kind":"plain","computed":true},"principal_id":{"type":"string","description":"AWS account that will assume the role","description_kind":"plain","computed":true},"role":{"type":"string","description":"Role to assume. String length must be at least 1.","description_kind":"plain","optional":true}},"description":"Configuration for an assume role AWS connection","description_kind":"plain"}}},"description":"Configuration for an AWS connection","description_kind":"plain"}},"http":{"nesting_mode":"single","block":{"attributes":{"base_url":{"type":"string","description":"Base HTTP url for the integration. String length must be at least 1.","description_kind":"plain","optional":true}},"block_types":{"token_auth":{"nesting_mode":"single","block":{"block_types":{"body":{"nesting_mode":"single","block":{"attributes":{"content":{"type":"string","description":"Serialized body content. String length must be at least 1.","description_kind":"plain","optional":true},"content_type":{"type":"string","description":"Content type of the body. String length must be at least 1.","description_kind":"plain","optional":true}},"description":"Body for HTTP authentication","description_kind":"plain"}},"header":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Header name. String length must be at least 1.","description_kind":"plain","optional":true},"value":{"type":"string","description":" String length must be at least 1.","description_kind":"plain","optional":true}},"description":"Header for HTTP authentication","description_kind":"plain"}},"token":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Token name. String length must be at least 1.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Token type Valid values are `SECRET`.","description_kind":"plain","optional":true},"value":{"type":"string","description":"Token value. String length must be at least 1.","description_kind":"plain","optional":true,"sensitive":true}},"description":"Token for HTTP authentication","description_kind":"plain"}},"url_parameter":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"URL parameter name. String length must be at least 1.","description_kind":"plain","optional":true},"value":{"type":"string","description":"URL parameter value. String length must be at least 1.","description_kind":"plain","optional":true}},"description":"URL parameter for HTTP authentication","description_kind":"plain"}}},"description":"Configuration for an HTTP connection that uses token auth","description_kind":"plain"}}},"description":"Configuration for an HTTP connection","description_kind":"plain"}}},"description":"A connection that can be used in Actions, including in the Workflow Automation and App Builder products.","description_kind":"plain"}},"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},"remote_config_read_enabled":{"type":"bool","description":"Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog API Key resource. This can be used to create and manage Datadog API Keys. Import functionality for this resource is deprecated and will be removed in a future release with prior notice. Securely store your API keys using a secret management system or use this resource to create and manage new 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. Value must be between 0.00 and 1.00.","description_kind":"plain","required":true},"trace_rate":{"type":"string","description":"Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00.","description_kind":"plain","optional":true}},"block_types":{"filter":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"The search query - follow the span search syntax, use `AND` between tags and `\\` to escape special characters, use nanosecond for duration. 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_app_builder_app":{"version":0,"block":{"attributes":{"action_query_names_to_connection_ids":{"type":["map","string"],"description":"If specified, this will override the Action Connection IDs for the specified Action Query Names in the App JSON. Otherwise, a map of the App's Action Query Names to Action Connection IDs will be returned in output.","description_kind":"plain","optional":true,"computed":true},"app_json":{"type":"string","description":"The JSON representation of the App. String length must be at least 1.","description_kind":"plain","required":true},"description":{"type":"string","description":"If specified, this will override the human-readable description of the App in the App JSON. String length must be at least 1.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"If specified, this will override the name of the App in the App JSON. String length must be at least 1.","description_kind":"plain","optional":true,"computed":true},"published":{"type":"bool","description":"Set the app to published or unpublished. Published apps are available to other users. To ensure the app is accessible to the correct users, you also need to set a [Restriction Policy](https://docs.datadoghq.com/api/latest/restriction-policies/) on the app if a policy does not yet exist. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"root_instance_name":{"type":"string","description":"The name of the root component of the app. This must be a grid component that contains all other components. If specified, this will override the root instance name of the App in the App JSON. String length must be at least 1.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog App resource for creating and managing Datadog Apps from App Builder using the JSON definition. To easily export an App for use with Terraform, use the export button in the Datadog App Builder UI.","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},"scopes":{"type":["set","string"],"description":"Authorization scopes for the Application Key. Application Keys configured with no scopes have full access.","description_kind":"plain","optional":true}},"description":"Provides a Datadog Application Key resource. This can be used to create and manage Datadog Application Keys. Import functionality for this resource is deprecated and will be removed in a future release with prior notice. Securely store your application keys using a secret management system or use this resource to create and manage new application keys.","description_kind":"plain"}},"datadog_appsec_waf_custom_rule":{"version":0,"block":{"attributes":{"blocking":{"type":"bool","description":"Indicates whether the WAF custom rule will block the request.","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Indicates whether the WAF custom rule is enabled.","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 WAF custom rule.","description_kind":"plain","required":true},"path_glob":{"type":"string","description":"The path glob for the WAF custom rule.","description_kind":"plain","optional":true},"tags":{"type":["map","string"],"description":"Tags associated with the WAF custom rule. `category` and `type` tags are required. Supported categories include `business_logic`, `attack_attempt` and `security_response`.","description_kind":"plain","required":true}},"block_types":{"action":{"nesting_mode":"single","block":{"attributes":{"action":{"type":"string","description":"Override the default action to take when the WAF custom rule would block.","description_kind":"plain","optional":true}},"block_types":{"parameters":{"nesting_mode":"single","block":{"attributes":{"location":{"type":"string","description":"The location to redirect to when the WAF custom rule triggers.","description_kind":"plain","optional":true},"status_code":{"type":"number","description":"The status code to return when the WAF custom rule triggers.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"condition":{"nesting_mode":"list","block":{"attributes":{"operator":{"type":"string","description":"Operator to use for the WAF Condition.","description_kind":"plain","optional":true}},"block_types":{"parameters":{"nesting_mode":"single","block":{"attributes":{"data":{"type":"string","description":"Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter.","description_kind":"plain","optional":true},"list":{"type":["list","string"],"description":"List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and !exact_match operator.","description_kind":"plain","optional":true},"regex":{"type":"string","description":"Regex to use with the condition. Only used with match_regex and !match_regex operator.","description_kind":"plain","optional":true},"value":{"type":"string","description":"Store the captured value in the specified tag name. Only used with the capture_data operator.","description_kind":"plain","optional":true}},"block_types":{"input":{"nesting_mode":"list","block":{"attributes":{"address":{"type":"string","description":"Input from the request on which the condition should apply.","description_kind":"plain","optional":true},"key_path":{"type":["list","string"],"description":"Specific path for the input.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"options":{"nesting_mode":"single","block":{"attributes":{"case_sensitive":{"type":"bool","description":"Evaluate the value as case sensitive.","description_kind":"plain","optional":true},"min_length":{"type":"number","description":"Only evaluate this condition if the value has a minimum amount of characters.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}}},"description_kind":"plain"}},"scope":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"The environment scope for the WAF custom rule.","description_kind":"plain","optional":true},"service":{"type":"string","description":"The service scope for the WAF custom rule.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Provides a Datadog AppsecWafCustomRule resource. This can be used to create and manage Datadog appsec_waf_custom_rule.","description_kind":"plain"}},"datadog_appsec_waf_exclusion_filter":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description for the exclusion filter.","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Indicates whether the exclusion filter is enabled.","description_kind":"plain","required":true},"event_query":{"type":"string","description":"The event query matched by the legacy exclusion filter. Cannot be created nor updated.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"ip_list":{"type":["list","string"],"description":"The client IP addresses matched by the exclusion filter (CIDR notation is supported).","description_kind":"plain","optional":true},"on_match":{"type":"string","description":"The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked.","description_kind":"plain","optional":true},"parameters":{"type":["list","string"],"description":"A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character.","description_kind":"plain","optional":true},"path_glob":{"type":"string","description":"The HTTP path glob expression matched by the exclusion filter.","description_kind":"plain","optional":true}},"block_types":{"rules_target":{"nesting_mode":"list","block":{"attributes":{"rule_id":{"type":"string","description":"Target a single WAF rule based on its identifier.","description_kind":"plain","optional":true}},"block_types":{"tags":{"nesting_mode":"single","block":{"attributes":{"category":{"type":"string","description":"The category of the targeted WAF rules.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the targeted WAF rules.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"scope":{"nesting_mode":"list","block":{"attributes":{"env":{"type":"string","description":"Deploy on this environment.","description_kind":"plain","optional":true},"service":{"type":"string","description":"Deploy on this service.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Provides a Datadog AppsecWafExclusionFilter resource. This can be used to create and manage Datadog appsec_waf_exclusion_filter.","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. Cannot be used in conjunction with `team`.","description_kind":"plain","optional":true},"team":{"type":"string","description":"The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`.","description_kind":"plain","optional":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":"Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource.","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":"This function will be deprecated soon. Use the notification rules function instead. 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. Deprecated, use datadog_csm_threats_agent_rules resource instead: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/csm_threats_agent_rule","description_kind":"plain","deprecated":true}},"datadog_compliance_custom_framework":{"version":0,"block":{"attributes":{"handle":{"type":"string","description":"The framework handle. String length must be at least 1.","description_kind":"plain","required":true},"icon_url":{"type":"string","description":"The URL of the icon representing the framework","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of the compliance custom framework resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The framework name. String length must be at least 1.","description_kind":"plain","required":true},"version":{"type":"string","description":"The framework version. String length must be at least 1.","description_kind":"plain","required":true}},"block_types":{"requirements":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the requirement. String length must be at least 1.","description_kind":"plain","required":true}},"block_types":{"controls":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the control. String length must be at least 1.","description_kind":"plain","required":true},"rules_id":{"type":["set","string"],"description":"The set of rules IDs for the control.","description_kind":"plain","required":true}},"description":"The controls of the requirement.","description_kind":"plain"}}},"description":"The requirements of the framework.","description_kind":"plain"}}},"description":"Provides a Datadog Compliance Custom Framework resource, which is used to create and manage compliance custom frameworks.","description_kind":"plain"}},"datadog_compliance_resource_evaluation_filter":{"version":0,"block":{"attributes":{"cloud_provider":{"type":"string","description":"The cloud provider of the filter's targeted resource. Only `aws`, `gcp`, or `azure` are considered valid cloud providers.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of the resource evaluation filter resource.","description_kind":"plain","computed":true},"resource_id":{"type":"string","description":"The ID of the of the filter's targeted resource. Different cloud providers target different resource IDs:\n - `aws`: account ID\n - `gcp`: project ID\n - `azure`: subscription ID","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"List of tags to filter misconfiguration detections. Each entry should follow the format: \"key\":\"value\".","description_kind":"plain","required":true}},"description":"Provides a Datadog ComplianceResourceEvaluationFilter resource. This can be used to create and manage a compliance resource evaluation filter.","description_kind":"plain"}},"datadog_cost_budget":{"version":0,"block":{"attributes":{"end_month":{"type":"number","description":"The month when the budget ends (YYYYMM).","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of the budget.","description_kind":"plain","optional":true,"computed":true},"metrics_query":{"type":"string","description":"The cost query used to track against the budget.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the budget.","description_kind":"plain","required":true},"start_month":{"type":"number","description":"The month when the budget starts (YYYYMM).","description_kind":"plain","required":true},"total_amount":{"type":"number","description":"The sum of all budget entries' amounts.","description_kind":"plain","computed":true}},"block_types":{"entries":{"nesting_mode":"list","block":{"attributes":{"amount":{"type":"number","description_kind":"plain","required":true},"month":{"type":"number","description_kind":"plain","required":true}},"block_types":{"tag_filters":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","required":true},"tag_value":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"The entries of the budget.","description_kind":"plain"}}},"description":"Provides a Datadog Cost Budget resource.","description_kind":"plain"}},"datadog_csm_threats_agent_rule":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description for the Agent rule.","description_kind":"plain","optional":true,"computed":true},"enabled":{"type":"bool","description":"Indicates whether the Agent rule is enabled. Must not be used without policy_id.","description_kind":"plain","optional":true,"computed":true},"expression":{"type":"string","description":"The SECL expression of the Agent rule","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 Agent rule.","description_kind":"plain","required":true},"policy_id":{"type":"string","description":"The ID of the agent policy in which the rule is saved","description_kind":"plain","optional":true},"product_tags":{"type":["set","string"],"description":"The list of product tags associated with the rule","description_kind":"plain","optional":true,"computed":true}},"block_types":{"actions":{"nesting_mode":"list","block":{"block_types":{"set":{"nesting_mode":"single","block":{"attributes":{"append":{"type":"bool","description":"Whether to append to the set","description_kind":"plain","optional":true,"computed":true},"field":{"type":"string","description":"The field to get the value from","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the set action","description_kind":"plain","required":true},"scope":{"type":"string","description":"The scope of the set action (process, container, cgroup, or empty)","description_kind":"plain","optional":true,"computed":true},"size":{"type":"number","description":"The maximum size of the set","description_kind":"plain","optional":true,"computed":true},"ttl":{"type":"number","description":"The time to live for the set in nanoseconds","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description":"The value to set","description_kind":"plain","optional":true,"computed":true}},"description":"Set action configuration","description_kind":"plain"}}},"description":"The list of actions the rule can perform","description_kind":"plain"}}},"description":"Provides a Datadog CSM Threats Agent Rule API resource.","description_kind":"plain"}},"datadog_csm_threats_policy":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A description for the policy.","description_kind":"plain","optional":true,"computed":true},"enabled":{"type":"bool","description":"Indicates whether the policy is enabled. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"host_tags_lists":{"type":["set",["list","string"]],"description":"Host tags that define where the policy is deployed. Inner values are ANDed, outer arrays are ORed.","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 policy.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"Host tags that define where the policy is deployed. Deprecated, use host_tags_lists instead.","description_kind":"plain","optional":true,"computed":true}},"description":"Provides a Datadog CSM Threats policy API resource.","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.** This field is deprecated and non-functional. Use `restricted_roles` instead 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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"}},"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},"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 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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"}},"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},"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 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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","optional":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","optional":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"clustering_pattern_field_path":{"type":"string","description":"Specifies the field for logs pattern clustering. Can only be used with `logs_pattern_stream`.","description_kind":"plain","optional":true},"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`, `rum_stream`, `llm_observability_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":{"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"Facet name","description_kind":"plain","required":true}},"description":"Group by configuration for the List Stream widget. Group by can only be used with `logs_pattern_stream` (up to 4 items) or `logs_transaction_stream` (one group by item is required) list stream source.","description_kind":"plain"}},"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. Valid values are `number`, `bar`, `trend`.","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`, `trend`.","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`, `trend`.","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":{"cell_display_mode_options":{"nesting_mode":"list","block":{"attributes":{"trend_type":{"type":"string","description":"The type of trend line to display. Valid values are `area`, `line`, `bars`.","description_kind":"plain","optional":true},"y_scale":{"type":"string","description":"The scale of the y-axis. Valid values are `shared`, `independent`.","description_kind":"plain","optional":true}},"description":"A list of display modes for each table cell.","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"}},"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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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},"text_formats":{"nesting_mode":"list","block":{"block_types":{"text_format":{"nesting_mode":"list","block":{"attributes":{"custom_bg_color":{"type":"string","description":"The custom color palette to apply to the background.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The custom color palette to apply to the foreground text.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `white_on_red`, `white_on_yellow`, `white_on_green`, `black_on_light_red`, `black_on_light_yellow`, `black_on_light_green`, `red_on_white`, `yellow_on_white`, `green_on_white`, `custom_bg`, `custom_text`.","description_kind":"plain","optional":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Match or compare option. Valid values are `is`, `is_not`, `contains`, `does_not_contain`, `starts_with`, `ends_with`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"min_items":1,"max_items":1},"replace":{"nesting_mode":"list","block":{"attributes":{"substring":{"type":"string","description":"Text that will be replaced. Must be used with type `substring`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Table widget text format replace all type.","description_kind":"plain","required":true},"with":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"max_items":1}},"description":"The text format to apply to the items in a table widget column.","description_kind":"plain"}}},"description":"Text formats define how to format text in table widget content. Multiple `text_formats` blocks are allowed using the structure below. This resource is in beta and is subject to change.","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 (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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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. Valid values are `number`, `bar`, `trend`.","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`, `trend`.","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`, `trend`.","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":{"cell_display_mode_options":{"nesting_mode":"list","block":{"attributes":{"trend_type":{"type":"string","description":"The type of trend line to display. Valid values are `area`, `line`, `bars`.","description_kind":"plain","optional":true},"y_scale":{"type":"string","description":"The scale of the y-axis. Valid values are `shared`, `independent`.","description_kind":"plain","optional":true}},"description":"A list of display modes for each table cell.","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"}},"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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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},"text_formats":{"nesting_mode":"list","block":{"block_types":{"text_format":{"nesting_mode":"list","block":{"attributes":{"custom_bg_color":{"type":"string","description":"The custom color palette to apply to the background.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The custom color palette to apply to the foreground text.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `white_on_red`, `white_on_yellow`, `white_on_green`, `black_on_light_red`, `black_on_light_yellow`, `black_on_light_green`, `red_on_white`, `yellow_on_white`, `green_on_white`, `custom_bg`, `custom_text`.","description_kind":"plain","optional":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Match or compare option. Valid values are `is`, `is_not`, `contains`, `does_not_contain`, `starts_with`, `ends_with`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"min_items":1,"max_items":1},"replace":{"nesting_mode":"list","block":{"attributes":{"substring":{"type":"string","description":"Text that will be replaced. Must be used with type `substring`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Table widget text format replace all type.","description_kind":"plain","required":true},"with":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"max_items":1}},"description":"The text format to apply to the items in a table widget column.","description_kind":"plain"}}},"description":"Text formats define how to format text in table widget content. Multiple `text_formats` blocks are allowed using the structure below. This resource is in beta and is subject to change.","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 (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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette for the widget.","description_kind":"plain","optional":true},"scaling":{"type":"string","description":"The scaling mode for the widget. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The display type for the widget.","description_kind":"plain","required":true}},"description":"The display mode for the widget.","description_kind":"plain"}}},"description":"The style of the widget","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":{"custom_links":{"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":{"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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette for the widget.","description_kind":"plain","optional":true},"scaling":{"type":"string","description":"The scaling mode for the widget. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The display type for the widget.","description_kind":"plain","required":true}},"description":"The display mode for the widget.","description_kind":"plain"}}},"description":"The style of the widget","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":{"custom_links":{"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":{"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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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","optional":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","optional":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"clustering_pattern_field_path":{"type":"string","description":"Specifies the field for logs pattern clustering. Can only be used with `logs_pattern_stream`.","description_kind":"plain","optional":true},"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`, `rum_stream`, `llm_observability_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":{"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"Facet name","description_kind":"plain","required":true}},"description":"Group by configuration for the List Stream widget. Group by can only be used with `logs_pattern_stream` (up to 4 items) or `logs_transaction_stream` (one group by item is required) list stream source.","description_kind":"plain"}},"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. Valid values are `number`, `bar`, `trend`.","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`, `trend`.","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`, `trend`.","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":{"cell_display_mode_options":{"nesting_mode":"list","block":{"attributes":{"trend_type":{"type":"string","description":"The type of trend line to display. Valid values are `area`, `line`, `bars`.","description_kind":"plain","optional":true},"y_scale":{"type":"string","description":"The scale of the y-axis. Valid values are `shared`, `independent`.","description_kind":"plain","optional":true}},"description":"A list of display modes for each table cell.","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"}},"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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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},"text_formats":{"nesting_mode":"list","block":{"block_types":{"text_format":{"nesting_mode":"list","block":{"attributes":{"custom_bg_color":{"type":"string","description":"The custom color palette to apply to the background.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The custom color palette to apply to the foreground text.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `white_on_red`, `white_on_yellow`, `white_on_green`, `black_on_light_red`, `black_on_light_yellow`, `black_on_light_green`, `red_on_white`, `yellow_on_white`, `green_on_white`, `custom_bg`, `custom_text`.","description_kind":"plain","optional":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Match or compare option. Valid values are `is`, `is_not`, `contains`, `does_not_contain`, `starts_with`, `ends_with`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"min_items":1,"max_items":1},"replace":{"nesting_mode":"list","block":{"attributes":{"substring":{"type":"string","description":"Text that will be replaced. Must be used with type `substring`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Table widget text format replace all type.","description_kind":"plain","required":true},"with":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"max_items":1}},"description":"The text format to apply to the items in a table widget column.","description_kind":"plain"}}},"description":"Text formats define how to format text in table widget content. Multiple `text_formats` blocks are allowed using the structure below. This resource is in beta and is subject to change.","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 (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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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. Valid values are `number`, `bar`, `trend`.","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`, `trend`.","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`, `trend`.","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":{"cell_display_mode_options":{"nesting_mode":"list","block":{"attributes":{"trend_type":{"type":"string","description":"The type of trend line to display. Valid values are `area`, `line`, `bars`.","description_kind":"plain","optional":true},"y_scale":{"type":"string","description":"The scale of the y-axis. Valid values are `shared`, `independent`.","description_kind":"plain","optional":true}},"description":"A list of display modes for each table cell.","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"}},"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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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},"text_formats":{"nesting_mode":"list","block":{"block_types":{"text_format":{"nesting_mode":"list","block":{"attributes":{"custom_bg_color":{"type":"string","description":"The custom color palette to apply to the background.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The custom color palette to apply to the foreground text.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `white_on_red`, `white_on_yellow`, `white_on_green`, `black_on_light_red`, `black_on_light_yellow`, `black_on_light_green`, `red_on_white`, `yellow_on_white`, `green_on_white`, `custom_bg`, `custom_text`.","description_kind":"plain","optional":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Match or compare option. Valid values are `is`, `is_not`, `contains`, `does_not_contain`, `starts_with`, `ends_with`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"min_items":1,"max_items":1},"replace":{"nesting_mode":"list","block":{"attributes":{"substring":{"type":"string","description":"Text that will be replaced. Must be used with type `substring`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Table widget text format replace all type.","description_kind":"plain","required":true},"with":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"max_items":1}},"description":"The text format to apply to the items in a table widget column.","description_kind":"plain"}}},"description":"Text formats define how to format text in table widget content. Multiple `text_formats` blocks are allowed using the structure below. This resource is in beta and is subject to change.","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 (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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette for the widget.","description_kind":"plain","optional":true},"scaling":{"type":"string","description":"The scaling mode for the widget. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The display type for the widget.","description_kind":"plain","required":true}},"description":"The display mode for the widget.","description_kind":"plain"}}},"description":"The style of the widget","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":{"custom_links":{"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":{"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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette for the widget.","description_kind":"plain","optional":true},"scaling":{"type":"string","description":"The scaling mode for the widget. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The display type for the widget.","description_kind":"plain","required":true}},"description":"The display mode for the widget.","description_kind":"plain"}}},"description":"The style of the widget","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":{"custom_links":{"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":{"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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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.\n\n!\u003e The `is_read_only` field is deprecated and non-functional. Use `restricted_roles` instead to define which roles are required to edit the dashboard.","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_domain_allowlist":{"version":0,"block":{"attributes":{"domains":{"type":["list","string"],"description":"The domains within the domain allowlist.","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Whether the Email Domain Allowlist is enabled.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides the Datadog Email Domain Allowlist resource. This can be used to manage the Datadog Email Domain Allowlist.","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},"extended_resource_collection_enabled":{"type":"string","description":"Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`.","description_kind":"plain","optional":true,"computed":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. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`.","description_kind":"plain","deprecated":true,"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":"!\u003eThis resource is deprecated - use the `datadog_integration_aws_account` resource instead.\n\nProvides 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","deprecated":true}},"datadog_integration_aws_account":{"version":0,"block":{"attributes":{"account_tags":{"type":["list","string"],"description":"Tags to apply to all metrics in the account.","description_kind":"plain","optional":true,"computed":true},"aws_account_id":{"type":"string","description":"Your AWS Account ID without dashes. Invalid aws_account_id.","description_kind":"plain","required":true},"aws_partition":{"type":"string","description":"AWS Account partition. Valid values are `aws`, `aws-cn`, `aws-us-gov`.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"block_types":{"auth_config":{"nesting_mode":"single","block":{"block_types":{"aws_auth_config_keys":{"nesting_mode":"single","block":{"attributes":{"access_key_id":{"type":"string","description":"AWS Access Key ID. Invalid access_key_id.","description_kind":"plain","optional":true},"secret_access_key":{"type":"string","description":"AWS Secret Access Key. This value is write-only; changes made outside of Terraform will not be drift-detected. Secret_access_key must be non-empty and not contain whitespace.","description_kind":"plain","optional":true,"sensitive":true}},"description":"Datadog will use the provided AWS Access Key ID and Secret Access Key to authenticate to your account.","description_kind":"plain"}},"aws_auth_config_role":{"nesting_mode":"single","block":{"attributes":{"external_id":{"type":"string","description":"AWS IAM External ID for associated role. If omitted, one will be generated.","description_kind":"plain","optional":true,"computed":true},"role_name":{"type":"string","description":"AWS IAM Role name.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Configure how Datadog authenticates to your AWS Account. Either `aws_auth_config_keys` or `aws_auth_config_role` block is required within.","description_kind":"plain"}},"aws_regions":{"nesting_mode":"single","block":{"attributes":{"include_all":{"type":"bool","description":"Include all regions. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"include_only":{"type":["list","string"],"description":"Include only these regions.","description_kind":"plain","optional":true}},"description":"AWS Regions to collect data from. Defaults to `include_all` if block is empty.","description_kind":"plain"}},"logs_config":{"nesting_mode":"single","block":{"block_types":{"lambda_forwarder":{"nesting_mode":"single","block":{"attributes":{"lambdas":{"type":["list","string"],"description":"List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`.","description_kind":"plain","optional":true,"computed":true},"sources":{"type":["list","string"],"description":"List of service IDs set to enable automatic log collection. Use [`datadog_integration_aws_available_logs_services` data source](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/integration_aws_available_logs_services) or [the AWS Logs Integration API](https://docs.datadoghq.com/api/latest/aws-logs-integration/?#get-list-of-aws-log-ready-services) to get allowed values. Defaults to `[]`.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}}},"description":"Configure log autosubscription for your Datadog Forwarder Lambda functions. The `lambda_fowarder` block is required within, but may be empty to use defaults.","description_kind":"plain"}},"metrics_config":{"nesting_mode":"single","block":{"attributes":{"automute_enabled":{"type":"bool","description":"Enable EC2 automute for AWS metrics Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"collect_cloudwatch_alarms":{"type":"bool","description":"Enable CloudWatch alarms collection Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"collect_custom_metrics":{"type":"bool","description":"Enable custom metrics collection Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"enabled":{"type":"bool","description":"Enable AWS metrics collection Defaults to `true`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"namespace_filters":{"nesting_mode":"single","block":{"attributes":{"exclude_only":{"type":["list","string"],"description":"Exclude only these namespaces from metrics collection. Use [`datadog_integration_aws_available_namespaces` data source](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/integration_aws_available_namespaces) to get allowed values. Defaults to `[\"AWS/SQS\", \"AWS/ElasticMapReduce\"]`. `AWS/SQS` and `AWS/ElasticMapReduce` are excluded by default to reduce your AWS CloudWatch costs from `GetMetricData` API calls.","description_kind":"plain","optional":true,"computed":true},"include_only":{"type":["list","string"],"description":"Include only these namespaces for metrics collection. Use [`datadog_integration_aws_available_namespaces` data source](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/integration_aws_available_namespaces) to get allowed values.","description_kind":"plain","optional":true}},"description":"AWS Metrics namespace filters. Defaults to a pre-set `exclude_only` list if block is empty.","description_kind":"plain"}},"tag_filters":{"nesting_mode":"list","block":{"attributes":{"namespace":{"type":"string","description":"The AWS service for which the tag filters defined in `tags` will be applied.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"The AWS resource tags to filter on for the service specified by `namespace`. Defaults to `[]`.","description_kind":"plain","optional":true,"computed":true}},"description":"AWS Metrics Collection tag filters list. The array of custom AWS resource tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from a specified service. Wildcards, such as `?` (match a single character) and `*` (match multiple characters), and exclusion using `!` before the tag are supported. For EC2, only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored. For example, `env:production,instance-type:c?.*,!region:us-east-1`.","description_kind":"plain"}}},"description":"Configure metrics collection from AWS CloudWatch. The `namespace_filters` block is required within, but may be empty to use defaults.","description_kind":"plain"}},"resources_config":{"nesting_mode":"single","block":{"attributes":{"cloud_security_posture_management_collection":{"type":"bool","description":"Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Requires `extended_collection` to be set to `true`. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"extended_collection":{"type":"bool","description":"Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cloud_security_posture_management_collection`. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true}},"description":"AWS Resources Collection config. May be empty to use defaults.","description_kind":"plain"}},"traces_config":{"nesting_mode":"single","block":{"block_types":{"xray_services":{"nesting_mode":"single","block":{"attributes":{"include_all":{"type":"bool","description":"Include all services.","description_kind":"plain","optional":true},"include_only":{"type":["list","string"],"description":"Include only these services. Defaults to `[]`.","description_kind":"plain","optional":true,"computed":true}},"description":"AWS X-Ray services to collect traces from. Defaults to `include_only`.","description_kind":"plain"}}},"description":"AWS Traces Collection config. The `xray_services` block is required within, but may be empty to use defaults.","description_kind":"plain"}}},"description":"Provides a Datadog-Amazon Web Services integration resource. This can be used to create and manage Datadog-Amazon Web Services integration.","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_external_id":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The external ID.","description_kind":"plain","computed":true}},"description":"!\u003eA new external ID must be used to create an AWS account integration in Datadog within 48 hours of creation or it will expire.\n\n!\u003eRunning `terraform destroy` only removes the resource from Terraform state and does not deactivate anything in Datadog or AWS.\n\nProvides a Datadog-Amazon Web Services external ID resource. This can be used to create Datadog-Amazon Web Services external IDs\n\nThis resource can be used in conjunction with the [`datadog_integration_aws_account`](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account) resource. The external ID value can be referenced as shown:\n\n```hcl\nresource \"datadog_integration_aws_external_id\" \"foo\" {}\n\nresource \"datadog_integration_aws_account\" \"foo-defaults\" {\n aws_account_id = \"123456789019\"\n aws_partition = \"aws\"\n\n auth_config {\n aws_auth_config_role {\n role_name = \"DatadogIntegrationRole\"\n external_id = datadog_integration_aws_external_id.foo.id\n }\n }\n}\n```\n\nTo force a new external ID value to regenerate, you can use the `-replace` flag:\n\n```shell\nterraform apply -replace=\"datadog_integration_aws_external_id.foo\"\n```","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":"!\u003eThis resource is deprecated - use the `datadog_integration_aws_account` resource instead.\n\nProvides 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.\n\n**Note**: If you are using AWS GovCloud or the AWS China* region, update the `lambda_arn` parameter for your environment.\n\n *\\*All use of Datadog Services in (or in connection with environments within) mainland China is subject to the disclaimer published in the \u003ca href=\"https://www.datadoghq.com/legal/restricted-service-locations/\"\u003eRestricted Service Locations\u003c/a\u003e section on our website.*","description_kind":"plain","deprecated":true}},"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":"!\u003eThis resource is deprecated - use the `datadog_integration_aws_account` resource instead.\n\nProvides 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","deprecated":true}},"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`, `step_functions`.","description_kind":"plain","required":true},"tag_filter_str":{"type":"string","description":"The tag filter string.","description_kind":"plain","required":true}},"description":"!\u003eThis resource is deprecated - use the `datadog_integration_aws_account` resource instead.\n\nProvides a Datadog AWS tag filter resource. This can be used to create and manage Datadog AWS tag filters.","description_kind":"plain","deprecated":true}},"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},"metrics_enabled":{"type":"bool","description":"Enable Azure metrics for your organization. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"metrics_enabled_default":{"type":"bool","description":"Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`.","description_kind":"plain","optional":true,"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},"resource_provider_configs":{"type":["list",["object",{"metrics_enabled":"bool","namespace":"string"}]],"description":"Configuration settings applied to resources from the specified Azure resource providers.","description_kind":"plain","optional":true,"computed":true},"tenant_name":{"type":"string","description":"Your Azure Active Directory ID.","description_kind":"plain","required":true},"usage_metrics_enabled":{"type":"bool","description":"Enable azure.usage metrics for your organization. Defaults to `true`.","description_kind":"plain","optional":true,"computed":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},"resources":{"type":["set","string"],"description":"An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`).","description_kind":"plain","optional":true,"computed":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,"computed":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},"cloud_run_revision_filters":{"type":["set","string"],"description":"Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored.","description_kind":"plain","optional":true},"cspm_resource_collection_enabled":{"type":"bool","description":"Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. Defaults to `false`.","description_kind":"plain","optional":true,"computed":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. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"is_resource_change_collection_enabled":{"type":"bool","description":"When enabled, Datadog scans for all resource change data in your Google Cloud environment.","description_kind":"plain","optional":true,"computed":true},"is_security_command_center_enabled":{"type":"bool","description":"When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`.","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},"resource_collection_enabled":{"type":"bool","description":"When enabled, Datadog scans for all resources in your GCP environment.","description_kind":"plain","optional":true,"computed":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"}},"datadog_integration_gcp_sts":{"version":0,"block":{"attributes":{"account_tags":{"type":["set","string"],"description":"Tags to be associated with GCP metrics and service checks from your account.","description_kind":"plain","optional":true},"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},"cloud_run_revision_filters":{"type":["set","string"],"description":"Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored.","description_kind":"plain","optional":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":"Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled.","description_kind":"plain","optional":true,"computed":true},"is_per_project_quota_enabled":{"type":"bool","description":"When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project.","description_kind":"plain","optional":true,"computed":true},"is_resource_change_collection_enabled":{"type":"bool","description":"When enabled, Datadog scans for all resource change data in your Google Cloud environment.","description_kind":"plain","optional":true,"computed":true},"is_security_command_center_enabled":{"type":"bool","description":"When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"metric_namespace_configs":{"type":["set",["object",{"disabled":"bool","id":"string"}]],"description":"Configuration for a GCP metric namespace.","description_kind":"plain","optional":true},"resource_collection_enabled":{"type":"bool","description":"When enabled, Datadog scans for all resources in your GCP environment.","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_ms_teams_tenant_based_handle":{"version":0,"block":{"attributes":{"channel_name":{"type":"string","description":"Your channel name.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Your tenant-based handle name.","description_kind":"plain","required":true},"team_name":{"type":"string","description":"Your team name.","description_kind":"plain","required":true},"tenant_name":{"type":"string","description":"Your tenant name.","description_kind":"plain","required":true}},"description":"Resource for interacting with Datadog Microsoft Teams Integration tenant-based handles.","description_kind":"plain"}},"datadog_integration_ms_teams_workflows_webhook_handle":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Your Microsoft Workflows webhook handle name.","description_kind":"plain","required":true},"url":{"type":"string","description":"Your Microsoft Workflows webhook URL.","description_kind":"plain","required":true,"sensitive":true}},"description":"Resource for interacting with Datadog Microsoft Teams integration Microsoft Workflows webhook handles.","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},"mute_buttons":{"type":"bool","description":"Show interactive buttons to mute the alerting monitor. 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. String must be a valid CIDR block or IP address.","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","optional":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},"encryption_key":{"type":"string","description":"The AWS KMS encryption key.","description_kind":"plain","optional":true},"encryption_type":{"type":"string","description":"The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `\"NO_OVERRIDE\"`.","description_kind":"plain","optional":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},"storage_class":{"type":"string","description":"The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `\"STANDARD\"`.","description_kind":"plain","optional":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_destination":{"version":0,"block":{"attributes":{"enabled":{"type":"bool","description":"Whether logs matching this custom destination should be forwarded or not.","description_kind":"plain","optional":true,"computed":true},"forward_tags":{"type":"bool","description":"Whether tags from the forwarded logs should be forwarded or not.","description_kind":"plain","optional":true,"computed":true},"forward_tags_restriction_list":{"type":["list","string"],"description":"List of [tag keys](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be filtered.\n\t\t\t\tAn empty list represents no restriction is in place and either all or no tags will be\n\t\t\t\tforwarded depending on `forward_tags_restriction_list_type` parameter.","description_kind":"plain","optional":true,"computed":true},"forward_tags_restriction_list_type":{"type":"string","description":"How the `forward_tags_restriction_list` parameter should be interpreted.\n\t\t\t\tIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\n\t\t\t\tare forwarded.\n\t\t\t\t`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list. Valid values are `ALLOW_LIST`, `BLOCK_LIST`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The custom destination name.","description_kind":"plain","required":true},"query":{"type":"string","description":"The custom destination query filter. Logs matching this query are forwarded to the destination.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"elasticsearch_destination":{"nesting_mode":"list","block":{"attributes":{"endpoint":{"type":"string","description":"The destination for which logs will be forwarded to. Must have HTTPS scheme. Forwarding back to Datadog is not allowed.","description_kind":"plain","required":true},"index_name":{"type":"string","description":"Name of the Elasticsearch index (must follow [Elasticsearch's criteria](https://www.elastic.co/guide/en/elasticsearch/reference/8.11/indices-create-index.html#indices-create-api-path-params)).","description_kind":"plain","required":true},"index_rotation":{"type":"string","description":"Date pattern with US locale and UTC timezone to be appended to the index name after adding '-'\n\t\t\t\t\t\t\t(that is, '${index_name}-${indexPattern}').\n\t\t\t\t\t\t\tYou can customize the index rotation naming pattern by choosing one of these options:\n\t\t\t\t\t\t\t- Hourly: 'yyyy-MM-dd-HH' (as an example, it would render: '2022-10-19-09')\n\t\t\t\t\t\t\t- Daily: 'yyyy-MM-dd' (as an example, it would render: '2022-10-19')\n\t\t\t\t\t\t\t- Weekly: 'yyyy-'W'ww' (as an example, it would render: '2022-W42')\n\t\t\t\t\t\t\t- Monthly: 'yyyy-MM' (as an example, it would render: '2022-10')\n\t\t\t\t\t\t\tIf this field is missing or is blank, it means that the index name will always be the same\n\t\t\t\t\t\t\t(that is, no rotation).","description_kind":"plain","optional":true}},"block_types":{"basic_auth":{"nesting_mode":"list","block":{"attributes":{"password":{"type":"string","description":"The password of the authentication. This field is not returned by the API.","description_kind":"plain","required":true,"sensitive":true},"username":{"type":"string","description":"The username of the authentication. This field is not returned by the API.","description_kind":"plain","required":true,"sensitive":true}},"description":"Basic access authentication.","description_kind":"plain"}}},"description":"The Elasticsearch destination.","description_kind":"plain"}},"http_destination":{"nesting_mode":"list","block":{"attributes":{"endpoint":{"type":"string","description":"The destination for which logs will be forwarded to. Must have HTTPS scheme. Forwarding back to Datadog is not allowed.","description_kind":"plain","required":true}},"block_types":{"basic_auth":{"nesting_mode":"list","block":{"attributes":{"password":{"type":"string","description":"The password of the authentication. This field is not returned by the API.","description_kind":"plain","required":true,"sensitive":true},"username":{"type":"string","description":"The username of the authentication. This field is not returned by the API.","description_kind":"plain","required":true,"sensitive":true}},"description":"Basic access authentication.","description_kind":"plain"}},"custom_header_auth":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The header name of the authentication.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The header value of the authentication. This field is not returned by the API.","description_kind":"plain","required":true,"sensitive":true}},"description":"Custom header access authentication.","description_kind":"plain"}}},"description":"The HTTP destination.","description_kind":"plain"}},"splunk_destination":{"nesting_mode":"list","block":{"attributes":{"access_token":{"type":"string","description":"Access token of the Splunk HTTP Event Collector. This field is not returned by the API.","description_kind":"plain","required":true,"sensitive":true},"endpoint":{"type":"string","description":"The destination for which logs will be forwarded to. Must have HTTPS scheme. Forwarding back to Datadog is not allowed.","description_kind":"plain","required":true}},"description":"The Splunk HTTP Event Collector (HEC) destination.","description_kind":"plain"}}},"description":"Provides a Datadog Logs Custom Destination API resource, which is used to create and manage Datadog log forwarding.","description_kind":"plain"}},"datadog_logs_custom_pipeline":{"version":0,"block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"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},"tags":{"type":["set","string"],"description_kind":"plain","optional":true,"computed":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":{"description":{"type":"string","description_kind":"plain","optional":true},"is_enabled":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description_kind":"plain","optional":true,"computed":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},"span_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":"Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-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},"span_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":"Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-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},"flex_retention_days":{"type":"number","description":"The total number of days logs are stored in Standard and Flex Tier before being deleted from the index.","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. Index names cannot be modified after creation. If this value is changed, a new index will be created.","description_kind":"plain","required":true},"retention_days":{"type":"number","description":"The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the 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","optional":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 not available for Service Check, Composite, or SLO monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`.","description_kind":"plain","optional":true},"priority":{"type":"string","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.\n \u003e **Note:** When the `TERRAFORM_MONITOR_EXPLICIT_RESTRICTED_ROLES` environment variable is set to `true`, this argument is treated as `Computed`. Terraform will automatically read the current restricted roles list from the Datadog API whenever the attribute is omitted. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource.","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,"computed":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`, `network-performance alert`, `cost 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"},"max_items":1},"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"},"max_items":1}},"description":"Configuration options for scheduling.","description_kind":"plain"},"max_items":1},"variables":{"nesting_mode":"list","block":{"block_types":{"cloud_cost_query":{"nesting_mode":"list","block":{"attributes":{"aggregator":{"type":"string","description":"The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`.","description_kind":"plain","optional":true},"data_source":{"type":"string","description":"The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`.","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":5},"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`, `network`.","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_monitor_notification_rule":{"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 monitor notification rule.","description_kind":"plain","required":true},"recipients":{"type":["set","string"],"description":"List of recipients to notify.","description_kind":"plain","required":true}},"block_types":{"filter":{"nesting_mode":"single","block":{"attributes":{"tags":{"type":["set","string"],"description":"All tags that target monitors must match.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"Provides a Datadog MonitorNotificationRule resource. *Note: This resource is in Preview. [Request access](https://www.datadoghq.com/product-preview/monitor-notification-rules/).*","description_kind":"plain"}},"datadog_observability_pipeline":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The pipeline name.","description_kind":"plain","required":true}},"block_types":{"config":{"nesting_mode":"single","block":{"block_types":{"destinations":{"nesting_mode":"single","block":{"block_types":{"amazon_opensearch":{"nesting_mode":"list","block":{"attributes":{"bulk_index":{"type":"string","description":"The index or datastream to write logs to.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the input for this component.","description_kind":"plain","required":true}},"block_types":{"auth":{"nesting_mode":"single","block":{"attributes":{"assume_role":{"type":"string","description":"ARN of the role to assume.","description_kind":"plain","optional":true},"aws_region":{"type":"string","description":"AWS region override (if applicable).","description_kind":"plain","optional":true},"external_id":{"type":"string","description":"External ID for assumed role.","description_kind":"plain","optional":true},"session_name":{"type":"string","description":"Session name for assumed role.","description_kind":"plain","optional":true},"strategy":{"type":"string","description":"The authentication strategy to use (e.g. aws or basic).","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"The `amazon_opensearch` destination writes logs to Amazon OpenSearch.","description_kind":"plain"}},"azure_storage":{"nesting_mode":"list","block":{"attributes":{"blob_prefix":{"type":"string","description":"Optional prefix for blobs written to the container.","description_kind":"plain","optional":true},"container_name":{"type":"string","description":"The name of the Azure Blob Storage container to store logs in.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true}},"description":"The `azure_storage` destination forwards logs to an Azure Blob Storage container.","description_kind":"plain"}},"datadog_logs":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique ID of the destination.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the destination.","description_kind":"plain","required":true}},"description":"The `datadog_logs` destination forwards logs to Datadog Log Management.","description_kind":"plain"}},"elasticsearch":{"nesting_mode":"list","block":{"attributes":{"api_version":{"type":"string","description":"The Elasticsearch API version to use. Set to `auto` to auto-detect.","description_kind":"plain","optional":true},"bulk_index":{"type":"string","description":"The index or datastream to write logs to in Elasticsearch.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true}},"description":"The `elasticsearch` destination writes logs to an Elasticsearch cluster.","description_kind":"plain"}},"google_chronicle":{"nesting_mode":"list","block":{"attributes":{"customer_id":{"type":"string","description":"The Google Chronicle customer ID.","description_kind":"plain","optional":true},"encoding":{"type":"string","description":"The encoding format for the logs sent to Chronicle.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"log_type":{"type":"string","description":"The log type metadata associated with the Chronicle destination.","description_kind":"plain","optional":true}},"block_types":{"auth":{"nesting_mode":"single","block":{"attributes":{"credentials_file":{"type":"string","description":"Path to the GCP service account key file.","description_kind":"plain","optional":true}},"description":"GCP credentials used to authenticate with Google Cloud Storage.","description_kind":"plain"}}},"description":"The `google_chronicle` destination sends logs to Google Chronicle.","description_kind":"plain"}},"google_cloud_storage":{"nesting_mode":"list","block":{"attributes":{"acl":{"type":"string","description":"Access control list setting for objects written to the bucket.","description_kind":"plain","required":true},"bucket":{"type":"string","description":"Name of the GCS bucket.","description_kind":"plain","required":true},"id":{"type":"string","description":"Unique identifier for the destination component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"key_prefix":{"type":"string","description":"Optional prefix for object keys within the GCS bucket.","description_kind":"plain","optional":true},"storage_class":{"type":"string","description":"Storage class used for objects stored in GCS.","description_kind":"plain","required":true}},"block_types":{"auth":{"nesting_mode":"single","block":{"attributes":{"credentials_file":{"type":"string","description":"Path to the GCP service account key file.","description_kind":"plain","required":true}},"description":"GCP credentials used to authenticate with Google Cloud Storage.","description_kind":"plain"}},"metadata":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The metadata key.","description_kind":"plain","required":true},"value":{"type":"string","description":"The metadata value.","description_kind":"plain","required":true}},"description":"Custom metadata key-value pairs added to each object.","description_kind":"plain"}}},"description":"The `google_cloud_storage` destination stores logs in a Google Cloud Storage (GCS) bucket.","description_kind":"plain"}},"microsoft_sentinel":{"nesting_mode":"list","block":{"attributes":{"client_id":{"type":"string","description":"Azure AD client ID used for authentication.","description_kind":"plain","required":true},"dcr_immutable_id":{"type":"string","description":"The immutable ID of the Data Collection Rule (DCR).","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"table":{"type":"string","description":"The name of the Log Analytics table where logs will be sent.","description_kind":"plain","required":true},"tenant_id":{"type":"string","description":"Azure AD tenant ID.","description_kind":"plain","required":true}},"description":"The `microsoft_sentinel` destination forwards logs to Microsoft Sentinel.","description_kind":"plain"}},"new_relic":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"region":{"type":"string","description":"The New Relic region.","description_kind":"plain","required":true}},"description":"The `new_relic` destination sends logs to the New Relic platform.","description_kind":"plain"}},"opensearch":{"nesting_mode":"list","block":{"attributes":{"bulk_index":{"type":"string","description":"The index or datastream to write logs to.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as input.","description_kind":"plain","required":true}},"description":"The `opensearch` destination writes logs to an OpenSearch cluster.","description_kind":"plain"}},"rsyslog":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"keepalive":{"type":"number","description":"Optional socket keepalive duration in milliseconds.","description_kind":"plain","optional":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol.","description_kind":"plain"}},"sentinel_one":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"region":{"type":"string","description":"The SentinelOne region to send logs to.","description_kind":"plain","required":true}},"description":"The `sentinel_one` destination sends logs to SentinelOne.","description_kind":"plain"}},"splunk_hec":{"nesting_mode":"list","block":{"attributes":{"auto_extract_timestamp":{"type":"bool","description":"If `true`, Splunk tries to extract timestamps from incoming log events.","description_kind":"plain","optional":true},"encoding":{"type":"string","description":"Encoding format for log events. Valid values: `json`, `raw_message`.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"index":{"type":"string","description":"Optional name of the Splunk index where logs are written.","description_kind":"plain","optional":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"sourcetype":{"type":"string","description":"The Splunk sourcetype to assign to log events.","description_kind":"plain","optional":true}},"description":"The `splunk_hec` destination forwards logs to Splunk using the HTTP Event Collector (HEC).","description_kind":"plain"}},"sumo_logic":{"nesting_mode":"list","block":{"attributes":{"encoding":{"type":"string","description":"The output encoding format.","description_kind":"plain","optional":true},"header_host_name":{"type":"string","description":"Optional override for the host name header.","description_kind":"plain","optional":true},"header_source_category":{"type":"string","description":"Optional override for the source category header.","description_kind":"plain","optional":true},"header_source_name":{"type":"string","description":"Optional override for the source name header.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true}},"block_types":{"header_custom_fields":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The header field name.","description_kind":"plain","optional":true},"value":{"type":"string","description":"The header field value.","description_kind":"plain","optional":true}},"description":"A list of custom headers to include in the request to Sumo Logic.","description_kind":"plain"}}},"description":"The `sumo_logic` destination forwards logs to Sumo Logic.","description_kind":"plain"}},"syslog_ng":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"keepalive":{"type":"number","description":"Optional socket keepalive duration in milliseconds.","description_kind":"plain","optional":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `syslog_ng` destination forwards logs to an external `syslog-ng` server over TCP or UDP using the syslog protocol.","description_kind":"plain"}}},"description":"List of destinations.","description_kind":"plain"}},"processors":{"nesting_mode":"single","block":{"block_types":{"add_env_vars":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this processor in the pipeline.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the input for this processor.","description_kind":"plain","required":true}},"block_types":{"variables":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"The target field in the log event.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the environment variable to read.","description_kind":"plain","required":true}},"description":"A list of environment variable mappings to apply to log fields.","description_kind":"plain"}}},"description":"The `add_env_vars` processor adds environment variable values to log events.","description_kind":"plain"}},"add_fields":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique ID of the processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the processor.","description_kind":"plain","required":true}},"block_types":{"field":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The field name to add.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value to assign to the field.","description_kind":"plain","required":true}},"description":"A list of static fields (key-value pairs) that is added to each log event processed by this component.","description_kind":"plain"}}},"description":"The `add_fields` processor adds static key-value fields to logs.","description_kind":"plain"}},"dedupe":{"nesting_mode":"list","block":{"attributes":{"fields":{"type":["list","string"],"description":"A list of log field paths to check for duplicates.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique identifier for this processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the input for this processor.","description_kind":"plain","required":true},"mode":{"type":"string","description":"The deduplication mode to apply to the fields.","description_kind":"plain","required":true}},"description":"The `dedupe` processor removes duplicate fields in log events.","description_kind":"plain"}},"enrichment_table":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the input for this processor.","description_kind":"plain","required":true},"target":{"type":"string","description":"Path where enrichment results should be stored in the log.","description_kind":"plain","required":true}},"block_types":{"file":{"nesting_mode":"single","block":{"attributes":{"path":{"type":"string","description":"Path to the CSV file.","description_kind":"plain","optional":true}},"block_types":{"encoding":{"nesting_mode":"single","block":{"attributes":{"delimiter":{"type":"string","description":"The `encoding` `delimiter`.","description_kind":"plain","optional":true},"includes_headers":{"type":"bool","description":"The `encoding` `includes_headers`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"File encoding format.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"key":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The `items` `column`.","description_kind":"plain","optional":true},"comparison":{"type":"string","description":"The comparison method (e.g. equals).","description_kind":"plain","optional":true},"field":{"type":"string","description":"The `items` `field`.","description_kind":"plain","optional":true}},"description":"Key fields used to look up enrichment values.","description_kind":"plain"}},"schema":{"nesting_mode":"list","block":{"attributes":{"column":{"type":"string","description":"The `items` `column`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the column (e.g. string, boolean, integer, etc.).","description_kind":"plain","optional":true}},"description":"Schema defining column names and their types.","description_kind":"plain"}}},"description":"Defines a static enrichment table loaded from a CSV file.","description_kind":"plain"}},"geoip":{"nesting_mode":"single","block":{"attributes":{"key_field":{"type":"string","description":"Path to the IP field in the log.","description_kind":"plain","optional":true},"locale":{"type":"string","description":"Locale used to resolve geographical names.","description_kind":"plain","optional":true},"path":{"type":"string","description":"Path to the GeoIP database file.","description_kind":"plain","optional":true}},"description":"Uses a GeoIP database to enrich logs based on an IP field.","description_kind":"plain"}}},"description":"The `enrichment_table` processor enriches logs using a static CSV file or GeoIP database.","description_kind":"plain"}},"filter":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique ID of the processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs should pass through the filter. Logs that match this query continue to downstream components; others are dropped.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the processor.","description_kind":"plain","required":true}},"description":"The `filter` processor allows conditional processing of logs based on a Datadog search query. Logs that match the `include` query are passed through; others are discarded.","description_kind":"plain"}},"generate_datadog_metrics":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this processor.","description_kind":"plain","required":true}},"block_types":{"metrics":{"nesting_mode":"list","block":{"attributes":{"group_by":{"type":["list","string"],"description":"Optional fields used to group the metric series.","description_kind":"plain","optional":true},"include":{"type":"string","description":"Datadog filter query to match logs for metric generation.","description_kind":"plain","required":true},"metric_type":{"type":"string","description":"Type of metric to create.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the custom metric to be created.","description_kind":"plain","required":true}},"block_types":{"value":{"nesting_mode":"single","block":{"attributes":{"field":{"type":"string","description":"Name of the log field containing the numeric value to increment the metric by (used only for `increment_by_field`).","description_kind":"plain","optional":true},"strategy":{"type":"string","description":"Metric value strategy: `increment_by_one` or `increment_by_field`.","description_kind":"plain","required":true}},"description":"Specifies how the value of the generated metric is computed.","description_kind":"plain"}}},"description":"Configuration for generating individual metrics.","description_kind":"plain"}}},"description":"The `generate_datadog_metrics` processor creates custom metrics from logs. Metrics can be counters, gauges, or distributions and optionally grouped by log fields.","description_kind":"plain"}},"ocsf_mapper":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component.","description_kind":"plain","required":true},"include":{"type":"string","description":"Search query to select logs.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"List of component IDs whose output is used as input.","description_kind":"plain","required":true}},"block_types":{"mapping":{"nesting_mode":"list","block":{"attributes":{"include":{"type":"string","description":"Search query for selecting which logs the mapping applies to.","description_kind":"plain","required":true},"library_mapping":{"type":"string","description":"Predefined library mapping for log transformation.","description_kind":"plain","required":true}},"description":"List of OCSF mapping entries using library mapping.","description_kind":"plain"}}},"description":"The `ocsf_mapper` processor transforms logs into the OCSF schema using predefined library mappings.","description_kind":"plain"}},"parse_grok":{"nesting_mode":"list","block":{"attributes":{"disable_library_rules":{"type":"bool","description":"If set to `true`, disables the default Grok rules provided by Datadog.","description_kind":"plain","optional":true},"id":{"type":"string","description":"A unique identifier for this processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true}},"block_types":{"rules":{"nesting_mode":"list","block":{"attributes":{"source":{"type":"string","description":"The name of the field in the log event to apply the Grok rules to.","description_kind":"plain","required":true}},"block_types":{"match_rule":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the rule.","description_kind":"plain","required":true},"rule":{"type":"string","description":"The definition of the Grok rule.","description_kind":"plain","required":true}},"description":"A list of Grok parsing rules that define how to extract fields from the source field. Each rule must contain a name and a valid Grok pattern.","description_kind":"plain"}},"support_rule":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the helper Grok rule.","description_kind":"plain","required":true},"rule":{"type":"string","description":"The definition of the helper Grok rule.","description_kind":"plain","required":true}},"description":"A list of helper Grok rules that can be referenced by the parsing rules.","description_kind":"plain"}}},"description":"The list of Grok parsing rules. If multiple parsing rules are provided, they are evaluated in order. The first successful match is applied.","description_kind":"plain"}}},"description":"The `parse_grok` processor extracts structured fields from unstructured log messages using Grok patterns.","description_kind":"plain"}},"parse_json":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"The field to parse.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique ID of the processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the processor.","description_kind":"plain","required":true}},"description":"The `parse_json` processor extracts JSON from a specified field and flattens it into the event. This is useful when logs contain embedded JSON as a string.","description_kind":"plain"}},"quota":{"nesting_mode":"list","block":{"attributes":{"drop_events":{"type":"bool","description":"Whether to drop events exceeding the limit.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique ID of the processor.","description_kind":"plain","required":true},"ignore_when_missing_partitions":{"type":"bool","description":"Whether to ignore when partition fields are missing.","description_kind":"plain","optional":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the processor.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the quota.","description_kind":"plain","required":true},"overflow_action":{"type":"string","description":"The action to take when the quota is exceeded: `drop`, `no_action`, or `overflow_routing`.","description_kind":"plain","optional":true},"partition_fields":{"type":["list","string"],"description":"List of partition fields.","description_kind":"plain","optional":true}},"block_types":{"limit":{"nesting_mode":"single","block":{"attributes":{"enforce":{"type":"string","description":"Whether to enforce by 'bytes' or 'events'. Valid values are `bytes`, `events`.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The daily quota limit.","description_kind":"plain","required":true}},"description_kind":"plain"}},"overrides":{"nesting_mode":"list","block":{"block_types":{"field":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The field name.","description_kind":"plain","required":true},"value":{"type":"string","description":"The field value.","description_kind":"plain","required":true}},"description":"Fields that trigger this override.","description_kind":"plain"}},"limit":{"nesting_mode":"single","block":{"attributes":{"enforce":{"type":"string","description":"Whether to enforce by 'bytes' or 'events'. Valid values are `bytes`, `events`.","description_kind":"plain","required":true},"limit":{"type":"number","description":"The daily quota limit.","description_kind":"plain","required":true}},"description_kind":"plain"}}},"description":"The overrides for field-specific quotas.","description_kind":"plain"}}},"description":"The `quota` measures logging traffic for logs that match a specified filter. When the configured daily quota is met, the processor can drop or alert.","description_kind":"plain"}},"reduce":{"nesting_mode":"list","block":{"attributes":{"group_by":{"type":["list","string"],"description":"A list of fields used to group log events for merging.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique identifier for this processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the input for this processor.","description_kind":"plain","required":true}},"block_types":{"merge_strategies":{"nesting_mode":"list","block":{"attributes":{"path":{"type":"string","description":"The field path in the log event.","description_kind":"plain","required":true},"strategy":{"type":"string","description":"The merge strategy to apply.","description_kind":"plain","required":true}},"description":"List of merge strategies defining how values from grouped events should be combined.","description_kind":"plain"}}},"description":"The `reduce` processor aggregates and merges logs based on matching keys and merge strategies.","description_kind":"plain"}},"remove_fields":{"nesting_mode":"list","block":{"attributes":{"fields":{"type":["list","string"],"description":"List of fields to remove from the events.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique ID of the processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the processor.","description_kind":"plain","required":true}},"description":"The `remove_fields` processor deletes specified fields from logs.","description_kind":"plain"}},"rename_fields":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique ID of the processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"The inputs for the processor.","description_kind":"plain","required":true}},"block_types":{"field":{"nesting_mode":"list","block":{"attributes":{"destination":{"type":"string","description":"Destination field name.","description_kind":"plain","required":true},"preserve_source":{"type":"bool","description":"Whether to keep the original field.","description_kind":"plain","required":true},"source":{"type":"string","description":"Source field to rename.","description_kind":"plain","required":true}},"description":"List of fields to rename.","description_kind":"plain"}}},"description":"The `rename_fields` processor changes field names.","description_kind":"plain"}},"sample":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true},"percentage":{"type":"number","description":"The percentage of logs to sample.","description_kind":"plain","optional":true},"rate":{"type":"number","description":"Number of events to sample (1 in N).","description_kind":"plain","optional":true}},"description":"The `sample` processor allows probabilistic sampling of logs at a fixed rate.","description_kind":"plain"}},"sensitive_data_scanner":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the `input` for this component.","description_kind":"plain","required":true}},"block_types":{"rules":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"A name identifying the rule.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags assigned to this rule for filtering and classification.","description_kind":"plain","optional":true}},"block_types":{"keyword_options":{"nesting_mode":"single","block":{"attributes":{"keywords":{"type":["list","string"],"description":"A list of keywords to match near the sensitive pattern.","description_kind":"plain","optional":true},"proximity":{"type":"number","description":"Maximum number of tokens between a keyword and a sensitive value match.","description_kind":"plain","optional":true}},"description":"Keyword-based proximity matching for sensitive data.","description_kind":"plain"}},"on_match":{"nesting_mode":"single","block":{"block_types":{"hash":{"nesting_mode":"single","block":{"description":"Hashes the matched value.","description_kind":"plain"}},"partial_redact":{"nesting_mode":"single","block":{"attributes":{"characters":{"type":"number","description":"Number of characters to keep.","description_kind":"plain","optional":true},"direction":{"type":"string","description":"Direction from which to keep characters: `first` or `last`.","description_kind":"plain","optional":true}},"description":"Redacts part of the matched value (e.g., keep last 4 characters).","description_kind":"plain"}},"redact":{"nesting_mode":"single","block":{"attributes":{"replace":{"type":"string","description":"Replacement string for redacted values (e.g., `***`).","description_kind":"plain","optional":true}},"description":"Redacts the matched value.","description_kind":"plain"}}},"description":"The action to take when a sensitive value is found.","description_kind":"plain"}},"pattern":{"nesting_mode":"single","block":{"block_types":{"custom":{"nesting_mode":"single","block":{"attributes":{"rule":{"type":"string","description":"A regular expression used to detect sensitive values. Must be a valid regex.","description_kind":"plain","optional":true}},"description":"Pattern detection using a custom regular expression.","description_kind":"plain"}},"library":{"nesting_mode":"single","block":{"attributes":{"id":{"type":"string","description":"Identifier for a predefined pattern from the sensitive data scanner pattern library.","description_kind":"plain","optional":true},"use_recommended_keywords":{"type":"bool","description":"Whether to augment the pattern with recommended keywords (optional).","description_kind":"plain","optional":true}},"description":"Pattern detection using a predefined pattern from the sensitive data scanner pattern library.","description_kind":"plain"}}},"description":"Pattern detection configuration for identifying sensitive data using either a custom regex or a library reference.","description_kind":"plain"}},"scope":{"nesting_mode":"single","block":{"attributes":{"all":{"type":"bool","description":"Scan all fields.","description_kind":"plain","optional":true}},"block_types":{"exclude":{"nesting_mode":"single","block":{"attributes":{"fields":{"type":["list","string"],"description":"The fields to exclude from scanning.","description_kind":"plain","optional":true}},"description":"Explicitly exclude these fields from scanning.","description_kind":"plain"}},"include":{"nesting_mode":"single","block":{"attributes":{"fields":{"type":["list","string"],"description":"The fields to include in scanning.","description_kind":"plain","optional":true}},"description":"Explicitly include these fields for scanning.","description_kind":"plain"}}},"description":"Field-level targeting options that determine where the scanner should operate.","description_kind":"plain"}}},"description":"A list of rules for identifying and acting on sensitive data patterns.","description_kind":"plain"}}},"description":"The `sensitive_data_scanner` processor detects and optionally redacts sensitive data in log events.","description_kind":"plain"}},"throttle":{"nesting_mode":"list","block":{"attributes":{"group_by":{"type":["list","string"],"description":"Optional list of fields used to group events before applying throttling.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The unique identifier for this processor.","description_kind":"plain","required":true},"include":{"type":"string","description":"A Datadog search query used to determine which logs this processor targets.","description_kind":"plain","required":true},"inputs":{"type":["list","string"],"description":"A list of component IDs whose output is used as the input for this processor.","description_kind":"plain","required":true},"threshold":{"type":"number","description":"The number of events to allow before throttling is applied.","description_kind":"plain","required":true},"window":{"type":"number","description":"The time window in seconds over which the threshold applies.","description_kind":"plain","required":true}},"description":"The `throttle` processor limits the number of events that pass through over a given time window.","description_kind":"plain"}}},"description":"List of processors.","description_kind":"plain"}},"sources":{"nesting_mode":"single","block":{"block_types":{"amazon_data_firehose":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true}},"block_types":{"auth":{"nesting_mode":"single","block":{"attributes":{"assume_role":{"type":"string","description":"The Amazon Resource Name (ARN) of the role to assume.","description_kind":"plain","optional":true},"external_id":{"type":"string","description":"A unique identifier for cross-account role assumption.","description_kind":"plain","optional":true},"session_name":{"type":"string","description":"A session identifier used for logging and tracing the assumed role session.","description_kind":"plain","optional":true}},"description":"AWS authentication credentials used for accessing AWS services such as S3. If omitted, the system’s default credentials are used (for example, the IAM role and environment variables).","description_kind":"plain"}},"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `amazon_data_firehose` source ingests logs from AWS Data Firehose.","description_kind":"plain"}},"amazon_s3":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"region":{"type":"string","description":"AWS region where the S3 bucket resides.","description_kind":"plain","required":true}},"block_types":{"auth":{"nesting_mode":"single","block":{"attributes":{"assume_role":{"type":"string","description":"The Amazon Resource Name (ARN) of the role to assume.","description_kind":"plain","optional":true},"external_id":{"type":"string","description":"A unique identifier for cross-account role assumption.","description_kind":"plain","optional":true},"session_name":{"type":"string","description":"A session identifier used for logging and tracing the assumed role session.","description_kind":"plain","optional":true}},"description":"AWS authentication credentials used for accessing AWS services such as S3. If omitted, the system’s default credentials are used (for example, the IAM role and environment variables).","description_kind":"plain"}},"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `amazon_s3` source ingests logs from an Amazon S3 bucket. It supports AWS authentication and TLS encryption.","description_kind":"plain"}},"datadog_agent":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique ID of the source.","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `datadog_agent` source collects logs from the Datadog Agent.","description_kind":"plain"}},"fluent_bit":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `fluent` source ingests logs from Fluent Bit.","description_kind":"plain"}},"fluentd":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `fluent` source ingests logs from a Fluentd-compatible service.","description_kind":"plain"}},"google_pubsub":{"nesting_mode":"list","block":{"attributes":{"decoding":{"type":"string","description":"The decoding format used to interpret incoming logs.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"project":{"type":"string","description":"The GCP project ID that owns the Pub/Sub subscription.","description_kind":"plain","required":true},"subscription":{"type":"string","description":"The Pub/Sub subscription name from which messages are consumed.","description_kind":"plain","required":true}},"block_types":{"auth":{"nesting_mode":"single","block":{"attributes":{"credentials_file":{"type":"string","description":"Path to the GCP service account key file.","description_kind":"plain","required":true}},"description":"GCP credentials used to authenticate with Google Cloud Storage.","description_kind":"plain"}},"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `google_pubsub` source ingests logs from a Google Cloud Pub/Sub subscription.","description_kind":"plain"}},"http_client":{"nesting_mode":"list","block":{"attributes":{"auth_strategy":{"type":"string","description":"Optional authentication strategy for HTTP requests.","description_kind":"plain","optional":true},"decoding":{"type":"string","description":"The decoding format used to interpret incoming logs.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"scrape_interval_secs":{"type":"number","description":"The interval (in seconds) between HTTP scrape requests.","description_kind":"plain","optional":true},"scrape_timeout_secs":{"type":"number","description":"The timeout (in seconds) for each scrape request.","description_kind":"plain","optional":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `http_client` source scrapes logs from HTTP endpoints at regular intervals.","description_kind":"plain"}},"http_server":{"nesting_mode":"list","block":{"attributes":{"auth_strategy":{"type":"string","description":"HTTP authentication method. Valid values are `none`, `plain`.","description_kind":"plain","required":true},"decoding":{"type":"string","description":"The decoding format used to interpret incoming logs. Valid values are `json`, `gelf`, `syslog`, `bytes`.","description_kind":"plain","required":true},"id":{"type":"string","description":"Unique ID for the HTTP server source.","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `http_server` source collects logs over HTTP POST from external services.","description_kind":"plain"}},"kafka":{"nesting_mode":"list","block":{"attributes":{"group_id":{"type":"string","description":"The Kafka consumer group ID.","description_kind":"plain","required":true},"id":{"type":"string","description":"The unique ID of the source.","description_kind":"plain","required":true},"topics":{"type":["list","string"],"description":"A list of Kafka topic names to subscribe to. The source ingests messages from each topic specified.","description_kind":"plain","required":true}},"block_types":{"librdkafka_option":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the librdkafka option.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the librdkafka option.","description_kind":"plain","required":true}},"description":"Advanced librdkafka client configuration options.","description_kind":"plain"}},"sasl":{"nesting_mode":"single","block":{"attributes":{"mechanism":{"type":"string","description":"SASL mechanism to use (e.g., PLAIN, SCRAM-SHA-256, SCRAM-SHA-512). Valid values are `PLAIN`, `SCRAM-SHA-256`, `SCRAM-SHA-512`.","description_kind":"plain","optional":true}},"description":"SASL authentication settings.","description_kind":"plain"}},"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `kafka` source ingests data from Apache Kafka topics.","description_kind":"plain"}},"logstash":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `logstash` source ingests logs from a Logstash forwarder.","description_kind":"plain"}},"rsyslog":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"mode":{"type":"string","description":"Protocol used by the syslog source to receive messages.","description_kind":"plain","optional":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `rsyslog` source listens for logs over TCP or UDP from an `rsyslog` server using the syslog protocol.","description_kind":"plain"}},"splunk_hec":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `splunk_hec` source implements the Splunk HTTP Event Collector (HEC) API.","description_kind":"plain"}},"splunk_tcp":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `splunk_tcp` source receives logs from a Splunk Universal Forwarder over TCP. TLS is supported for secure transmission.","description_kind":"plain"}},"sumo_logic":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true}},"description":"The `sumo_logic` source receives logs from Sumo Logic collectors.","description_kind":"plain"}},"syslog_ng":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).","description_kind":"plain","required":true},"mode":{"type":"string","description":"Protocol used by the syslog source to receive messages.","description_kind":"plain","optional":true}},"block_types":{"tls":{"nesting_mode":"single","block":{"attributes":{"ca_file":{"type":"string","description":"Path to the Certificate Authority (CA) file used to validate the server’s TLS certificate.","description_kind":"plain","optional":true},"crt_file":{"type":"string","description":"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.","description_kind":"plain","optional":true},"key_file":{"type":"string","description":"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.","description_kind":"plain","optional":true}},"description":"Configuration for enabling TLS encryption between the pipeline component and external services.","description_kind":"plain"}}},"description":"The `syslog_ng` source listens for logs over TCP or UDP from a `syslog-ng` server using the syslog protocol.","description_kind":"plain"}}},"description":"List of sources.","description_kind":"plain"}}},"description":"Configuration for the pipeline.","description_kind":"plain"}}},"description":"Provides a Datadog Observability Pipeline resource. Observability Pipelines allows you to collect and process logs within your own infrastructure, and then route them to downstream integrations. This resource is in **Preview**. Reach out to Datadog support to enable it for your account. \n\nDatadog recommends using the `-parallelism=1` option to apply this resource.","description_kind":"plain"}},"datadog_on_call_escalation_policy":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"A human-readable name for the escalation policy.","description_kind":"plain","required":true},"resolve_page_on_policy_end":{"type":"bool","description":"If true, pages will be automatically resolved if unacknowledged after the final step. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"retries":{"type":"number","description":"If set, policy will be retried this many times after the final step. Must be in the range 0-10. Value must be between 0 and 10. Defaults to `0`.","description_kind":"plain","optional":true,"computed":true},"teams":{"type":["list","string"],"description":"A list of team ids associated with the escalation policy.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"step":{"nesting_mode":"list","block":{"attributes":{"assignment":{"type":"string","description":"Specifies how this escalation step will assign targets. Can be `default` (page all targets at once) or `round-robin`. Valid values are `assignment`, `round-robin`. Defaults to `\"default\"`.","description_kind":"plain","optional":true,"computed":true},"escalate_after_seconds":{"type":"number","description":"Defines how many seconds to wait before escalating to the next step. Value must be between 60 and 36000.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this step.","description_kind":"plain","computed":true}},"block_types":{"target":{"nesting_mode":"list","block":{"attributes":{"schedule":{"type":"string","description":"Targeted schedule ID.","description_kind":"plain","optional":true},"team":{"type":"string","description":"Targeted team ID.","description_kind":"plain","optional":true},"user":{"type":"string","description":"Targeted user ID.","description_kind":"plain","optional":true}},"description":"List of targets for the step.","description_kind":"plain"}}},"description":"List of steps for the escalation policy.","description_kind":"plain"}}},"description":"Provides a Datadog On-Call escalation policy resource. This can be used to create and manage Datadog On-Call escalation policies.","description_kind":"plain"}},"datadog_on_call_schedule":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"A human-readable name for the new schedule.","description_kind":"plain","required":true},"teams":{"type":["list","string"],"description":"A list of team ids associated with the schedule.","description_kind":"plain","optional":true,"computed":true},"time_zone":{"type":"string","description":"The time zone in which the schedule is defined.","description_kind":"plain","required":true}},"block_types":{"layer":{"nesting_mode":"list","block":{"attributes":{"effective_date":{"type":"string","description":"The date/time when this layer should become active (in ISO 8601).","description_kind":"plain","required":true},"end_date":{"type":"string","description":"The date/time after which this layer no longer applies (in ISO 8601).","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this layer.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of this layer. Should be unique within the schedule.","description_kind":"plain","required":true},"rotation_start":{"type":"string","description":"The date/time when the rotation for this layer starts (in ISO 8601).","description_kind":"plain","optional":true},"users":{"type":["list","string"],"description":"List of user IDs for the layer. Can either be a valid user id or null","description_kind":"plain","required":true}},"block_types":{"interval":{"nesting_mode":"single","block":{"attributes":{"days":{"type":"number","description":"The number of full days in each rotation period.","description_kind":"plain","optional":true,"computed":true},"seconds":{"type":"number","description":"For intervals that are not expressible in whole days, this will be added to `days`. Defaults to `0`.","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"restriction":{"nesting_mode":"list","block":{"attributes":{"end_day":{"type":"string","description":"The weekday when the restriction period ends. Valid values are `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.","description_kind":"plain","optional":true},"end_time":{"type":"string","description":"The time of day when the restriction ends (hh:mm:ss).","description_kind":"plain","optional":true},"start_day":{"type":"string","description":"The weekday when the restriction period starts. Valid values are `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.","description_kind":"plain","optional":true},"start_time":{"type":"string","description":"The time of day when the restriction begins (hh:mm:ss).","description_kind":"plain","optional":true}},"description":"List of restrictions for the layer.","description_kind":"plain"}}},"description":"List of layers for the schedule.","description_kind":"plain"}}},"description":"Provides a Datadog On-Call schedule resource. This can be used to create and manage Datadog On-Call schedules.","description_kind":"plain"}},"datadog_on_call_team_routing_rules":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"ID of the team to associate the routing rules with.","description_kind":"plain","required":true}},"block_types":{"rule":{"nesting_mode":"list","block":{"attributes":{"escalation_policy":{"type":"string","description":"ID of the policy to be applied when this routing rule matches.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this rule.","description_kind":"plain","computed":true},"query":{"type":"string","description":"Defines the query or condition that triggers this routing rule. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"urgency":{"type":"string","description":"Defines the urgency for pages created via this rule. Only valid if `escalation_policy` is set. Valid values are `high`, `low`, `dynamic`.","description_kind":"plain","optional":true}},"block_types":{"action":{"nesting_mode":"list","block":{"block_types":{"send_slack_message":{"nesting_mode":"single","block":{"attributes":{"channel":{"type":"string","description":"Slack channel ID.","description_kind":"plain","optional":true},"workspace":{"type":"string","description":"Slack workspace ID.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"send_teams_message":{"nesting_mode":"single","block":{"attributes":{"channel":{"type":"string","description":"Teams channel ID.","description_kind":"plain","optional":true},"team":{"type":"string","description":"Teams team ID.","description_kind":"plain","optional":true},"tenant":{"type":"string","description":"Teams tenant ID.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Specifies the list of actions to perform when the routing rule is matched.","description_kind":"plain"}},"time_restrictions":{"nesting_mode":"single","block":{"attributes":{"time_zone":{"type":"string","description":"Specifies the time zone applicable to the restrictions, e.g. `America/New_York`.","description_kind":"plain","optional":true}},"block_types":{"restriction":{"nesting_mode":"list","block":{"attributes":{"end_day":{"type":"string","description":"The weekday when the restriction period ends. Valid values are `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.","description_kind":"plain","optional":true},"end_time":{"type":"string","description":"The time of day when the restriction ends (hh:mm:ss).","description_kind":"plain","optional":true},"start_day":{"type":"string","description":"The weekday when the restriction period starts. Valid values are `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.","description_kind":"plain","optional":true},"start_time":{"type":"string","description":"The time of day when the restriction begins (hh:mm:ss).","description_kind":"plain","optional":true}},"description":"List of restrictions for the rule.","description_kind":"plain"}}},"description":"Holds time zone information and a list of time restrictions for a routing rule.","description_kind":"plain"}}},"description":"List of team routing rules.","description_kind":"plain"}}},"description":"Provides a Datadog On-Call team routing rules resource.","description_kind":"plain"}},"datadog_openapi_api":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The API ID of this resource in Datadog.","description_kind":"plain","computed":true},"spec":{"type":"string","description":"The textual content of the OpenAPI specification. Use [`file()`](https://developer.hashicorp.com/terraform/language/functions/file) in order to reference another file in the repository (see exmaple).","description_kind":"plain","required":true}},"description":"Deprecated: use the [`datadog_software_catalog` resource](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/software_catalog) instead. Provides a Datadog OpenAPI resource. This can be used to synchronize Datadog's [API catalog](https://docs.datadoghq.com/api_catalog/) with an [OpenAPI](https://www.openapis.org/) specifications file.","description_kind":"plain","deprecated":true}},"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},"security_contacts":{"type":["list","string"],"description":"List of emails used for security event notifications from the organization.","description_kind":"plain","optional":true,"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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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"}},"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},"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 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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","optional":true},"width":{"type":"string","description":"Widget column width. Valid values are `auto`, `compact`, `full`.","description_kind":"plain","optional":true}},"description":"Widget columns.","description_kind":"plain"},"min_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"clustering_pattern_field_path":{"type":"string","description":"Specifies the field for logs pattern clustering. Can only be used with `logs_pattern_stream`.","description_kind":"plain","optional":true},"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`, `rum_stream`, `llm_observability_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":{"group_by":{"nesting_mode":"list","block":{"attributes":{"facet":{"type":"string","description":"Facet name","description_kind":"plain","required":true}},"description":"Group by configuration for the List Stream widget. Group by can only be used with `logs_pattern_stream` (up to 4 items) or `logs_transaction_stream` (one group by item is required) list stream source.","description_kind":"plain"}},"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. Valid values are `number`, `bar`, `trend`.","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`, `trend`.","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`, `trend`.","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":{"cell_display_mode_options":{"nesting_mode":"list","block":{"attributes":{"trend_type":{"type":"string","description":"The type of trend line to display. Valid values are `area`, `line`, `bars`.","description_kind":"plain","optional":true},"y_scale":{"type":"string","description":"The scale of the y-axis. Valid values are `shared`, `independent`.","description_kind":"plain","optional":true}},"description":"A list of display modes for each table cell.","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"}},"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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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},"text_formats":{"nesting_mode":"list","block":{"block_types":{"text_format":{"nesting_mode":"list","block":{"attributes":{"custom_bg_color":{"type":"string","description":"The custom color palette to apply to the background.","description_kind":"plain","optional":true},"custom_fg_color":{"type":"string","description":"The custom color palette to apply to the foreground text.","description_kind":"plain","optional":true},"palette":{"type":"string","description":"The color palette to apply. Valid values are `white_on_red`, `white_on_yellow`, `white_on_green`, `black_on_light_red`, `black_on_light_yellow`, `black_on_light_green`, `red_on_white`, `yellow_on_white`, `green_on_white`, `custom_bg`, `custom_text`.","description_kind":"plain","optional":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Match or compare option. Valid values are `is`, `is_not`, `contains`, `does_not_contain`, `starts_with`, `ends_with`.","description_kind":"plain","required":true},"value":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"min_items":1,"max_items":1},"replace":{"nesting_mode":"list","block":{"attributes":{"substring":{"type":"string","description":"Text that will be replaced. Must be used with type `substring`.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Table widget text format replace all type.","description_kind":"plain","required":true},"with":{"type":"string","description":"Table Widget Match String.","description_kind":"plain","required":true}},"description":"Match rule for the table widget text format.","description_kind":"plain"},"max_items":1}},"description":"The text format to apply to the items in a table widget column.","description_kind":"plain"}}},"description":"Text formats define how to format text in table widget content. Multiple `text_formats` blocks are allowed using the structure below. This resource is in beta and is subject to change.","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 (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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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"}},"style":{"nesting_mode":"list","block":{"attributes":{"palette":{"type":"string","description":"The color palette for the widget.","description_kind":"plain","optional":true},"scaling":{"type":"string","description":"The scaling mode for the widget. Valid values are `absolute`, `relative`.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"display":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"The display type for the widget.","description_kind":"plain","required":true}},"description":"The display mode for the widget.","description_kind":"plain"}}},"description":"The style of the widget","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":{"custom_links":{"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":{"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`, `trend`.","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},"number_format":{"nesting_mode":"list","block":{"block_types":{"unit":{"nesting_mode":"list","block":{"block_types":{"canonical":{"nesting_mode":"list","block":{"attributes":{"per_unit_name":{"type":"string","description":"per unit name. If you want to represent megabytes/s, you set 'unit_name' = 'megabyte' and 'per_unit_name = 'second'","description_kind":"plain","optional":true},"unit_name":{"type":"string","description":"Unit name. It should be in singular form ('megabyte' and not 'megabytes')","description_kind":"plain","required":true}},"description":"Canonical Units","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"attributes":{"label":{"type":"string","description":"Unit label","description_kind":"plain","required":true}},"description":"Use custom (non canonical metrics)","description_kind":"plain"},"max_items":1}},"description":"Unit of the number format.","description_kind":"plain"},"min_items":1,"max_items":1},"unit_scale":{"nesting_mode":"list","block":{"attributes":{"unit_name":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description":"Number formatting options for the formula.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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":{"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","description_kind":"plain","optional":true},"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`, `incident_analytics`.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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},"cross_org_uuids":{"type":["list","string"],"description":"The source organization UUID for cross organization queries. Feature in Private Beta.","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`, `good_minutes`, `bad_minutes`, `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`, `monitor`, `time_slice`. 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\nResources to define `resource_type` : \n* [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access)\n* [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources)\n\nRestrictions :\n* Dashboards : support is in private beta. Reach out to your Datadog contact or support to enable this.\n* Monitors : Management of restriction policy through terraform is currently not available","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`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field.","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":{"default_permissions_opt_out":{"type":"bool","description":"If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. The `include_restricted` attribute for the `datadog_permissions` data source must be set to `true` to manage default permissions in Terraform.","description_kind":"plain","optional":true},"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_rum_metric":{"version":0,"block":{"attributes":{"event_type":{"type":"string","description":"The type of RUM events to filter on.","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 RUM-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.","description_kind":"plain","required":true},"include_percentiles":{"type":"bool","description":"Toggle to include or exclude percentile aggregations for distribution metrics. Only present when `aggregation_type` is `distribution`.","description_kind":"plain","optional":true},"path":{"type":"string","description":"The path to the value the RUM-based metric will aggregate on. Only present when `aggregation_type` is `distribution`.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"filter":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"The search query. Follows RUM search syntax.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"group_by":{"nesting_mode":"set","block":{"attributes":{"path":{"type":"string","description":"The path to the value the RUM-based metric will be aggregated over.","description_kind":"plain","optional":true},"tag_name":{"type":"string","description":"Name of the tag that gets created. By default, `path` is used as the tag name.","description_kind":"plain","optional":true}},"description_kind":"plain"}},"uniqueness":{"nesting_mode":"single","block":{"attributes":{"when":{"type":"string","description":"When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description":"Provides a Datadog RumMetric resource. This can be used to create and manage Datadog rum_metric.","description_kind":"plain"}},"datadog_rum_retention_filter":{"version":0,"block":{"attributes":{"application_id":{"type":"string","description":"RUM application ID.","description_kind":"plain","required":true},"enabled":{"type":"bool","description":"Whether the retention filter is to be enabled. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"event_type":{"type":"string","description":"The type of RUM events to filter on.","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 a RUM retention filter.","description_kind":"plain","required":true},"query":{"type":"string","description":"The Query string for a RUM retention filter. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"sample_rate":{"type":"number","description":"The sample rate for a RUM retention filter, between 0 and 100.","description_kind":"plain","required":true}},"description":"Provides a Datadog RumRetentionFilter resource. This can be used to create and manage Datadog rum_retention_filter.","description_kind":"plain"}},"datadog_rum_retention_filters_order":{"version":0,"block":{"attributes":{"application_id":{"type":"string","description":"RUM application ID.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"retention_filter_ids":{"type":["list","string"],"description":"RUM retention filter ID list. The order of IDs in this attribute defines the order of RUM retention filters.","description_kind":"plain","required":true}},"description":"Provides a Datadog RumRetentionFiltersOrder resource. This is used to manage the order of Datadog RUM retention filters. Please note that retention_filter_ids should contain all IDs of retention filters, including the default ones created internally for a given RUM application.","description_kind":"plain"}},"datadog_security_monitoring_default_rule":{"version":0,"block":{"attributes":{"custom_tags":{"type":["set","string"],"description":"Custom tags for generated signals.","description_kind":"plain","optional":true},"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},"group_signals_by":{"type":["list","string"],"description":"Additional grouping to perform on top of the query grouping.","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. Note: if default tags are present at provider level, they will be added to this resource.","description_kind":"plain","optional":true,"computed":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},"validate":{"type":"bool","description":"Whether or not to validate the Rule.","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}},"block_types":{"action":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`.","description_kind":"plain","required":true}},"block_types":{"options":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"number","description":"Duration of the action in seconds.","description_kind":"plain","optional":true}},"description":"Options for the action.","description_kind":"plain"},"max_items":1}},"description":"Action to perform when the case trigger","description_kind":"plain"}}},"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. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules.","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`, `anomaly_threshold`. 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`, `10800`, `21600`, `43200`, `86400`.","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`, `43200`, `86400`.","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},"data_source":{"type":"string","description":"Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `\"logs\"`.","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"}},"reference_tables":{"nesting_mode":"list","block":{"attributes":{"check_presence":{"type":"bool","description":"Whether to include or exclude logs that match the reference table.","description_kind":"plain","required":true},"column_name":{"type":"string","description":"The name of the column in the reference table.","description_kind":"plain","required":true},"log_field_path":{"type":"string","description":"The field in the log that should be matched against the reference table.","description_kind":"plain","required":true},"rule_query_name":{"type":"string","description":"The name of the query to filter.","description_kind":"plain","required":true},"table_name":{"type":"string","description":"The name of the reference table.","description_kind":"plain","required":true}},"description":"Reference tables for filtering query results.","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_rule_json":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"json":{"type":"string","description":"The JSON definition of the Security Monitoring Rule.","description_kind":"plain","required":true}},"description":"Provides a Datadog Security Monitoring Rule JSON resource. This can be used to create and manage Datadog security monitoring rules using raw JSON.","description_kind":"plain"}},"datadog_security_monitoring_suppression":{"version":0,"block":{"attributes":{"data_exclusion_query":{"type":"string","description":"An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule.","description_kind":"plain","optional":true},"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},"start_date":{"type":"string","description":"A RFC3339 timestamp giving a start date for the suppression rule. Before this date, it doesn't suppress signals.","description_kind":"plain","optional":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. It uses the same syntax as the queries to search signals in the Signals Explorer.","description_kind":"plain","optional":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_security_notification_rule":{"version":0,"block":{"attributes":{"created_at":{"type":"number","description":"Indicates when this rule was created.","description_kind":"plain","computed":true},"created_by_handle":{"type":"string","description":"The handle of the rule creator.","description_kind":"plain","computed":true},"created_by_name":{"type":"string","description":"The name of the rule creator.","description_kind":"plain","computed":true},"enabled":{"type":"bool","description":"Indicates whether the rule is enabled. Defaults to `true`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"modified_at":{"type":"number","description":"Indicates when this rule was last modified.","description_kind":"plain","computed":true},"modified_by_handle":{"type":"string","description":"The handle of the rule last modifier.","description_kind":"plain","computed":true},"modified_by_name":{"type":"string","description":"The name of the rule last modifier.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the rule (must be unique).","description_kind":"plain","required":true},"targets":{"type":["set","string"],"description":"The list of handle targets for the notifications. A target must be prefixed with an @. It can be an email address (@bob@email.com), or any installed integration. For example, a Slack recipient (@slack-ops), or a Teams recipient (@teams-ops).","description_kind":"plain","required":true},"time_aggregation":{"type":"number","description":"Specifies the time period, in seconds, used to aggregate the notification. Defaults to `0`.","description_kind":"plain","optional":true,"computed":true},"version":{"type":"number","description":"The rule version (incremented at each update).","description_kind":"plain","computed":true}},"block_types":{"selectors":{"nesting_mode":"single","block":{"attributes":{"query":{"type":"string","description":"Comprises one or several key:value pairs for filtering security issues based on tags and attributes. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"rule_types":{"type":["set","string"],"description":"Specifies security rule types for filtering signals and vulnerabilities that generate notifications.","description_kind":"plain","required":true},"severities":{"type":["set","string"],"description":"The security rules severities to consider.","description_kind":"plain","optional":true,"computed":true},"trigger_source":{"type":"string","description":"The type of security issues the rule applies to. Use `security_signals` for rules based on security signals and `security_findings` for those based on vulnerabilities.","description_kind":"plain","required":true}},"description":"Defines selectors to filter security issues that generate notifications.","description_kind":"plain"}}},"description":"Provides a Datadog Security Monitoring Notification Rule API resource for creating and managing Datadog security notification 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},"priority":{"type":"number","description":"Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important).","description_kind":"plain","optional":true,"computed":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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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 of role IDs to assign to the service account.","description_kind":"plain","optional":true,"computed":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},"scopes":{"type":["set","string"],"description":"Authorization scopes for the Application Key. Application Keys configured with no scopes have full access.","description_kind":"plain","optional":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. If default tags are present at the provider level, they will be added to this resource.","description_kind":"plain","optional":true,"computed":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. It checks if monitors added to a monitor SLO already exist.","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},"query_interval_seconds":{"type":"number","description":"The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`.","description_kind":"plain","optional":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. Optionally, a fourth part, the query interval, can be provided.","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_software_catalog":{"version":0,"block":{"attributes":{"entity":{"type":"string","description":"The catalog entity definition. Entity must be a valid entity YAML/JSON structure.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Provides a Datadog Software Catalog Entity resource. This can be used to create and manage entities in Datadog Software Catalog using the YAML/JSON definition.","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,"computed":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. Value must be at least 1.","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. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"is_fido":{"type":"bool","description":"If set to true, the global variable is a FIDO variable. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"is_totp":{"type":"bool","description":"If set to true, the global variable is a TOTP variable. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Synthetics global variable name. Must be all uppercase with underscores.","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. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead.","description_kind":"plain","deprecated":true,"optional":true},"secure":{"type":"bool","description":"If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. Defaults to `false`.","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["list","string"],"description":"A list of tags to associate with your synthetics global variable.","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description":"The value of the global variable. Required unless `is_fido` is set to `true`.","description_kind":"plain","optional":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. Value must be between 4 and 10.","description_kind":"plain","required":true},"refresh_interval":{"type":"number","description":"Interval for which to refresh the token (in seconds). Value must be between 0 and 999.","description_kind":"plain","required":true}},"description":"Parameters needed for MFA/TOTP.","description_kind":"plain"}}},"description":"Additional options for the variable, such as a MFA token.","description_kind":"plain"}},"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`, `http_status_code`, `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"}}},"description":"ID of the Synthetics test to use a source of the global variable value.","description_kind":"plain"}}},"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":{"api_key":{"type":"string","description":"API key used to generate the private location configuration.","description_kind":"plain","optional":true,"sensitive":true},"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. Defaults to `\"\"`.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","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,"computed":true}},"block_types":{"metadata":{"nesting_mode":"list","block":{"attributes":{"restricted_roles":{"type":["set","string"],"description":"A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead.","description_kind":"plain","deprecated":true,"optional":true}},"description":"The private location metadata","description_kind":"plain"}}},"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":{"config_initial_application_arguments":{"type":["map","string"],"description":"Initial application arguments for the mobile test.","description_kind":"plain","optional":true},"device_ids":{"type":["list","string"],"description":"Required if `type = \"browser\"`. Array with the different device IDs used to run the test.","description_kind":"plain","optional":true},"force_delete_dependencies":{"type":"bool","description":"A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors).","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 or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true).","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 request.","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`, `mobile`.","description_kind":"plain","required":true},"variables_from_script":{"type":"string","description":"Variables defined from JavaScript code for API HTTP tests.","description_kind":"plain","optional":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},"exit_if_succeed":{"type":"bool","description":"Determines whether or not to exit the test if the step succeeds.","description_kind":"plain","optional":true},"extracted_values_from_script":{"type":"string","description":"Generate variables using JavaScript.","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_metadata":{"type":["map","string"],"description":"Metadata to include when performing the gRPC request.","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 multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `\"http\"`.","description_kind":"plain","optional":true},"value":{"type":"number","description":"The time to wait in seconds. Minimum value: 0. Maximum value: 180.","description_kind":"plain","optional":true}},"block_types":{"assertion":{"nesting_mode":"list","block":{"attributes":{"code":{"type":"string","description":"If assertion type is `javascript`, this is the JavaScript code that performs the assertions.","description_kind":"plain","optional":true},"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","optional":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`, `bodyHash`, `javascript`.","description_kind":"plain","required":true}},"block_types":{"targetjsonpath":{"nesting_mode":"list","block":{"attributes":{"elementsoperator":{"type":"string","description":"The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `\"firstElementMatches\"`.","description_kind":"plain","optional":true},"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},"targetjsonschema":{"nesting_mode":"list","block":{"attributes":{"jsonschema":{"type":"string","description":"The JSON Schema to validate the body against.","description_kind":"plain","required":true},"metaschema":{"type":"string","description":"The meta schema to use for the JSON Schema. Defaults to `\"draft-07\"`.","description_kind":"plain","optional":true}},"description":"Expected structure if `operator` is `validatesJSONSchema`. 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` or `grpc_metadata`, name of the header or metadatum to extract.","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 `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`.","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":{"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 a 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`, `application/octet-stream`, `multipart/form-data`.","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},"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},"dns_server":{"type":"string","description":"DNS server to use for DNS tests (`subtype = \"dns\"`).","description_kind":"plain","optional":true},"dns_server_port":{"type":"string","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},"form":{"type":["map","string"],"description":"Form data to be sent when `body_type` is `multipart/form-data`.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host name to perform the test with.","description_kind":"plain","optional":true},"http_version":{"type":"string","description":"HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `\"any\"`.","description_kind":"plain","optional":true},"is_message_base64_encoded":{"type":"bool","description":"Whether the message is base64-encoded.","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":"string","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.","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_file":{"nesting_mode":"list","block":{"attributes":{"bucket_key":{"type":"string","description":"Bucket key of the file.","description_kind":"plain","computed":true},"content":{"type":"string","description":"Content of the file.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the file.","description_kind":"plain","required":true},"original_file_name":{"type":"string","description":"Original name of the file.","description_kind":"plain","optional":true},"size":{"type":"number","description":"Size of the file.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the file.","description_kind":"plain","required":true}},"description":"Files to be used as part of the request in the test.","description_kind":"plain"}},"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. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`.","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description":"Steps for multi-step api tests","description_kind":"plain"}},"assertion":{"nesting_mode":"list","block":{"attributes":{"code":{"type":"string","description":"If assertion type is `javascript`, this is the JavaScript code that performs the assertions.","description_kind":"plain","optional":true},"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","optional":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`, `bodyHash`, `javascript`.","description_kind":"plain","required":true}},"block_types":{"targetjsonpath":{"nesting_mode":"list","block":{"attributes":{"elementsoperator":{"type":"string","description":"The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `\"firstElementMatches\"`.","description_kind":"plain","optional":true},"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},"targetjsonschema":{"nesting_mode":"list","block":{"attributes":{"jsonschema":{"type":"string","description":"The JSON Schema to validate the body against.","description_kind":"plain","required":true},"metaschema":{"type":"string","description":"The meta schema to use for the JSON Schema. Defaults to `\"draft-07\"`.","description_kind":"plain","optional":true}},"description":"Expected structure if `operator` is `validatesJSONSchema`. 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},"always_execute":{"type":"bool","description":"Determines whether or not to always execute this step even if the previous step failed or was skipped.","description_kind":"plain","optional":true},"exit_if_succeed":{"type":"bool","description":"Determines whether or not to exit the test if the step succeeds.","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},"local_key":{"type":"string","description":"A unique identifier used to track steps after reordering.","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},"public_id":{"type":"string","description":"The identifier of the step on the backend.","description_kind":"plain","computed":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`, `assertRequests`, `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},"click_with_javascript":{"type":"bool","description":"Whether to use `element.click()` for a \"click\" step. This is a more reliable way to interact with elements but does not emulate a real user interaction.","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, JSON encoded string.","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. Refer to the examples for a usage example showing the schema.","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},"requests":{"type":"string","description":"Details of the requests for an \"assert request\" step, JSON encoded string. Refer to the examples for a usage example showing the schema.","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},"secure":{"type":"bool","description":"Whether the value of this variable will be obfuscated in test results. Defaults to `false`.","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`, `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`, `email`.","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"}},"mobile_options_list":{"nesting_mode":"list","block":{"attributes":{"allow_application_crash":{"type":"bool","description_kind":"plain","optional":true},"default_step_timeout":{"type":"number","description_kind":"plain","optional":true},"device_ids":{"type":["list","string"],"description_kind":"plain","required":true},"disable_auto_accept_alert":{"type":"bool","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},"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. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead.","description_kind":"plain","deprecated":true,"optional":true},"tick_every":{"type":"number","description":"How often the test should run (in seconds). Valid range is `300-604800` for mobile tests.","description_kind":"plain","required":true},"verbosity":{"type":"number","description_kind":"plain","optional":true}},"block_types":{"bindings":{"nesting_mode":"list","block":{"attributes":{"principals":{"type":["list","string"],"description_kind":"plain","optional":true},"relation":{"type":"string","description":"Valid values are `editor`, `viewer`.","description_kind":"plain","optional":true}},"description":"Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource","description_kind":"plain"}},"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","required":true}},"description":"CI/CD options for a Synthetic test.","description_kind":"plain"},"max_items":1},"mobile_application":{"nesting_mode":"list","block":{"attributes":{"application_id":{"type":"string","description_kind":"plain","required":true},"reference_id":{"type":"string","description_kind":"plain","required":true},"reference_type":{"type":"string","description":"Valid values are `latest`, `version`.","description_kind":"plain","required":true}},"description_kind":"plain"},"min_items":1,"max_items":1},"monitor_options":{"nesting_mode":"list","block":{"attributes":{"escalation_message":{"type":"string","description":"A message to include with a re-notification.","description_kind":"plain","optional":true},"notification_preset_name":{"type":"string","description":"The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`.","description_kind":"plain","optional":true},"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},"renotify_occurrences":{"type":"number","description":"The number of times a monitor renotifies. It can only be set if `renotify_interval` is set.","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. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`.","description_kind":"plain","optional":true}},"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},"mobile_step":{"nesting_mode":"list","block":{"attributes":{"allow_failure":{"type":"bool","description":"A boolean set to allow this step to fail.","description_kind":"plain","optional":true},"has_new_step_element":{"type":"bool","description":"A boolean set to determine if the step has a new step element.","description_kind":"plain","optional":true},"is_critical":{"type":"bool","description":"A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the step.","description_kind":"plain","required":true},"no_screenshot":{"type":"bool","description":"A boolean set to not take a screenshot for the step.","description_kind":"plain","optional":true},"public_id":{"type":"string","description":"The public ID of the step.","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"The time before declaring a step failed.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`.","description_kind":"plain","required":true}},"block_types":{"params":{"nesting_mode":"list","block":{"attributes":{"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},"delay":{"type":"number","description":"Delay between each key stroke for a \"type test\" step.","description_kind":"plain","optional":true},"direction":{"type":"string","description":"Valid values are `up`, `down`, `left`, `right`.","description_kind":"plain","optional":true},"enable":{"type":"bool","description_kind":"plain","optional":true},"max_scrolls":{"type":"number","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_enter":{"type":"bool","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":{"nesting_mode":"list","block":{"attributes":{"context":{"type":"string","description_kind":"plain","optional":true},"context_type":{"type":"string","description":"Valid values are `native`, `web`.","description_kind":"plain","optional":true},"element_description":{"type":"string","description_kind":"plain","optional":true},"multi_locator":{"type":["map","string"],"description_kind":"plain","optional":true},"text_content":{"type":"string","description_kind":"plain","optional":true},"view_name":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"relative_position":{"nesting_mode":"list","block":{"attributes":{"x":{"type":"number","description_kind":"plain","optional":true},"y":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1},"user_locator":{"nesting_mode":"list","block":{"attributes":{"fail_test_on_cannot_locate":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"values":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`.","description_kind":"plain","optional":true},"value":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":5}},"description_kind":"plain"},"max_items":1}},"description":"Element to use for the step, JSON encoded string.","description_kind":"plain"},"max_items":1},"positions":{"nesting_mode":"list","block":{"attributes":{"x":{"type":"number","description_kind":"plain","optional":true},"y":{"type":"number","description_kind":"plain","optional":true}},"description_kind":"plain"}},"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","required":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 mobile tests","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 a 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 an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `\"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. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead.","description_kind":"plain","deprecated":true,"optional":true},"tick_every":{"type":"number","description":"How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests.","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":{"escalation_message":{"type":"string","description":"A message to include with a re-notification.","description_kind":"plain","optional":true},"notification_preset_name":{"type":"string","description":"The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`.","description_kind":"plain","optional":true},"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},"renotify_occurrences":{"type":"number","description":"The number of times a monitor renotifies. It can only be set if `renotify_interval` is set.","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. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`.","description_kind":"plain","optional":true},"interval":{"type":"number","description":"Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. 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`, `application/octet-stream`, `multipart/form-data`.","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":"string","description":"DNS server port to use for DNS tests.","description_kind":"plain","optional":true},"form":{"type":["map","string"],"description":"Form data to be sent when `body_type` is `multipart/form-data`.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host name to perform the test with.","description_kind":"plain","optional":true},"http_version":{"type":"string","description":"HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead.","description_kind":"plain","deprecated":true,"optional":true},"is_message_base64_encoded":{"type":"bool","description":"Whether the message is base64-encoded.","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":"string","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.","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_file":{"nesting_mode":"list","block":{"attributes":{"bucket_key":{"type":"string","description":"Bucket key of the file.","description_kind":"plain","computed":true},"content":{"type":"string","description":"Content of the file.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the file.","description_kind":"plain","required":true},"original_file_name":{"type":"string","description":"Original name of the file.","description_kind":"plain","optional":true},"size":{"type":"number","description":"Size of the file.","description_kind":"plain","required":true},"type":{"type":"string","description":"Type of the file.","description_kind":"plain","required":true}},"description":"Files to be used as part of the request in the test.","description_kind":"plain"}},"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 dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values.","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":"User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication.","description_kind":"plain","optional":true,"computed":true},"roles":{"type":["set","string"],"description":"A list of role IDs to assign to the user.","description_kind":"plain","optional":true,"computed":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_user_role":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"role_id":{"type":"string","description":"ID of the role that the user is assigned to.","description_kind":"plain","required":true},"user_id":{"type":"string","description":"The ID of the user.","description_kind":"plain","required":true}},"description":"Provides a Datadog UserRole resource. This can be used to create and manage Datadog User Roles. Conflicts may occur if used together with the `datadog_user` resource's `roles` attribute or the `datadog_service_account` resource's `roles` attribute. This resource is in beta and is subject to change.","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":"The ID of this resource.","description_kind":"plain","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":"The ID of this resource.","description_kind":"plain","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"}},"datadog_workflow_automation":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the workflow.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the workflow. String length must be at least 1.","description_kind":"plain","required":true},"published":{"type":"bool","description":"Set the workflow to published or unpublished. Workflows in an unpublished state are only executable through manual runs. Automatic triggers such as Schedule do not execute the workflow until it is published.","description_kind":"plain","required":true},"spec_json":{"type":"string","description":"The spec defines what the workflow does.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"Tags of the workflow.","description_kind":"plain","required":true},"webhook_secret":{"type":"string","description":"If a webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here. String length must be at least 16.","description_kind":"plain","optional":true,"sensitive":true}},"description":"Enables the creation and management of Datadog workflows using Workflow Automation. To easily export a workflow for use with Terraform, click the export button in the Datadog Workflow Automation UI cog menu. This resource requires scoped application keys for authentication.","description_kind":"plain"}}},"data_source_schemas":{"datadog_action_connection":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"ID for Connection.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the connection","description_kind":"plain","computed":true}},"block_types":{"aws":{"nesting_mode":"single","block":{"block_types":{"assume_role":{"nesting_mode":"single","block":{"attributes":{"account_id":{"type":"string","description":"AWS account that the connection is created for","description_kind":"plain","computed":true},"external_id":{"type":"string","description":"External ID that specifies which connection can be used to assume the role","description_kind":"plain","computed":true},"principal_id":{"type":"string","description":"AWS account that will assume the role","description_kind":"plain","computed":true},"role":{"type":"string","description":"Role to assume","description_kind":"plain","computed":true}},"description":"Configuration for an assume role AWS connection","description_kind":"plain"}}},"description":"Configuration for an AWS connection","description_kind":"plain"}},"http":{"nesting_mode":"single","block":{"attributes":{"base_url":{"type":"string","description":"Base HTTP url for the integration","description_kind":"plain","computed":true}},"block_types":{"token_auth":{"nesting_mode":"single","block":{"block_types":{"body":{"nesting_mode":"single","block":{"attributes":{"content":{"type":"string","description":"Serialized body content","description_kind":"plain","computed":true},"content_type":{"type":"string","description":"Content type of the body","description_kind":"plain","computed":true}},"description":"Body for HTTP authentication","description_kind":"plain"}},"header":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Header name","description_kind":"plain","computed":true},"value":{"type":"string","description_kind":"plain","computed":true}},"description":"Header for HTTP authentication","description_kind":"plain"}},"token":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Token name","description_kind":"plain","computed":true},"type":{"type":"string","description":"Token type","description_kind":"plain","computed":true},"value":{"type":"string","description":"Token value","description_kind":"plain","computed":true,"sensitive":true}},"description":"Token for HTTP authentication","description_kind":"plain"}},"url_parameter":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"URL parameter name","description_kind":"plain","computed":true},"value":{"type":"string","description":"URL parameter value","description_kind":"plain","computed":true}},"description":"URL parameter for HTTP authentication","description_kind":"plain"}}},"description":"Configuration for an HTTP connection that uses token auth","description_kind":"plain"}}},"description":"Configuration for an HTTP connection","description_kind":"plain"}}},"description":"A connection that can be used in Actions, including in the Workflow Automation and App Builder products.","description_kind":"plain"}},"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},"remote_config_read_enabled":{"type":"bool","description":"Whether the API key is used for remote config.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about an existing api key. Deprecated. This will be removed in a future release with prior notice. Securely store your API keys using a secret management system or use the datadog_api_key resource to manage API keys in your Datadog account.","description_kind":"plain","deprecated":true}},"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_app_builder_app":{"version":0,"block":{"attributes":{"action_query_names_to_connection_ids":{"type":["map","string"],"description":"A map of the App's Action Query Names to Action Connection IDs.","description_kind":"plain","computed":true},"app_json":{"type":"string","description":"The JSON representation of the App.","description_kind":"plain","computed":true},"description":{"type":"string","description":"The human-readable description of the App.","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID for the App.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the App.","description_kind":"plain","computed":true},"published":{"type":"bool","description":"Whether the app is published or unpublished. Published apps are available to other users. To ensure the app is accessible to the correct users, you also need to set a [Restriction Policy](https://docs.datadoghq.com/api/latest/restriction-policies/) on the app if a policy does not yet exist.","description_kind":"plain","computed":true},"root_instance_name":{"type":"string","description":"The name of the root component of the app. This is a grid component that contains all other components.","description_kind":"plain","computed":true}},"description":"This data source retrieves the definition of an existing Datadog App from App Builder for use in other resources, such as embedding Apps in Dashboards.","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. Deprecated. This will be removed in a future release with prior notice. Securely store your application keys using a secret management system or use the datadog_application_key resource to manage application keys in your Datadog account.","description_kind":"plain","deprecated":true}},"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. Deprecated, use datadog_csm_threats_agent_rules data source instead: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/data-sources/csm_threats_agent_rules","description_kind":"plain","deprecated":true}},"datadog_cost_budget":{"version":0,"block":{"attributes":{"end_month":{"type":"number","description":"The month when the budget ends (YYYYMM).","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of the budget.","description_kind":"plain","required":true},"metrics_query":{"type":"string","description":"The cost query used to track against the budget.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the budget.","description_kind":"plain","computed":true},"start_month":{"type":"number","description":"The month when the budget starts (YYYYMM).","description_kind":"plain","computed":true},"total_amount":{"type":"number","description":"The sum of all budget entries' amounts.","description_kind":"plain","computed":true}},"block_types":{"entries":{"nesting_mode":"list","block":{"attributes":{"amount":{"type":"number","description_kind":"plain","computed":true},"month":{"type":"number","description_kind":"plain","computed":true}},"block_types":{"tag_filters":{"nesting_mode":"list","block":{"attributes":{"tag_key":{"type":"string","description_kind":"plain","computed":true},"tag_value":{"type":"string","description_kind":"plain","computed":true}},"description_kind":"plain"}}},"description":"The entries of the budget.","description_kind":"plain"}}},"description":"Use this data source to retrieve information about an existing Datadog cost budget.","description_kind":"plain"}},"datadog_csm_threats_agent_rules":{"version":0,"block":{"attributes":{"agent_rules":{"type":["list",["object",{"actions":["list",["object",{"set":["object",{"append":"bool","field":"string","name":"string","scope":"string","size":"number","ttl":"number","value":"string"}]}]],"description":"string","enabled":"bool","expression":"string","id":"string","name":"string","product_tags":["set","string"]}]],"description":"List of Agent rules","description_kind":"plain","computed":true},"agent_rules_ids":{"type":["list","string"],"description":"List of IDs for the Agent rules.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of the data source","description_kind":"plain","computed":true},"policy_id":{"type":"string","description":"Listing only the rules in the policy with this field as the ID","description_kind":"plain","optional":true}},"description":"Use this data source to retrieve information about existing Agent rules.","description_kind":"plain"}},"datadog_csm_threats_policies":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"policies":{"type":["list",["object",{"description":"string","enabled":"bool","host_tags_lists":["set",["list","string"]],"id":"string","name":"string","tags":["set","string"]}]],"description":"List of policies","description_kind":"plain","computed":true},"policy_ids":{"type":["list","string"],"description":"List of IDs for the policies.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing policies.","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"],"tags_by_source":["map",["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_available_logs_services":{"version":0,"block":{"attributes":{"aws_logs_services":{"type":["list","string"],"description":"List of AWS log ready services.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve all AWS log ready services. This is the list of allowed values for `logs_config.lambda_forwarder.sources` in [`datadog_integration_aws_account` resource](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account).","description_kind":"plain"}},"datadog_integration_aws_available_namespaces":{"version":0,"block":{"attributes":{"aws_namespaces":{"type":["list","string"],"description":"List of available AWS namespaces.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve all available AWS namespaces. This is the list of allowed values for `metrics_config.namespace_filters` `include_only` or `exclude_only` in [`datadog_integration_aws_account` resource](https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account).","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"}]],"flex_retention_days":"number","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",{"description":"string","filter":["list",["object",{"query":"string"}]],"id":"string","is_enabled":"bool","is_read_only":"bool","name":"string","tags":["set","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_logs_pipelines_order":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"pipeline_ids":{"type":["list","string"],"description":"Array of strings identifying by their id(s) the pipeline(s) of your organization. For each pipeline, following the order of the array, logs are tested against the query filter and processed if matching.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve the current order of your log pipelines.","description_kind":"plain"}},"datadog_metric_tags":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"metric":{"type":"string","description":"The metric for which to fetch tags.","description_kind":"plain","required":true},"tags":{"type":["list","string"],"description":"The tags associated with the metric.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve tags associated with a metric to 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_powerpack":{"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 Powerpack to search for.","description_kind":"plain","required":true}},"description":"Use this data source to retrieve information about an existing Datadog Powerpack.","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_role_users":{"version":0,"block":{"attributes":{"exact_match":{"type":"bool","description":"When true, `filter_keyword` string is exact matched against the user's `name`.","description_kind":"plain","optional":true},"filter":{"type":"string","description":"Search query, can be user name.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"role_id":{"type":"string","description":"The role's identifier.","description_kind":"plain","required":true},"role_users":{"type":["list",["object",{"role_id":"string","user_id":"string"}]],"description":"List of users assigned to role.","description_kind":"plain","computed":true}},"description":"Use this data source to retrieve information about existing Datadog role users assignments. This data source is in beta and is subject to change.","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_rum_retention_filters":{"version":0,"block":{"attributes":{"application_id":{"type":"string","description":"RUM application ID.","description_kind":"plain","required":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true},"retention_filters":{"type":["list",["object",{"enabled":"bool","event_type":"string","id":"string","name":"string","query":"string","sample_rate":"number"}]],"description":"The list of RUM retention filters.","description_kind":"plain","computed":true}},"description":"Provides a Datadog RUM retention filters datasource. This can be used to retrieve all RUM retention filters for a given 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",{"action":["list",["object",{"options":["list",["object",{"duration":"number"}]],"type":"string"}]],"condition":"string","name":"string","notifications":["list","string"],"status":"string"}]],"enabled":"bool","filter":["list",["object",{"action":"string","query":"string"}]],"group_signals_by":["list","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","data_source":"string","distinct_fields":["list","string"],"group_by_fields":["list","string"],"metric":"string","metrics":["list","string"],"name":"string","query":"string"}]],"reference_tables":["list",["object",{"check_presence":"bool","column_name":"string","log_field_path":"string","rule_query_name":"string","table_name":"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",{"data_exclusion_query":"string","description":"string","enabled":"bool","expiration_date":"string","id":"string","name":"string","rule_query":"string","start_date":"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":{"description":{"type":"string","description":"Description of the standard pattern.","description_kind":"plain","computed":true},"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 to match, optionally documented for older standard rules. **Deprecated.** Refer to the description field to understand what the rule does.","description_kind":"plain","deprecated":true,"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},"exact_match":{"type":"bool","description":"When true, `filter` string is exact matched against the user's `email`, followed by `name` attribute.","description_kind":"plain","optional":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":["set","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_software_catalog":{"version":0,"block":{"attributes":{"entities":{"type":["list",["object",{"display_name":"string","id":"string","kind":"string","name":"string","namespace":"string","owner":"string","tags":["list","string"]}]],"description":"List of entities","description_kind":"plain","computed":true},"filter_exclude_snapshot":{"type":"string","description":"Filter entities by excluding snapshotted entities.","description_kind":"plain","optional":true},"filter_id":{"type":"string","description":"Filter entities by UUID.","description_kind":"plain","optional":true},"filter_kind":{"type":"string","description":"Filter entities by kind.","description_kind":"plain","optional":true},"filter_name":{"type":"string","description":"Filter entities by name.","description_kind":"plain","optional":true},"filter_owner":{"type":"string","description":"Filter entities by owner.","description_kind":"plain","optional":true},"filter_ref":{"type":"string","description":"Filter entities by reference.","description_kind":"plain","optional":true},"filter_relation_type":{"type":"string","description":"Filter entities by relation type.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"description":"Use this data source to list software catalog entities to use in other resources.","description_kind":"plain"}},"datadog_synthetics_global_variable":{"version":0,"block":{"attributes":{"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","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":"The ID of this resource.","description_kind":"plain","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_teams":{"version":0,"block":{"attributes":{"filter_keyword":{"type":"string","description":"Search query. Can be team name, team handle, or email of team member.","description_kind":"plain","optional":true},"filter_me":{"type":"bool","description":"When true, only returns teams the current user belongs to.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this resource.","description_kind":"plain","computed":true}},"block_types":{"teams":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Free-form markdown description/content for the team's homepage.","description_kind":"plain","computed":true},"handle":{"type":"string","description":"The team's handle.","description_kind":"plain","computed":true},"id":{"type":"string","description":"The team's identifier.","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},"user_count":{"type":"number","description":"The number of users belonging to the team.","description_kind":"plain","computed":true}},"description":"List of teams","description_kind":"plain"}}},"description":"Use this data source to retrieve information about existing teams for use in other resources.","description_kind":"plain"}},"datadog_user":{"version":0,"block":{"attributes":{"created_at":{"type":"string","description":"The time when the user was created (RFC3339 format).","description_kind":"plain","computed":true},"disabled":{"type":"bool","description":"Indicates whether the user is disabled.","description_kind":"plain","computed":true},"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},"handle":{"type":"string","description":"The user's handle.","description_kind":"plain","computed":true},"icon":{"type":"string","description":"The URL where the user's icon is located.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"mfa_enabled":{"type":"bool","description":"Indicates whether the user has enabled MFA.","description_kind":"plain","computed":true},"modified_at":{"type":"string","description":"The time at which the user was last updated (RFC3339 format).","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the user.","description_kind":"plain","computed":true},"service_account":{"type":"bool","description":"Indicates whether the user is a service account.","description_kind":"plain","computed":true},"status":{"type":"string","description":"The user's status.","description_kind":"plain","computed":true},"title":{"type":"string","description":"The user's title.","description_kind":"plain","computed":true},"verified":{"type":"bool","description":"Indicates whether the user is verified.","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",{"created_at":"string","disabled":"bool","email":"string","handle":"string","icon":"string","id":"string","mfa_enabled":"bool","modified_at":"string","name":"string","service_account":"bool","status":"string","title":"string","verified":"bool"}]],"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"}},"datadog_workflow_automation":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the workflow.","description_kind":"plain","computed":true},"id":{"type":"string","description":"ID of the workflow.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the workflow.","description_kind":"plain","computed":true},"published":{"type":"bool","description":"Set the workflow to published or unpublished. Workflows in an unpublished state are only executable through manual runs. Automatic triggers such as Schedule do not execute the workflow until it is published.","description_kind":"plain","computed":true},"spec_json":{"type":"string","description":"The spec defines what the workflow does.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"Tags of the workflow.","description_kind":"plain","computed":true}},"description":"This data source retrieves the definition of an existing Datadog workflow from Workflow Automation for use in other resources.","description_kind":"plain"}}}}}} diff --git a/config/ip/config.go b/config/security/config.go similarity index 89% rename from config/ip/config.go rename to config/security/config.go index 6bb19a2..81a8e48 100644 --- a/config/ip/config.go +++ b/config/security/config.go @@ -1,4 +1,4 @@ -package ip +package security import "github.com/crossplane/upjet/pkg/config" @@ -8,6 +8,6 @@ func Configure(p *config.Provider) { // We need to override the default group that upjet generated for // this resource, which would be "datadog" r.Kind = "IPAllowList" - r.ShortGroup = "datadog" + r.ShortGroup = "security" }) } diff --git a/config/securitymonitoring/config.go b/config/securitymonitoring/config.go deleted file mode 100644 index 5363c6b..0000000 --- a/config/securitymonitoring/config.go +++ /dev/null @@ -1,25 +0,0 @@ -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/sensitivedata/config.go b/config/sensitivedata/config.go new file mode 100644 index 0000000..8f054b3 --- /dev/null +++ b/config/sensitivedata/config.go @@ -0,0 +1,14 @@ +package sensitivedata + +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_rule", func(r *config.Resource) { + r.References["group_id"] = config.Reference{ + TerraformName: "datadog_sensitive_data_scanner_group", + } + }) +} diff --git a/config/sensitivedatascanner/config.go b/config/sensitivedatascanner/config.go deleted file mode 100644 index 87f299e..0000000 --- a/config/sensitivedatascanner/config.go +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index 8e9abbf..0000000 --- a/config/service/config.go +++ /dev/null @@ -1,39 +0,0 @@ -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/slo/config.go b/config/slo/config.go new file mode 100644 index 0000000..7f6e1bb --- /dev/null +++ b/config/slo/config.go @@ -0,0 +1,14 @@ +package slo + +import ( + "github.com/crossplane/upjet/pkg/config" +) + +// Configure configures individual resources by adding custom ResourceConfigurators. +func Configure(p *config.Provider) { + p.AddResourceConfigurator("datadog_slo_correction", func(r *config.Resource) { + r.References["slo_id"] = config.Reference{ + TerraformName: "datadog_service_level_objective", + } + }) +} diff --git a/config/spans/config.go b/config/spans/config.go deleted file mode 100644 index 332e3be..0000000 --- a/config/spans/config.go +++ /dev/null @@ -1,15 +0,0 @@ -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 index 28218c9..a0734de 100644 --- a/config/synthetics/config.go +++ b/config/synthetics/config.go @@ -7,28 +7,10 @@ import ( // 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) { r.TerraformResource. Schema["options_list"].Elem.(*schema.Resource). - Schema["rum_settings"].Elem = schema.TypeString - - // We need to override the default group that upjet generated for - // this resource, which would be "datadog" - r.ShortGroup = "synthetics.datadog" + Schema["rum_settings"].Elem.(*schema.Resource). + Schema["client_token_id"].Sensitive = false }) } diff --git a/config/team/config.go b/config/team/config.go deleted file mode 100644 index df98322..0000000 --- a/config/team/config.go +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 6faeaa5..0000000 --- a/config/user/config.go +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index 656af1c..0000000 --- a/config/webhook/config.go +++ /dev/null @@ -1,19 +0,0 @@ -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/datadog/v1alpha1/apikey.yaml b/examples-generated/access/v1beta1/apikey.yaml similarity index 59% rename from examples-generated/datadog/v1alpha1/apikey.yaml rename to examples-generated/access/v1beta1/apikey.yaml index 653e5eb..1b63179 100644 --- a/examples-generated/datadog/v1alpha1/apikey.yaml +++ b/examples-generated/access/v1beta1/apikey.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: access.datadog.upbound.io/v1beta1 kind: APIKey metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/apikey + meta.upbound.io/example-id: access/v1beta1/apikey labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/appkey.yaml b/examples-generated/access/v1beta1/applicationkey.yaml similarity index 51% rename from examples-generated/datadog/v1alpha1/appkey.yaml rename to examples-generated/access/v1beta1/applicationkey.yaml index 54d6428..43cc11d 100644 --- a/examples-generated/datadog/v1alpha1/appkey.yaml +++ b/examples-generated/access/v1beta1/applicationkey.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: AppKey +apiVersion: access.datadog.upbound.io/v1beta1 +kind: ApplicationKey metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/appkey + meta.upbound.io/example-id: access/v1beta1/applicationkey labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/apm/v1beta1/retentionfilter.yaml b/examples-generated/apm/v1beta1/retentionfilter.yaml new file mode 100644 index 0000000..a0b74d7 --- /dev/null +++ b/examples-generated/apm/v1beta1/retentionfilter.yaml @@ -0,0 +1,17 @@ +apiVersion: apm.datadog.upbound.io/v1beta1 +kind: RetentionFilter +metadata: + annotations: + meta.upbound.io/example-id: apm/v1beta1/retentionfilter + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + enabled: false + filter: + - query: service:sample AND env:production AND @http.method:GET AND app:sampleapp + AND @http.status_code:200 AND @duration:>600000000 + filterType: spans-sampling-processor + name: Sample order + rate: "1.0" diff --git a/examples-generated/apm/v1alpha1/retentionfilterorder.yaml b/examples-generated/apm/v1beta1/retentionfilterorder.yaml similarity index 58% rename from examples-generated/apm/v1alpha1/retentionfilterorder.yaml rename to examples-generated/apm/v1beta1/retentionfilterorder.yaml index d4d1775..754051b 100644 --- a/examples-generated/apm/v1alpha1/retentionfilterorder.yaml +++ b/examples-generated/apm/v1beta1/retentionfilterorder.yaml @@ -1,23 +1,23 @@ -apiVersion: apm.datadog.upbound.io/v1alpha1 +apiVersion: apm.datadog.upbound.io/v1beta1 kind: RetentionFilterOrder metadata: annotations: - meta.upbound.io/example-id: apm/v1alpha1/retentionfilterorder + meta.upbound.io/example-id: apm/v1beta1/retentionfilterorder labels: testing.upbound.io/example-name: bar name: bar spec: forProvider: - filterIds: - - ${datadog_apm_retention_filter.foo.id} + filterIdsRefs: + - name: foo --- -apiVersion: apm.datadog.upbound.io/v1alpha1 +apiVersion: apm.datadog.upbound.io/v1beta1 kind: RetentionFilter metadata: annotations: - meta.upbound.io/example-id: apm.datadog/v1alpha1/retentionfilterorder + meta.upbound.io/example-id: apm/v1beta1/retentionfilterorder labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/authentication/v1beta1/authnmapping.yaml b/examples-generated/authentication/v1beta1/authnmapping.yaml new file mode 100644 index 0000000..ef8a40a --- /dev/null +++ b/examples-generated/authentication/v1beta1/authnmapping.yaml @@ -0,0 +1,15 @@ +apiVersion: authentication.datadog.upbound.io/v1beta1 +kind: AuthnMapping +metadata: + annotations: + meta.upbound.io/example-id: authentication/v1beta1/authnmapping + labels: + testing.upbound.io/example-name: dev_ro_role_mapping + name: dev-ro-role-mapping +spec: + forProvider: + key: Member-of + roleSelector: + matchLabels: + testing.upbound.io/example-name: datadog_role + value: Development diff --git a/examples-generated/cloud/v1alpha1/workloadsecurityagentrule.yaml b/examples-generated/cloud/v1alpha1/workloadsecurityagentrule.yaml deleted file mode 100644 index 9f459c5..0000000 --- a/examples-generated/cloud/v1alpha1/workloadsecurityagentrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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/cloud/v1alpha1/configurationrule.yaml b/examples-generated/cloud/v1beta1/configurationrule.yaml similarity index 91% rename from examples-generated/cloud/v1alpha1/configurationrule.yaml rename to examples-generated/cloud/v1beta1/configurationrule.yaml index 6089e53..e09e092 100644 --- a/examples-generated/cloud/v1alpha1/configurationrule.yaml +++ b/examples-generated/cloud/v1beta1/configurationrule.yaml @@ -1,8 +1,8 @@ -apiVersion: cloud.datadog.upbound.io/v1alpha1 +apiVersion: cloud.datadog.upbound.io/v1beta1 kind: ConfigurationRule metadata: annotations: - meta.upbound.io/example-id: cloud/v1alpha1/configurationrule + meta.upbound.io/example-id: cloud/v1beta1/configurationrule labels: testing.upbound.io/example-name: myrule name: myrule diff --git a/examples-generated/datadog/v1alpha1/dashboardjson.yaml b/examples-generated/dashboard/v1beta1/dashboardjson.yaml similarity index 99% rename from examples-generated/datadog/v1alpha1/dashboardjson.yaml rename to examples-generated/dashboard/v1beta1/dashboardjson.yaml index 3dbe387..f7131f8 100644 --- a/examples-generated/datadog/v1alpha1/dashboardjson.yaml +++ b/examples-generated/dashboard/v1beta1/dashboardjson.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: dashboard.datadog.upbound.io/v1beta1 kind: DashboardJSON metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/dashboardjson + meta.upbound.io/example-id: dashboard/v1beta1/dashboardjson labels: testing.upbound.io/example-name: dashboard_json name: dashboard-json diff --git a/examples-generated/datadog/v1alpha1/dashboardlist.yaml b/examples-generated/dashboard/v1beta1/dashboardlist.yaml similarity index 74% rename from examples-generated/datadog/v1alpha1/dashboardlist.yaml rename to examples-generated/dashboard/v1beta1/dashboardlist.yaml index 8187a44..d161175 100644 --- a/examples-generated/datadog/v1alpha1/dashboardlist.yaml +++ b/examples-generated/dashboard/v1beta1/dashboardlist.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: dashboard.datadog.upbound.io/v1beta1 kind: DashboardList metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/dashboardlist + meta.upbound.io/example-id: dashboard/v1beta1/dashboardlist labels: testing.upbound.io/example-name: new_list name: new-list diff --git a/examples-generated/datadog/v1alpha1/powerpack.yaml b/examples-generated/dashboard/v1beta1/powerpack.yaml similarity index 57% rename from examples-generated/datadog/v1alpha1/powerpack.yaml rename to examples-generated/dashboard/v1beta1/powerpack.yaml index 8b5029b..07cfe43 100644 --- a/examples-generated/datadog/v1alpha1/powerpack.yaml +++ b/examples-generated/dashboard/v1beta1/powerpack.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: dashboard.datadog.upbound.io/v1beta1 kind: Powerpack metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/powerpack + meta.upbound.io/example-id: dashboard/v1beta1/powerpack labels: testing.upbound.io/example-name: foo name: foo @@ -26,17 +26,3 @@ spec: 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/authnmapping.yaml b/examples-generated/datadog/v1alpha1/authnmapping.yaml deleted file mode 100644 index 0ecabbf..0000000 --- a/examples-generated/datadog/v1alpha1/authnmapping.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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/serviceaccountapplicationkey.yaml b/examples-generated/datadog/v1alpha1/serviceaccountapplicationkey.yaml deleted file mode 100644 index 8830b62..0000000 --- a/examples-generated/datadog/v1alpha1/serviceaccountapplicationkey.yaml +++ /dev/null @@ -1,12 +0,0 @@ -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/restrictionpolicy.yaml b/examples-generated/iam/v1beta1/restrictionpolicy.yaml similarity index 77% rename from examples-generated/datadog/v1alpha1/restrictionpolicy.yaml rename to examples-generated/iam/v1beta1/restrictionpolicy.yaml index 90298d2..c4f9c5a 100644 --- a/examples-generated/datadog/v1alpha1/restrictionpolicy.yaml +++ b/examples-generated/iam/v1beta1/restrictionpolicy.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: RestrictionPolicy metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/restrictionpolicy + meta.upbound.io/example-id: iam/v1beta1/restrictionpolicy labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/role.yaml b/examples-generated/iam/v1beta1/role.yaml similarity index 75% rename from examples-generated/datadog/v1alpha1/role.yaml rename to examples-generated/iam/v1beta1/role.yaml index 3764114..aba825a 100644 --- a/examples-generated/datadog/v1alpha1/role.yaml +++ b/examples-generated/iam/v1beta1/role.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: Role metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/role + meta.upbound.io/example-id: iam/v1beta1/role labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/serviceaccount.yaml b/examples-generated/iam/v1beta1/serviceaccount.yaml similarity index 55% rename from examples-generated/datadog/v1alpha1/serviceaccount.yaml rename to examples-generated/iam/v1beta1/serviceaccount.yaml index 88a1493..a9f44fa 100644 --- a/examples-generated/datadog/v1alpha1/serviceaccount.yaml +++ b/examples-generated/iam/v1beta1/serviceaccount.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: ServiceAccount metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/serviceaccount + meta.upbound.io/example-id: iam/v1beta1/serviceaccount labels: testing.upbound.io/example-name: bar name: bar @@ -10,5 +10,5 @@ spec: forProvider: email: new@example.com name: Service Account Bar - roles: - - ${data.datadog_role.ro_role.id} + rolesRefs: + - name: datadog_role diff --git a/examples-generated/iam/v1beta1/serviceaccountapplicationkey.yaml b/examples-generated/iam/v1beta1/serviceaccountapplicationkey.yaml new file mode 100644 index 0000000..84be2f7 --- /dev/null +++ b/examples-generated/iam/v1beta1/serviceaccountapplicationkey.yaml @@ -0,0 +1,14 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: ServiceAccountApplicationKey +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/serviceaccountapplicationkey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: Application key for managing dashboards + serviceAccountIdSelector: + matchLabels: + testing.upbound.io/example-name: example diff --git a/examples-generated/datadog/v1alpha1/team.yaml b/examples-generated/iam/v1beta1/team.yaml similarity index 68% rename from examples-generated/datadog/v1alpha1/team.yaml rename to examples-generated/iam/v1beta1/team.yaml index c8cc0fc..fcf0156 100644 --- a/examples-generated/datadog/v1alpha1/team.yaml +++ b/examples-generated/iam/v1beta1/team.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: Team metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/team + meta.upbound.io/example-id: iam/v1beta1/team labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/teamlink.yaml b/examples-generated/iam/v1beta1/teamlink.yaml similarity index 57% rename from examples-generated/datadog/v1alpha1/teamlink.yaml rename to examples-generated/iam/v1beta1/teamlink.yaml index 30a22f1..75a1a6a 100644 --- a/examples-generated/datadog/v1alpha1/teamlink.yaml +++ b/examples-generated/iam/v1beta1/teamlink.yaml @@ -1,25 +1,27 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: TeamLink metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teamlink + meta.upbound.io/example-id: iam/v1beta1/teamlink labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: label: Link label - position: Example link - teamId: ${datadog_team.foo.id} + position: 0 + teamIdSelector: + matchLabels: + testing.upbound.io/example-name: foo url: https://example.com --- -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: Team metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teamlink + meta.upbound.io/example-id: iam/v1beta1/teamlink labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/teammembership.yaml b/examples-generated/iam/v1beta1/teammembership.yaml similarity index 52% rename from examples-generated/datadog/v1alpha1/teammembership.yaml rename to examples-generated/iam/v1beta1/teammembership.yaml index 88eae96..e8cfada 100644 --- a/examples-generated/datadog/v1alpha1/teammembership.yaml +++ b/examples-generated/iam/v1beta1/teammembership.yaml @@ -1,24 +1,28 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: TeamMembership metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teammembership + meta.upbound.io/example-id: iam/v1beta1/teammembership labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: role: admin - teamId: ${datadog_team.foo.id} - userId: ${datadog_user.foo.id} + teamIdSelector: + matchLabels: + testing.upbound.io/example-name: foo + userIdSelector: + matchLabels: + testing.upbound.io/example-name: foo --- -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: Team metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teammembership + meta.upbound.io/example-id: iam/v1beta1/teammembership labels: testing.upbound.io/example-name: foo name: foo @@ -30,11 +34,11 @@ spec: --- -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: User metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teammembership + meta.upbound.io/example-id: iam/v1beta1/teammembership labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/teampermissionsetting.yaml b/examples-generated/iam/v1beta1/teampermissionsetting.yaml similarity index 57% rename from examples-generated/datadog/v1alpha1/teampermissionsetting.yaml rename to examples-generated/iam/v1beta1/teampermissionsetting.yaml index f015203..6be94ba 100644 --- a/examples-generated/datadog/v1alpha1/teampermissionsetting.yaml +++ b/examples-generated/iam/v1beta1/teampermissionsetting.yaml @@ -1,24 +1,26 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: TeamPermissionSetting metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teampermissionsetting + meta.upbound.io/example-id: iam/v1beta1/teampermissionsetting labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: action: manage_membership - teamId: ${datadog_team.foo.id} + teamIdSelector: + matchLabels: + testing.upbound.io/example-name: foo value: organization --- -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: Team metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/teampermissionsetting + meta.upbound.io/example-id: iam/v1beta1/teampermissionsetting labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/user.yaml b/examples-generated/iam/v1beta1/user.yaml similarity index 50% rename from examples-generated/datadog/v1alpha1/user.yaml rename to examples-generated/iam/v1beta1/user.yaml index 6ae56a8..73e4224 100644 --- a/examples-generated/datadog/v1alpha1/user.yaml +++ b/examples-generated/iam/v1beta1/user.yaml @@ -1,13 +1,13 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: iam.datadog.upbound.io/v1beta1 kind: User metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/user + meta.upbound.io/example-id: iam/v1beta1/user labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: email: new@example.com - roles: - - ${data.datadog_role.ro_role.id} + rolesRefs: + - name: datadog_role diff --git a/examples-generated/integration/v1alpha1/fastlyservice.yaml b/examples-generated/integration/v1alpha1/fastlyservice.yaml deleted file mode 100644 index cf250ff..0000000 --- a/examples-generated/integration/v1alpha1/fastlyservice.yaml +++ /dev/null @@ -1,30 +0,0 @@ -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/opsgenieserviceobject.yaml b/examples-generated/integration/v1alpha1/opsgenieserviceobject.yaml deleted file mode 100644 index bdcbf21..0000000 --- a/examples-generated/integration/v1alpha1/opsgenieserviceobject.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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/aws.yaml b/examples-generated/integration/v1beta1/aws.yaml similarity index 77% rename from examples-generated/integration/v1alpha1/aws.yaml rename to examples-generated/integration/v1beta1/aws.yaml index 39a6df4..36624a0 100644 --- a/examples-generated/integration/v1alpha1/aws.yaml +++ b/examples-generated/integration/v1beta1/aws.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 -kind: AWS +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: Aws metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/aws + meta.upbound.io/example-id: integration/v1beta1/aws labels: testing.upbound.io/example-name: sandbox name: sandbox diff --git a/examples-generated/integration/v1alpha1/awseventbridge.yaml b/examples-generated/integration/v1beta1/awseventbridge.yaml similarity index 61% rename from examples-generated/integration/v1alpha1/awseventbridge.yaml rename to examples-generated/integration/v1beta1/awseventbridge.yaml index 0d5904a..9f55ad1 100644 --- a/examples-generated/integration/v1alpha1/awseventbridge.yaml +++ b/examples-generated/integration/v1beta1/awseventbridge.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 -kind: AWSEventBridge +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsEventBridge metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/awseventbridge + meta.upbound.io/example-id: integration/v1beta1/awseventbridge labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/integration/v1alpha1/awslambdaarn.yaml b/examples-generated/integration/v1beta1/awslambdaarn.yaml similarity index 64% rename from examples-generated/integration/v1alpha1/awslambdaarn.yaml rename to examples-generated/integration/v1beta1/awslambdaarn.yaml index 10ca2a6..052ebae 100644 --- a/examples-generated/integration/v1alpha1/awslambdaarn.yaml +++ b/examples-generated/integration/v1beta1/awslambdaarn.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 -kind: AWSLambdaARN +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsLambdaArn metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/awslambdaarn + meta.upbound.io/example-id: integration/v1beta1/awslambdaarn labels: testing.upbound.io/example-name: main_collector name: main-collector diff --git a/examples-generated/integration/v1alpha1/awslogcollection.yaml b/examples-generated/integration/v1beta1/awslogcollection.yaml similarity index 53% rename from examples-generated/integration/v1alpha1/awslogcollection.yaml rename to examples-generated/integration/v1beta1/awslogcollection.yaml index 35cd7be..f50db2b 100644 --- a/examples-generated/integration/v1alpha1/awslogcollection.yaml +++ b/examples-generated/integration/v1beta1/awslogcollection.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 -kind: AWSLogCollection +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsLogCollection metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/awslogcollection + meta.upbound.io/example-id: integration/v1beta1/awslogcollection labels: testing.upbound.io/example-name: main name: main diff --git a/examples-generated/integration/v1alpha1/awstagfilter.yaml b/examples-generated/integration/v1beta1/awstagfilter.yaml similarity index 57% rename from examples-generated/integration/v1alpha1/awstagfilter.yaml rename to examples-generated/integration/v1beta1/awstagfilter.yaml index c13514b..2af7ce4 100644 --- a/examples-generated/integration/v1alpha1/awstagfilter.yaml +++ b/examples-generated/integration/v1beta1/awstagfilter.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 -kind: AWSTagFilter +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsTagFilter metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/awstagfilter + meta.upbound.io/example-id: integration/v1beta1/awstagfilter labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples/integration/v1alpha1/azure.yaml b/examples-generated/integration/v1beta1/azure.yaml similarity index 83% rename from examples/integration/v1alpha1/azure.yaml rename to examples-generated/integration/v1beta1/azure.yaml index 3cd1c4d..73f528e 100644 --- a/examples/integration/v1alpha1/azure.yaml +++ b/examples-generated/integration/v1beta1/azure.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: Azure metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/azure + meta.upbound.io/example-id: integration/v1beta1/azure labels: testing.upbound.io/example-name: sandbox name: sandbox diff --git a/examples/integration/v1alpha1/cloudflareaccount.yaml b/examples-generated/integration/v1beta1/cloudflareaccount.yaml similarity index 70% rename from examples/integration/v1alpha1/cloudflareaccount.yaml rename to examples-generated/integration/v1beta1/cloudflareaccount.yaml index a035141..b7b89b8 100644 --- a/examples/integration/v1alpha1/cloudflareaccount.yaml +++ b/examples-generated/integration/v1beta1/cloudflareaccount.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: CloudflareAccount metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/cloudflareaccount + meta.upbound.io/example-id: integration/v1beta1/cloudflareaccount labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples/integration/v1alpha1/confluentaccount.yaml b/examples-generated/integration/v1beta1/confluentaccount.yaml similarity index 71% rename from examples/integration/v1alpha1/confluentaccount.yaml rename to examples-generated/integration/v1beta1/confluentaccount.yaml index bb13390..7372ff1 100644 --- a/examples/integration/v1alpha1/confluentaccount.yaml +++ b/examples-generated/integration/v1beta1/confluentaccount.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: ConfluentAccount metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/confluentaccount + meta.upbound.io/example-id: integration/v1beta1/confluentaccount labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/integration/v1alpha1/confluentresource.yaml b/examples-generated/integration/v1beta1/confluentresource.yaml similarity index 62% rename from examples-generated/integration/v1alpha1/confluentresource.yaml rename to examples-generated/integration/v1beta1/confluentresource.yaml index b6879a6..290ac98 100644 --- a/examples-generated/integration/v1alpha1/confluentresource.yaml +++ b/examples-generated/integration/v1beta1/confluentresource.yaml @@ -1,14 +1,16 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: ConfluentResource metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/confluentresource + meta.upbound.io/example-id: integration/v1beta1/confluentresource labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: - accountId: ${datadog_integration_confluent_account.foo.id} + accountIdSelector: + matchLabels: + testing.upbound.io/example-name: foo resourceId: "123456" resourceType: kafka tags: @@ -17,11 +19,11 @@ spec: --- -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: ConfluentAccount metadata: annotations: - meta.upbound.io/example-id: integration.datadog/v1alpha1/confluentresource + meta.upbound.io/example-id: integration/v1beta1/confluentresource labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/integration/v1alpha1/fastlyaccount.yaml b/examples-generated/integration/v1beta1/fastlyaccount.yaml similarity index 59% rename from examples-generated/integration/v1alpha1/fastlyaccount.yaml rename to examples-generated/integration/v1beta1/fastlyaccount.yaml index 22d63c5..ff9c900 100644 --- a/examples-generated/integration/v1alpha1/fastlyaccount.yaml +++ b/examples-generated/integration/v1beta1/fastlyaccount.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: FastlyAccount metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/fastlyaccount + meta.upbound.io/example-id: integration/v1beta1/fastlyaccount labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples/integration/v1alpha1/fastlyservice.yaml b/examples-generated/integration/v1beta1/fastlyservice.yaml similarity index 54% rename from examples/integration/v1alpha1/fastlyservice.yaml rename to examples-generated/integration/v1beta1/fastlyservice.yaml index cf250ff..2bd74f5 100644 --- a/examples/integration/v1alpha1/fastlyservice.yaml +++ b/examples-generated/integration/v1beta1/fastlyservice.yaml @@ -1,14 +1,16 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: FastlyService metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/fastlyservice + meta.upbound.io/example-id: integration/v1beta1/fastlyservice labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: - accountId: ${datadog_integration_fastly_account.foo.id} + accountIdSelector: + matchLabels: + testing.upbound.io/example-name: foo serviceId: my-service-id tags: - mytag @@ -16,11 +18,11 @@ spec: --- -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: FastlyAccount metadata: annotations: - meta.upbound.io/example-id: integration.datadog/v1alpha1/fastlyservice + meta.upbound.io/example-id: integration/v1beta1/fastlyservice labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/integration/v1alpha1/gcp.yaml b/examples-generated/integration/v1beta1/gcp.yaml similarity index 76% rename from examples-generated/integration/v1alpha1/gcp.yaml rename to examples-generated/integration/v1beta1/gcp.yaml index 074de19..8be62ea 100644 --- a/examples-generated/integration/v1alpha1/gcp.yaml +++ b/examples-generated/integration/v1beta1/gcp.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: GCP metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/gcp + meta.upbound.io/example-id: integration/v1beta1/gcp labels: testing.upbound.io/example-name: awesome_gcp_project_integration name: awesome-gcp-project-integration @@ -10,6 +10,9 @@ spec: forProvider: clientEmail: awesome-service-account@awesome-project-id.iam.gserviceaccount.com clientId: "123456789012345678901" + cloudRunRevisionFilters: + - filter_one + - filter_two hostFilters: foo:bar,buzz:lightyear privateKeyId: "1234567890123456789012345678901234567890" privateKeySecretRef: diff --git a/examples-generated/integration/v1alpha1/gcpsts.yaml b/examples-generated/integration/v1beta1/gcpsts.yaml similarity index 59% rename from examples-generated/integration/v1alpha1/gcpsts.yaml rename to examples-generated/integration/v1beta1/gcpsts.yaml index d1426a4..97db5f5 100644 --- a/examples-generated/integration/v1alpha1/gcpsts.yaml +++ b/examples-generated/integration/v1beta1/gcpsts.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 -kind: GCPSTS +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: GCPSts metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/gcpsts + meta.upbound.io/example-id: integration/v1beta1/gcpsts labels: testing.upbound.io/example-name: foo name: foo @@ -10,6 +10,9 @@ spec: forProvider: automute: true clientEmail: ${google_service_account.datadog_integration.email} + cloudRunRevisionFilters: + - filter_one + - filter_two hostFilters: - filter_one - filter_two diff --git a/examples/integration/v1alpha1/opsgenieserviceobject.yaml b/examples-generated/integration/v1beta1/opsgenieserviceobject.yaml similarity index 71% rename from examples/integration/v1alpha1/opsgenieserviceobject.yaml rename to examples-generated/integration/v1beta1/opsgenieserviceobject.yaml index bdcbf21..1d90e81 100644 --- a/examples/integration/v1alpha1/opsgenieserviceobject.yaml +++ b/examples-generated/integration/v1beta1/opsgenieserviceobject.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: OpsgenieServiceObject metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/opsgenieserviceobject + meta.upbound.io/example-id: integration/v1beta1/opsgenieserviceobject labels: testing.upbound.io/example-name: fake_service_name name: fake-service-name diff --git a/examples-generated/integration/v1alpha1/pagerduty.yaml b/examples-generated/integration/v1beta1/pagerduty.yaml similarity index 72% rename from examples-generated/integration/v1alpha1/pagerduty.yaml rename to examples-generated/integration/v1beta1/pagerduty.yaml index 3efdbad..dbdd395 100644 --- a/examples-generated/integration/v1alpha1/pagerduty.yaml +++ b/examples-generated/integration/v1beta1/pagerduty.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: Pagerduty metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/pagerduty + meta.upbound.io/example-id: integration/v1beta1/pagerduty labels: testing.upbound.io/example-name: pd name: pd @@ -19,11 +19,11 @@ spec: --- -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: PagerdutyServiceObject metadata: annotations: - meta.upbound.io/example-id: integration.datadog/v1alpha1/pagerduty + meta.upbound.io/example-id: integration/v1beta1/pagerduty labels: testing.upbound.io/example-name: testing_bar name: testing-bar @@ -37,11 +37,11 @@ spec: --- -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: PagerdutyServiceObject metadata: annotations: - meta.upbound.io/example-id: integration.datadog/v1alpha1/pagerduty + meta.upbound.io/example-id: integration/v1beta1/pagerduty labels: testing.upbound.io/example-name: testing_foo name: testing-foo diff --git a/examples-generated/integration/v1alpha1/pagerdutyserviceobject.yaml b/examples-generated/integration/v1beta1/pagerdutyserviceobject.yaml similarity index 69% rename from examples-generated/integration/v1alpha1/pagerdutyserviceobject.yaml rename to examples-generated/integration/v1beta1/pagerdutyserviceobject.yaml index f3e2457..48b6df4 100644 --- a/examples-generated/integration/v1alpha1/pagerdutyserviceobject.yaml +++ b/examples-generated/integration/v1beta1/pagerdutyserviceobject.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: PagerdutyServiceObject metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/pagerdutyserviceobject + meta.upbound.io/example-id: integration/v1beta1/pagerdutyserviceobject labels: testing.upbound.io/example-name: testing_foo name: testing-foo diff --git a/examples-generated/integration/v1alpha1/slackchannel.yaml b/examples-generated/integration/v1beta1/slackchannel.yaml similarity index 71% rename from examples-generated/integration/v1alpha1/slackchannel.yaml rename to examples-generated/integration/v1beta1/slackchannel.yaml index 1600713..f463b54 100644 --- a/examples-generated/integration/v1alpha1/slackchannel.yaml +++ b/examples-generated/integration/v1beta1/slackchannel.yaml @@ -1,8 +1,8 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: SlackChannel metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/slackchannel + meta.upbound.io/example-id: integration/v1beta1/slackchannel labels: testing.upbound.io/example-name: test_channel name: test-channel diff --git a/examples-generated/logs/v1alpha1/archiveorder.yaml b/examples-generated/logs/v1alpha1/archiveorder.yaml deleted file mode 100644 index e3cd1fa..0000000 --- a/examples-generated/logs/v1alpha1/archiveorder.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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/indexorder.yaml b/examples-generated/logs/v1alpha1/indexorder.yaml deleted file mode 100644 index 3632d58..0000000 --- a/examples-generated/logs/v1alpha1/indexorder.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index ea2cfc3..0000000 --- a/examples-generated/logs/v1alpha1/integrationpipeline.yaml +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index b9ceccc..0000000 --- a/examples-generated/logs/v1alpha1/metric.yaml +++ /dev/null @@ -1,21 +0,0 @@ -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/archive.yaml b/examples-generated/logs/v1beta1/archive.yaml similarity index 76% rename from examples-generated/logs/v1alpha1/archive.yaml rename to examples-generated/logs/v1beta1/archive.yaml index 1cfccdf..090971d 100644 --- a/examples-generated/logs/v1alpha1/archive.yaml +++ b/examples-generated/logs/v1beta1/archive.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: Archive metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/archive + meta.upbound.io/example-id: logs/v1beta1/archive labels: testing.upbound.io/example-name: my_s3_archive name: my-s3-archive diff --git a/examples-generated/logs/v1beta1/archiveorder.yaml b/examples-generated/logs/v1beta1/archiveorder.yaml new file mode 100644 index 0000000..aebe483 --- /dev/null +++ b/examples-generated/logs/v1beta1/archiveorder.yaml @@ -0,0 +1,13 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: ArchiveOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1beta1/archiveorder + labels: + testing.upbound.io/example-name: sample_archive_order + name: sample-archive-order +spec: + forProvider: + archiveIdsRefs: + - name: sample_archive_1 + - name: sample_archive_2 diff --git a/examples-generated/logs/v1alpha1/custompipeline.yaml b/examples-generated/logs/v1beta1/custompipeline.yaml similarity index 96% rename from examples-generated/logs/v1alpha1/custompipeline.yaml rename to examples-generated/logs/v1beta1/custompipeline.yaml index ac67c8b..169e2f2 100644 --- a/examples-generated/logs/v1alpha1/custompipeline.yaml +++ b/examples-generated/logs/v1beta1/custompipeline.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: CustomPipeline metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/custompipeline + meta.upbound.io/example-id: logs/v1beta1/custompipeline labels: testing.upbound.io/example-name: sample_pipeline name: sample-pipeline diff --git a/examples/logs/v1alpha1/index.yaml b/examples-generated/logs/v1beta1/index.yaml similarity index 83% rename from examples/logs/v1alpha1/index.yaml rename to examples-generated/logs/v1beta1/index.yaml index 57e0086..7e362e5 100644 --- a/examples/logs/v1alpha1/index.yaml +++ b/examples-generated/logs/v1beta1/index.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: Index metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/index + meta.upbound.io/example-id: logs/v1beta1/index labels: testing.upbound.io/example-name: sample_index name: sample-index @@ -26,5 +26,5 @@ spec: name: Kubernetes apiserver filter: - query: '*' - name: your index + flexRetentionDays: 180 retentionDays: 7 diff --git a/examples-generated/logs/v1beta1/indexorder.yaml b/examples-generated/logs/v1beta1/indexorder.yaml new file mode 100644 index 0000000..d226db9 --- /dev/null +++ b/examples-generated/logs/v1beta1/indexorder.yaml @@ -0,0 +1,12 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: IndexOrder +metadata: + annotations: + meta.upbound.io/example-id: logs/v1beta1/indexorder + labels: + testing.upbound.io/example-name: sample_index_order + name: sample-index-order +spec: + forProvider: + indexesRefs: + - name: sample_index diff --git a/examples/logs/v1alpha1/integrationpipeline.yaml b/examples-generated/logs/v1beta1/integrationpipeline.yaml similarity index 59% rename from examples/logs/v1alpha1/integrationpipeline.yaml rename to examples-generated/logs/v1beta1/integrationpipeline.yaml index ea2cfc3..2c22c4e 100644 --- a/examples/logs/v1alpha1/integrationpipeline.yaml +++ b/examples-generated/logs/v1beta1/integrationpipeline.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: IntegrationPipeline metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/integrationpipeline + meta.upbound.io/example-id: logs/v1beta1/integrationpipeline labels: testing.upbound.io/example-name: python name: python diff --git a/examples/logs/v1alpha1/metric.yaml b/examples-generated/logs/v1beta1/metric.yaml similarity index 80% rename from examples/logs/v1alpha1/metric.yaml rename to examples-generated/logs/v1beta1/metric.yaml index b9ceccc..326e899 100644 --- a/examples/logs/v1alpha1/metric.yaml +++ b/examples-generated/logs/v1beta1/metric.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: Metric metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/metric + meta.upbound.io/example-id: logs/v1beta1/metric labels: testing.upbound.io/example-name: testing_logs_metric name: testing-logs-metric diff --git a/examples-generated/logs/v1alpha1/pipelineorder.yaml b/examples-generated/logs/v1beta1/pipelineorder.yaml similarity index 67% rename from examples-generated/logs/v1alpha1/pipelineorder.yaml rename to examples-generated/logs/v1beta1/pipelineorder.yaml index 0cc65e6..058f615 100644 --- a/examples-generated/logs/v1alpha1/pipelineorder.yaml +++ b/examples-generated/logs/v1beta1/pipelineorder.yaml @@ -1,14 +1,13 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: PipelineOrder metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/pipelineorder + meta.upbound.io/example-id: logs/v1beta1/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/v1beta1/metadata.yaml similarity index 73% rename from examples-generated/metric/v1alpha1/metadata.yaml rename to examples-generated/metric/v1beta1/metadata.yaml index 3cbabb7..d350555 100644 --- a/examples-generated/metric/v1alpha1/metadata.yaml +++ b/examples-generated/metric/v1beta1/metadata.yaml @@ -1,8 +1,8 @@ -apiVersion: metric.datadog.upbound.io/v1alpha1 +apiVersion: metric.datadog.upbound.io/v1beta1 kind: Metadata metadata: annotations: - meta.upbound.io/example-id: metric/v1alpha1/metadata + meta.upbound.io/example-id: metric/v1beta1/metadata labels: testing.upbound.io/example-name: request_time name: request-time diff --git a/examples-generated/datadog/v1alpha1/spansmetric.yaml b/examples-generated/metric/v1beta1/spansmetric.yaml similarity index 75% rename from examples-generated/datadog/v1alpha1/spansmetric.yaml rename to examples-generated/metric/v1beta1/spansmetric.yaml index c0669b9..2b60a83 100644 --- a/examples-generated/datadog/v1alpha1/spansmetric.yaml +++ b/examples-generated/metric/v1beta1/spansmetric.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: metric.datadog.upbound.io/v1beta1 kind: SpansMetric metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/spansmetric + meta.upbound.io/example-id: metric/v1beta1/spansmetric labels: testing.upbound.io/example-name: testing_spans_metric name: testing-spans-metric diff --git a/examples-generated/metric/v1alpha1/tagconfiguration.yaml b/examples-generated/metric/v1beta1/tagconfiguration.yaml similarity index 73% rename from examples-generated/metric/v1alpha1/tagconfiguration.yaml rename to examples-generated/metric/v1beta1/tagconfiguration.yaml index 2cf695f..6515dad 100644 --- a/examples-generated/metric/v1alpha1/tagconfiguration.yaml +++ b/examples-generated/metric/v1beta1/tagconfiguration.yaml @@ -1,8 +1,8 @@ -apiVersion: metric.datadog.upbound.io/v1alpha1 +apiVersion: metric.datadog.upbound.io/v1beta1 kind: TagConfiguration metadata: annotations: - meta.upbound.io/example-id: metric/v1alpha1/tagconfiguration + meta.upbound.io/example-id: metric/v1beta1/tagconfiguration labels: testing.upbound.io/example-name: example_dist_metric name: example-dist-metric diff --git a/examples/datadog/v1alpha1/monitorconfigpolicy.yaml b/examples-generated/monitor/v1beta1/configpolicy.yaml similarity index 65% rename from examples/datadog/v1alpha1/monitorconfigpolicy.yaml rename to examples-generated/monitor/v1beta1/configpolicy.yaml index 2999632..f23ccf9 100644 --- a/examples/datadog/v1alpha1/monitorconfigpolicy.yaml +++ b/examples-generated/monitor/v1beta1/configpolicy.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: MonitorConfigPolicy +apiVersion: monitor.datadog.upbound.io/v1beta1 +kind: ConfigPolicy metadata: annotations: - meta.upbound.io/example-id: monitor/v1alpha1/configpolicy + meta.upbound.io/example-id: monitor/v1beta1/configpolicy labels: testing.upbound.io/example-name: test name: test diff --git a/examples-generated/datadog/v1alpha1/downtime.yaml b/examples-generated/monitor/v1beta1/downtime.yaml similarity index 54% rename from examples-generated/datadog/v1alpha1/downtime.yaml rename to examples-generated/monitor/v1beta1/downtime.yaml index 72f9a83..78ac24a 100644 --- a/examples-generated/datadog/v1alpha1/downtime.yaml +++ b/examples-generated/monitor/v1beta1/downtime.yaml @@ -1,15 +1,17 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: monitor.datadog.upbound.io/v1beta1 kind: Downtime metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/downtime + meta.upbound.io/example-id: monitor/v1beta1/downtime labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: end: 1483365600 - monitorId: 12345 + monitorIdSelector: + matchLabels: + testing.upbound.io/example-name: example recurrence: - period: 1 type: days diff --git a/examples-generated/datadog/v1alpha1/downtimeschedule.yaml b/examples-generated/monitor/v1beta1/downtimeschedule.yaml similarity index 81% rename from examples-generated/datadog/v1alpha1/downtimeschedule.yaml rename to examples-generated/monitor/v1beta1/downtimeschedule.yaml index 6a35fba..9868754 100644 --- a/examples-generated/datadog/v1alpha1/downtimeschedule.yaml +++ b/examples-generated/monitor/v1beta1/downtimeschedule.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: monitor.datadog.upbound.io/v1beta1 kind: DowntimeSchedule metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/downtimeschedule + meta.upbound.io/example-id: monitor/v1beta1/downtimeschedule labels: testing.upbound.io/example-name: downtime_schedule_example name: downtime-schedule-example diff --git a/examples-generated/datadog/v1alpha1/monitor.yaml b/examples-generated/monitor/v1beta1/monitor.yaml similarity index 82% rename from examples-generated/datadog/v1alpha1/monitor.yaml rename to examples-generated/monitor/v1beta1/monitor.yaml index 0aafca1..0801fe4 100644 --- a/examples-generated/datadog/v1alpha1/monitor.yaml +++ b/examples-generated/monitor/v1beta1/monitor.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: monitor.datadog.upbound.io/v1beta1 kind: Monitor metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/monitor + meta.upbound.io/example-id: monitor/v1beta1/monitor labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples/datadog/v1alpha1/monitorjson.yaml b/examples-generated/monitor/v1beta1/monitorjson.yaml similarity index 76% rename from examples/datadog/v1alpha1/monitorjson.yaml rename to examples-generated/monitor/v1beta1/monitorjson.yaml index 8a65d33..e6f83b6 100644 --- a/examples/datadog/v1alpha1/monitorjson.yaml +++ b/examples-generated/monitor/v1beta1/monitorjson.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: monitor.datadog.upbound.io/v1beta1 kind: MonitorJSON metadata: annotations: - meta.upbound.io/example-id: monitor/v1alpha1/json + meta.upbound.io/example-id: monitor/v1beta1/monitorjson labels: testing.upbound.io/example-name: monitor_json name: monitor-json @@ -15,7 +15,7 @@ spec: 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\": + true,\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/webhook.yaml b/examples-generated/notification/v1beta1/webhook.yaml similarity index 72% rename from examples-generated/datadog/v1alpha1/webhook.yaml rename to examples-generated/notification/v1beta1/webhook.yaml index 3dfb5dd..dd56bd4 100644 --- a/examples-generated/datadog/v1alpha1/webhook.yaml +++ b/examples-generated/notification/v1beta1/webhook.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: notification.datadog.upbound.io/v1beta1 kind: Webhook metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/webhook + meta.upbound.io/example-id: notification/v1beta1/webhook labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/webhookcustomvariable.yaml b/examples-generated/notification/v1beta1/webhookcustomvariable.yaml similarity index 69% rename from examples-generated/datadog/v1alpha1/webhookcustomvariable.yaml rename to examples-generated/notification/v1beta1/webhookcustomvariable.yaml index b775cdd..4b9f167 100644 --- a/examples-generated/datadog/v1alpha1/webhookcustomvariable.yaml +++ b/examples-generated/notification/v1beta1/webhookcustomvariable.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: notification.datadog.upbound.io/v1beta1 kind: WebhookCustomVariable metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/webhookcustomvariable + meta.upbound.io/example-id: notification/v1beta1/webhookcustomvariable labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/datadog/v1alpha1/childorganization.yaml b/examples-generated/organization/v1beta1/childorganization.yaml similarity index 59% rename from examples-generated/datadog/v1alpha1/childorganization.yaml rename to examples-generated/organization/v1beta1/childorganization.yaml index b8117a6..0e0b912 100644 --- a/examples-generated/datadog/v1alpha1/childorganization.yaml +++ b/examples-generated/organization/v1beta1/childorganization.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: organization.datadog.upbound.io/v1beta1 kind: ChildOrganization metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/childorganization + meta.upbound.io/example-id: organization/v1beta1/childorganization labels: testing.upbound.io/example-name: organization name: organization diff --git a/examples-generated/datadog/v1alpha1/organizationsettings.yaml b/examples-generated/organization/v1beta1/settings.yaml similarity index 52% rename from examples-generated/datadog/v1alpha1/organizationsettings.yaml rename to examples-generated/organization/v1beta1/settings.yaml index 927e086..ea3ecaa 100644 --- a/examples-generated/datadog/v1alpha1/organizationsettings.yaml +++ b/examples-generated/organization/v1beta1/settings.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: OrganizationSettings +apiVersion: organization.datadog.upbound.io/v1beta1 +kind: Settings metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/organizationsettings + meta.upbound.io/example-id: organization/v1beta1/settings labels: testing.upbound.io/example-name: organization name: organization diff --git a/examples-generated/datadog/v1alpha1/rumapplication.yaml b/examples-generated/rum/v1beta1/application.yaml similarity index 58% rename from examples-generated/datadog/v1alpha1/rumapplication.yaml rename to examples-generated/rum/v1beta1/application.yaml index 1beb8eb..9919eca 100644 --- a/examples-generated/datadog/v1alpha1/rumapplication.yaml +++ b/examples-generated/rum/v1beta1/application.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: RUMApplication +apiVersion: rum.datadog.upbound.io/v1beta1 +kind: Application metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/rumapplication + meta.upbound.io/example-id: rum/v1beta1/application labels: testing.upbound.io/example-name: rum_application name: rum-application diff --git a/examples-generated/security/v1beta1/ipallowlist.yaml b/examples-generated/security/v1beta1/ipallowlist.yaml new file mode 100644 index 0000000..00df5be --- /dev/null +++ b/examples-generated/security/v1beta1/ipallowlist.yaml @@ -0,0 +1,16 @@ +apiVersion: security.datadog.upbound.io/v1beta1 +kind: IPAllowList +metadata: + annotations: + meta.upbound.io/example-id: security/v1beta1/ipallowlist + labels: + testing.upbound.io/example-name: example + name: example +spec: + forProvider: + enabled: false + entry: + - cidrBlock: 127.0.0.0/32 + note: 1st Example IP Range + - cidrBlock: 192.0.2.0/24 + note: 2nd Example IP Range diff --git a/examples-generated/securitymonitoring/v1alpha1/defaultrule.yaml b/examples-generated/securitymonitoring/v1beta1/defaultrule.yaml similarity index 63% rename from examples-generated/securitymonitoring/v1alpha1/defaultrule.yaml rename to examples-generated/securitymonitoring/v1beta1/defaultrule.yaml index b02a4c3..e34d7d6 100644 --- a/examples-generated/securitymonitoring/v1alpha1/defaultrule.yaml +++ b/examples-generated/securitymonitoring/v1beta1/defaultrule.yaml @@ -1,8 +1,8 @@ -apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +apiVersion: securitymonitoring.datadog.upbound.io/v1beta1 kind: DefaultRule metadata: annotations: - meta.upbound.io/example-id: securitymonitoring/v1alpha1/defaultrule + meta.upbound.io/example-id: securitymonitoring/v1beta1/defaultrule labels: testing.upbound.io/example-name: adefaultrule name: adefaultrule diff --git a/examples/securitymonitoring/v1alpha1/filter.yaml b/examples-generated/securitymonitoring/v1beta1/filter.yaml similarity index 72% rename from examples/securitymonitoring/v1alpha1/filter.yaml rename to examples-generated/securitymonitoring/v1beta1/filter.yaml index 0115ea6..3405902 100644 --- a/examples/securitymonitoring/v1alpha1/filter.yaml +++ b/examples-generated/securitymonitoring/v1beta1/filter.yaml @@ -1,8 +1,8 @@ -apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +apiVersion: securitymonitoring.datadog.upbound.io/v1beta1 kind: Filter metadata: annotations: - meta.upbound.io/example-id: securitymonitoring/v1alpha1/filter + meta.upbound.io/example-id: securitymonitoring/v1beta1/filter labels: testing.upbound.io/example-name: my_filter name: my-filter diff --git a/examples-generated/securitymonitoring/v1alpha1/rule.yaml b/examples-generated/securitymonitoring/v1beta1/rule.yaml similarity index 79% rename from examples-generated/securitymonitoring/v1alpha1/rule.yaml rename to examples-generated/securitymonitoring/v1beta1/rule.yaml index cb97228..226e9f8 100644 --- a/examples-generated/securitymonitoring/v1alpha1/rule.yaml +++ b/examples-generated/securitymonitoring/v1beta1/rule.yaml @@ -1,8 +1,8 @@ -apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +apiVersion: securitymonitoring.datadog.upbound.io/v1beta1 kind: Rule metadata: annotations: - meta.upbound.io/example-id: securitymonitoring/v1alpha1/rule + meta.upbound.io/example-id: securitymonitoring/v1beta1/rule labels: testing.upbound.io/example-name: myrule name: myrule @@ -22,11 +22,13 @@ spec: maxSignalDuration: 900 query: - aggregation: count + dataSource: logs groupByFields: - host name: errors query: status:error - aggregation: count + dataSource: logs groupByFields: - host name: warnings diff --git a/examples-generated/sensitivedatascanner/v1alpha1/group.yaml b/examples-generated/sensitivedata/v1beta1/scannergroup.yaml similarity index 66% rename from examples-generated/sensitivedatascanner/v1alpha1/group.yaml rename to examples-generated/sensitivedata/v1beta1/scannergroup.yaml index 82ff937..50a26ba 100644 --- a/examples-generated/sensitivedatascanner/v1alpha1/group.yaml +++ b/examples-generated/sensitivedata/v1beta1/scannergroup.yaml @@ -1,8 +1,8 @@ -apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 -kind: Group +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerGroup metadata: annotations: - meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/group + meta.upbound.io/example-id: sensitivedata/v1beta1/scannergroup labels: testing.upbound.io/example-name: mygroup name: mygroup diff --git a/examples-generated/sensitivedatascanner/v1alpha1/grouporder.yaml b/examples-generated/sensitivedata/v1beta1/scannergrouporder.yaml similarity index 55% rename from examples-generated/sensitivedatascanner/v1alpha1/grouporder.yaml rename to examples-generated/sensitivedata/v1beta1/scannergrouporder.yaml index edcff04..a79452b 100644 --- a/examples-generated/sensitivedatascanner/v1alpha1/grouporder.yaml +++ b/examples-generated/sensitivedata/v1beta1/scannergrouporder.yaml @@ -1,8 +1,8 @@ -apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 -kind: GroupOrder +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerGroupOrder metadata: annotations: - meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/grouporder + meta.upbound.io/example-id: sensitivedata/v1beta1/scannergrouporder labels: testing.upbound.io/example-name: mygrouporder name: mygrouporder diff --git a/examples-generated/sensitivedatascanner/v1alpha1/rule.yaml b/examples-generated/sensitivedata/v1beta1/scannerrule.yaml similarity index 66% rename from examples-generated/sensitivedatascanner/v1alpha1/rule.yaml rename to examples-generated/sensitivedata/v1beta1/scannerrule.yaml index 29ef551..0e4863e 100644 --- a/examples-generated/sensitivedatascanner/v1alpha1/rule.yaml +++ b/examples-generated/sensitivedata/v1beta1/scannerrule.yaml @@ -1,8 +1,8 @@ -apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 -kind: Rule +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerRule metadata: annotations: - meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/rule + meta.upbound.io/example-id: sensitivedata/v1beta1/scannerrule labels: testing.upbound.io/example-name: myrule name: myrule @@ -11,7 +11,9 @@ spec: description: Another description excludedNamespaces: - username - groupId: ${datadog_sensitive_data_scanner_group.mygroup.id} + groupIdSelector: + matchLabels: + testing.upbound.io/example-name: mygroup includedKeywordConfiguration: - characterCount: 30 keywords: @@ -20,6 +22,7 @@ spec: isEnabled: true name: My new rule pattern: myregex + priority: 1 tags: - sensitive_data:true textReplacement: @@ -29,11 +32,11 @@ spec: --- -apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 -kind: Group +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerGroup metadata: annotations: - meta.upbound.io/example-id: sensitivedatascanner.datadog/v1alpha1/rule + meta.upbound.io/example-id: sensitivedata/v1beta1/scannerrule labels: testing.upbound.io/example-name: mygroup name: mygroup diff --git a/examples/datadog/v1alpha1/servicedefinitionyaml.yaml b/examples-generated/service/v1beta1/definitionyaml.yaml similarity index 91% rename from examples/datadog/v1alpha1/servicedefinitionyaml.yaml rename to examples-generated/service/v1beta1/definitionyaml.yaml index d3bda82..d337247 100644 --- a/examples/datadog/v1alpha1/servicedefinitionyaml.yaml +++ b/examples-generated/service/v1beta1/definitionyaml.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: ServiceDefinitionYAML +apiVersion: service.datadog.upbound.io/v1beta1 +kind: DefinitionYaml metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/servicedefinitionyaml + meta.upbound.io/example-id: service/v1beta1/definitionyaml labels: testing.upbound.io/example-name: service_definition_v2_2 name: service-definition-v2-2 diff --git a/examples-generated/datadog/v1alpha1/slocorrection.yaml b/examples-generated/slo/v1beta1/correction.yaml similarity index 72% rename from examples-generated/datadog/v1alpha1/slocorrection.yaml rename to examples-generated/slo/v1beta1/correction.yaml index 4c15881..faa0229 100644 --- a/examples-generated/datadog/v1alpha1/slocorrection.yaml +++ b/examples-generated/slo/v1beta1/correction.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: SLOCorrection +apiVersion: slo.datadog.upbound.io/v1beta1 +kind: Correction metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/slocorrection + meta.upbound.io/example-id: slo/v1beta1/correction labels: testing.upbound.io/example-name: example_slo_correction name: example-slo-correction @@ -11,17 +11,19 @@ spec: category: Scheduled Maintenance description: correction example end: 1735718600 - sloId: ${datadog_service_level_objective.example_slo.id} + sloIdSelector: + matchLabels: + testing.upbound.io/example-name: example_slo start: 1735707000 timezone: UTC --- -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: slo.datadog.upbound.io/v1beta1 kind: ServiceLevelObjective metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/slocorrection + meta.upbound.io/example-id: slo/v1beta1/correction labels: testing.upbound.io/example-name: example_slo name: example-slo diff --git a/examples-generated/datadog/v1alpha1/servicelevelobjective.yaml b/examples-generated/slo/v1beta1/servicelevelobjective.yaml similarity index 84% rename from examples-generated/datadog/v1alpha1/servicelevelobjective.yaml rename to examples-generated/slo/v1beta1/servicelevelobjective.yaml index a0b0dbf..123aaf7 100644 --- a/examples-generated/datadog/v1alpha1/servicelevelobjective.yaml +++ b/examples-generated/slo/v1beta1/servicelevelobjective.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: slo.datadog.upbound.io/v1beta1 kind: ServiceLevelObjective metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/servicelevelobjective + meta.upbound.io/example-id: slo/v1beta1/servicelevelobjective labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/synthetics/v1alpha1/globalvariable.yaml b/examples-generated/synthetics/v1alpha1/globalvariable.yaml deleted file mode 100644 index d6a738c..0000000 --- a/examples-generated/synthetics/v1alpha1/globalvariable.yaml +++ /dev/null @@ -1,19 +0,0 @@ -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/concurrencycap.yaml b/examples-generated/synthetics/v1beta1/concurrencycap.yaml similarity index 57% rename from examples-generated/synthetics/v1alpha1/concurrencycap.yaml rename to examples-generated/synthetics/v1beta1/concurrencycap.yaml index c554aeb..bded243 100644 --- a/examples-generated/synthetics/v1alpha1/concurrencycap.yaml +++ b/examples-generated/synthetics/v1beta1/concurrencycap.yaml @@ -1,8 +1,8 @@ -apiVersion: synthetics.datadog.upbound.io/v1alpha1 +apiVersion: synthetics.datadog.upbound.io/v1beta1 kind: ConcurrencyCap metadata: annotations: - meta.upbound.io/example-id: synthetics/v1alpha1/concurrencycap + meta.upbound.io/example-id: synthetics/v1beta1/concurrencycap labels: testing.upbound.io/example-name: this name: this diff --git a/examples/synthetics/v1alpha1/globalvariable.yaml b/examples-generated/synthetics/v1beta1/globalvariable.yaml similarity index 75% rename from examples/synthetics/v1alpha1/globalvariable.yaml rename to examples-generated/synthetics/v1beta1/globalvariable.yaml index d6a738c..00d16cf 100644 --- a/examples/synthetics/v1alpha1/globalvariable.yaml +++ b/examples-generated/synthetics/v1beta1/globalvariable.yaml @@ -1,8 +1,8 @@ -apiVersion: synthetics.datadog.upbound.io/v1alpha1 +apiVersion: synthetics.datadog.upbound.io/v1beta1 kind: GlobalVariable metadata: annotations: - meta.upbound.io/example-id: synthetics/v1alpha1/globalvariable + meta.upbound.io/example-id: synthetics/v1beta1/globalvariable labels: testing.upbound.io/example-name: test_variable name: test-variable diff --git a/examples-generated/synthetics/v1alpha1/privatelocation.yaml b/examples-generated/synthetics/v1beta1/privatelocation.yaml similarity index 70% rename from examples-generated/synthetics/v1alpha1/privatelocation.yaml rename to examples-generated/synthetics/v1beta1/privatelocation.yaml index 7e28d56..61f7ced 100644 --- a/examples-generated/synthetics/v1alpha1/privatelocation.yaml +++ b/examples-generated/synthetics/v1beta1/privatelocation.yaml @@ -1,8 +1,8 @@ -apiVersion: synthetics.datadog.upbound.io/v1alpha1 +apiVersion: synthetics.datadog.upbound.io/v1beta1 kind: PrivateLocation metadata: annotations: - meta.upbound.io/example-id: synthetics/v1alpha1/privatelocation + meta.upbound.io/example-id: synthetics/v1beta1/privatelocation labels: testing.upbound.io/example-name: private_location name: private-location diff --git a/examples-generated/synthetics/v1alpha1/test.yaml b/examples-generated/synthetics/v1beta1/test.yaml similarity index 86% rename from examples-generated/synthetics/v1alpha1/test.yaml rename to examples-generated/synthetics/v1beta1/test.yaml index 8f831cf..5dd17b6 100644 --- a/examples-generated/synthetics/v1alpha1/test.yaml +++ b/examples-generated/synthetics/v1beta1/test.yaml @@ -1,8 +1,8 @@ -apiVersion: synthetics.datadog.upbound.io/v1alpha1 +apiVersion: synthetics.datadog.upbound.io/v1beta1 kind: Test metadata: annotations: - meta.upbound.io/example-id: synthetics/v1alpha1/test + meta.upbound.io/example-id: synthetics/v1beta1/test labels: testing.upbound.io/example-name: test_uptime name: test-uptime diff --git a/examples/datadog/v1alpha1/apikey.yaml b/examples/access/v1beta1/apikey.yaml similarity index 58% rename from examples/datadog/v1alpha1/apikey.yaml rename to examples/access/v1beta1/apikey.yaml index a31f091..358ab13 100644 --- a/examples/datadog/v1alpha1/apikey.yaml +++ b/examples/access/v1beta1/apikey.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: access.datadog.upbound.io/v1beta1 kind: APIKey metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/apikey + meta.upbound.io/example-id: access/v1beta1/apikey labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples/access/v1beta1/applicationkey.yaml b/examples/access/v1beta1/applicationkey.yaml new file mode 100644 index 0000000..ce86b91 --- /dev/null +++ b/examples/access/v1beta1/applicationkey.yaml @@ -0,0 +1,11 @@ +apiVersion: access.datadog.upbound.io/v1beta1 +kind: ApplicationKey +metadata: + annotations: + meta.upbound.io/example-id: access/v1beta1/applicationkey + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + name: foo diff --git a/examples/apm/v1alpha1/retentionfilter.yaml b/examples/apm/v1alpha1/retentionfilter.yaml deleted file mode 100644 index 9694ade..0000000 --- a/examples/apm/v1alpha1/retentionfilter.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index d4d1775..0000000 --- a/examples/apm/v1alpha1/retentionfilterorder.yaml +++ /dev/null @@ -1,31 +0,0 @@ -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/apm/v1alpha1/retentionfilter.yaml b/examples/apm/v1beta1/retentionfilter.yaml similarity index 65% rename from examples-generated/apm/v1alpha1/retentionfilter.yaml rename to examples/apm/v1beta1/retentionfilter.yaml index e77e31a..fc0b0c1 100644 --- a/examples-generated/apm/v1alpha1/retentionfilter.yaml +++ b/examples/apm/v1beta1/retentionfilter.yaml @@ -1,8 +1,8 @@ -apiVersion: apm.datadog.upbound.io/v1alpha1 +apiVersion: apm.datadog.upbound.io/v1beta1 kind: RetentionFilter metadata: annotations: - meta.upbound.io/example-id: apm/v1alpha1/retentionfilter + meta.upbound.io/example-id: apm/v1beta1/retentionfilterorder labels: testing.upbound.io/example-name: foo name: foo @@ -10,7 +10,7 @@ spec: forProvider: enabled: false filter: - - query: '*' + query: '*' filterType: spans-sampling-processor name: Sample order rate: "1.0" diff --git a/examples/apm/v1beta1/retentionfilterorder.yaml b/examples/apm/v1beta1/retentionfilterorder.yaml new file mode 100644 index 0000000..73ec73d --- /dev/null +++ b/examples/apm/v1beta1/retentionfilterorder.yaml @@ -0,0 +1,33 @@ +apiVersion: apm.datadog.upbound.io/v1beta1 +kind: RetentionFilterOrder +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs long running and hardcoded IDs of RetentionFilters + meta.upbound.io/example-id: apm/v1beta1/retentionfilterorder + labels: + testing.upbound.io/example-name: bar + name: bar +spec: + forProvider: + filterIdsSelector: + matchLabels: + testing.upbound.io/example-name: foo + +--- + +apiVersion: apm.datadog.upbound.io/v1beta1 +kind: RetentionFilter +metadata: + annotations: + meta.upbound.io/example-id: apm/v1beta1/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/authentication/v1beta1/authnmapping.yaml b/examples/authentication/v1beta1/authnmapping.yaml new file mode 100644 index 0000000..6ae411a --- /dev/null +++ b/examples/authentication/v1beta1/authnmapping.yaml @@ -0,0 +1,31 @@ +apiVersion: authentication.datadog.upbound.io/v1beta1 +kind: AuthnMapping +metadata: + annotations: + meta.upbound.io/example-id: authentication/v1beta1/authnmapping + labels: + testing.upbound.io/example-name: dev_ro_role_mapping + name: dev-ro-role-mapping +spec: + forProvider: + key: Member-of + roleSelector: + matchLabels: + testing.upbound.io/example-name: dev_ro_role_mapping + value: Development + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/role + labels: + testing.upbound.io/example-name: dev_ro_role_mapping + name: dev-ro-role-mapping +spec: + forProvider: + name: dev_ro_role_mapping + permission: + - id: 4d87d5f8-d8b1-11e9-a77a-eb9c8350d04f diff --git a/examples/cloud/v1alpha1/workloadsecurityagentrule.yaml b/examples/cloud/v1alpha1/workloadsecurityagentrule.yaml deleted file mode 100644 index 9f459c5..0000000 --- a/examples/cloud/v1alpha1/workloadsecurityagentrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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/cloud/v1alpha1/configurationrule.yaml b/examples/cloud/v1beta1/configurationrule.yaml similarity index 77% rename from examples/cloud/v1alpha1/configurationrule.yaml rename to examples/cloud/v1beta1/configurationrule.yaml index 6089e53..ed27d60 100644 --- a/examples/cloud/v1alpha1/configurationrule.yaml +++ b/examples/cloud/v1beta1/configurationrule.yaml @@ -1,20 +1,19 @@ -apiVersion: cloud.datadog.upbound.io/v1alpha1 +apiVersion: cloud.datadog.upbound.io/v1beta1 kind: ConfigurationRule metadata: annotations: - meta.upbound.io/example-id: cloud/v1alpha1/configurationrule + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: cloud/v1beta1/configurationrule labels: - testing.upbound.io/example-name: myrule - name: myrule + testing.upbound.io/example-name: uptestrule + name: uptestrule spec: forProvider: enabled: true groupBy: - '@resource' message: Rule has triggered - name: My cloud configuration rule - notifications: - - '@channel' + name: Uptest cloud configuration rule policy: | package datadog diff --git a/examples/datadog/v1alpha1/dashboardjson.yaml b/examples/dashboard/v1beta1/dashboardjson.yaml similarity index 98% rename from examples/datadog/v1alpha1/dashboardjson.yaml rename to examples/dashboard/v1beta1/dashboardjson.yaml index d688b0f..f3b550d 100644 --- a/examples/datadog/v1alpha1/dashboardjson.yaml +++ b/examples/dashboard/v1beta1/dashboardjson.yaml @@ -1,17 +1,17 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: dashboard.datadog.upbound.io/v1beta1 kind: DashboardJSON metadata: annotations: - meta.upbound.io/example-id: dashboard/v1alpha1/dashboardjson + meta.upbound.io/example-id: dashboard/v1beta1/dashboardjson labels: testing.upbound.io/example-name: dashboard_json - name: dashboard-json + name: dashboard-example spec: forProvider: dashboard: | { "title":"Ordered Layout Dashboard", - "description":"Created using the Datadog provider in Terraform", + "description":"Created using the Datadog provider in Crossplane", "widgets":[ { "id":719369537777170, @@ -474,7 +474,6 @@ spec: } ], "layout_type":"ordered", - "is_read_only":true, "notify_list":[ ], diff --git a/examples/dashboard/v1beta1/dashboardlist.yaml b/examples/dashboard/v1beta1/dashboardlist.yaml new file mode 100644 index 0000000..8a58c66 --- /dev/null +++ b/examples/dashboard/v1beta1/dashboardlist.yaml @@ -0,0 +1,15 @@ +apiVersion: dashboard.datadog.upbound.io/v1beta1 +kind: DashboardList +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs long running Dashboard + meta.upbound.io/example-id: dashboard/v1beta1/dashboardlist + labels: + testing.upbound.io/example-name: new_list + name: new-list +spec: + forProvider: + dashItem: + - dashId: ry5-dyn-4yv + type: custom_screenboard + name: Terraform Created List diff --git a/examples/datadog/v1alpha1/powerpack.yaml b/examples/dashboard/v1beta1/powerpack.yaml similarity index 54% rename from examples/datadog/v1alpha1/powerpack.yaml rename to examples/dashboard/v1beta1/powerpack.yaml index f764214..6024b08 100644 --- a/examples/datadog/v1alpha1/powerpack.yaml +++ b/examples/dashboard/v1beta1/powerpack.yaml @@ -1,16 +1,16 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: dashboard.datadog.upbound.io/v1beta1 kind: Powerpack metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/powerpack + meta.upbound.io/example-id: dashboard/v1beta1/powerpack labels: testing.upbound.io/example-name: foo - name: foo + name: uptest spec: forProvider: - description: Created using the Datadog provider in terraform + description: Created using the Datadog provider in Crossplane layout: - - height: 10 + height: 10 width: 3 x: 1 "y": 0 @@ -29,14 +29,3 @@ spec: "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/appkey.yaml b/examples/datadog/v1alpha1/appkey.yaml deleted file mode 100644 index 2fb26d4..0000000 --- a/examples/datadog/v1alpha1/appkey.yaml +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 668ac34..0000000 --- a/examples/datadog/v1alpha1/authnmapping.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index 08f5587..0000000 --- a/examples/datadog/v1alpha1/childorganization.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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/dashboardjsonuxpminset.yaml b/examples/datadog/v1alpha1/dashboardjsonuxpminset.yaml deleted file mode 100644 index 8f4a261..0000000 --- a/examples/datadog/v1alpha1/dashboardjsonuxpminset.yaml +++ /dev/null @@ -1,888 +0,0 @@ -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 deleted file mode 100644 index 9229946..0000000 --- a/examples/datadog/v1alpha1/dashboardlist.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index 1e20827..0000000 --- a/examples/datadog/v1alpha1/downtime.yaml +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 0a49a5f..0000000 --- a/examples/datadog/v1alpha1/downtimeschedule.yaml +++ /dev/null @@ -1,31 +0,0 @@ -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/organizationsettings.yaml b/examples/datadog/v1alpha1/organizationsettings.yaml deleted file mode 100644 index ddd1cc3..0000000 --- a/examples/datadog/v1alpha1/organizationsettings.yaml +++ /dev/null @@ -1,11 +0,0 @@ -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/restrictionpolicy.yaml b/examples/datadog/v1alpha1/restrictionpolicy.yaml deleted file mode 100644 index 5de25c3..0000000 --- a/examples/datadog/v1alpha1/restrictionpolicy.yaml +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index c6380ce..0000000 --- a/examples/datadog/v1alpha1/role.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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/serviceaccount.yaml b/examples/datadog/v1alpha1/serviceaccount.yaml deleted file mode 100644 index cd56614..0000000 --- a/examples/datadog/v1alpha1/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index cbb1aac..0000000 --- a/examples/datadog/v1alpha1/serviceaccountapplicationkey.yaml +++ /dev/null @@ -1,12 +0,0 @@ -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/slocorrection.yaml b/examples/datadog/v1alpha1/slocorrection.yaml deleted file mode 100644 index 0a036d6..0000000 --- a/examples/datadog/v1alpha1/slocorrection.yaml +++ /dev/null @@ -1,39 +0,0 @@ -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/team.yaml b/examples/datadog/v1alpha1/team.yaml deleted file mode 100644 index 89cf781..0000000 --- a/examples/datadog/v1alpha1/team.yaml +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index e6b6dbf..0000000 --- a/examples/datadog/v1alpha1/teamlink.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index 1f1006a..0000000 --- a/examples/datadog/v1alpha1/teammembership.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index b9c3b10..0000000 --- a/examples/datadog/v1alpha1/teampermissionsetting.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index 938dcab..0000000 --- a/examples/datadog/v1alpha1/user.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index 10f0e36..0000000 --- a/examples/datadog/v1alpha1/webhook.yaml +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 5ef741b..0000000 --- a/examples/datadog/v1alpha1/webhookcustomvariable.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index 59ab40a..0000000 --- a/examples/datadog/webhook-secret.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: datadog-webhook-secret - namespace: upbound-system -type: Opaque -stringData: - info: "foobar" diff --git a/examples/iam/v1beta1/restrictionpolicy.yaml b/examples/iam/v1beta1/restrictionpolicy.yaml new file mode 100644 index 0000000..f23f458 --- /dev/null +++ b/examples/iam/v1beta1/restrictionpolicy.yaml @@ -0,0 +1,15 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: RestrictionPolicy +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/restrictionpolicy + labels: + testing.upbound.io/example-name: rest_policy + name: uptest +spec: + forProvider: + bindings: + - principals: + - org:312aa6bc-ca87-11ed-9894-da7ad0900002 + relation: editor + resourceId: security-rule:abc-def-ghi diff --git a/examples/iam/v1beta1/role.yaml b/examples/iam/v1beta1/role.yaml new file mode 100644 index 0000000..1419e2e --- /dev/null +++ b/examples/iam/v1beta1/role.yaml @@ -0,0 +1,13 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/role + labels: + testing.upbound.io/example-name: uptest + name: uptest +spec: + forProvider: + name: uptest + permission: + - id: 4d87d5f8-d8b1-11e9-a77a-eb9c8350d04f \ No newline at end of file diff --git a/examples/iam/v1beta1/serviceaccount.yaml b/examples/iam/v1beta1/serviceaccount.yaml new file mode 100644 index 0000000..1c5b6b4 --- /dev/null +++ b/examples/iam/v1beta1/serviceaccount.yaml @@ -0,0 +1,30 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: ServiceAccount +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/serviceaccount + labels: + testing.upbound.io/example-name: sa_example + name: uptest +spec: + forProvider: + email: new@example.com + name: Service Account Uptest + rolesSelector: + matchLabels: + testing.upbound.io/example-name: sa_example +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/role + labels: + testing.upbound.io/example-name: sa_example + name: sa-example +spec: + forProvider: + name: uptest + permission: + - id: 4d87d5f8-d8b1-11e9-a77a-eb9c8350d04f diff --git a/examples/iam/v1beta1/serviceaccountapplicationkey.yaml b/examples/iam/v1beta1/serviceaccountapplicationkey.yaml new file mode 100644 index 0000000..f513f7b --- /dev/null +++ b/examples/iam/v1beta1/serviceaccountapplicationkey.yaml @@ -0,0 +1,47 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: ServiceAccountApplicationKey +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/serviceaccountapplicationkey + labels: + testing.upbound.io/example-name: sa_app_key + name: uptest +spec: + forProvider: + name: Application key for managing dashboards + serviceAccountIdSelector: + matchLabels: + testing.upbound.io/example-name: sa_app_key + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: ServiceAccount +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/serviceaccount + labels: + testing.upbound.io/example-name: sa_app_key + name: app-key +spec: + forProvider: + email: app-key@example.com + name: Service Account App-Key + rolesSelector: + matchLabels: + testing.upbound.io/example-name: sa_app_key +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/role + labels: + testing.upbound.io/example-name: sa_app_key + name: app-key-example +spec: + forProvider: + name: uptest + permission: + - id: 4d87d5f8-d8b1-11e9-a77a-eb9c8350d04f diff --git a/examples/iam/v1beta1/team.yaml b/examples/iam/v1beta1/team.yaml new file mode 100644 index 0000000..4327aef --- /dev/null +++ b/examples/iam/v1beta1/team.yaml @@ -0,0 +1,13 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/team + labels: + testing.upbound.io/example-name: example_team + name: example-team +spec: + forProvider: + description: Team description + handle: example-team + name: Example Team diff --git a/examples/iam/v1beta1/teamlink.yaml b/examples/iam/v1beta1/teamlink.yaml new file mode 100644 index 0000000..96c2fc1 --- /dev/null +++ b/examples/iam/v1beta1/teamlink.yaml @@ -0,0 +1,32 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: TeamLink +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teamlink + labels: + testing.upbound.io/example-name: team_link + name: team-link +spec: + forProvider: + label: Link label + position: 0 + teamIdSelector: + matchLabels: + testing.upbound.io/example-name: team_link + url: https://example.com + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teamlink + labels: + testing.upbound.io/example-name: team_link + name: team-link +spec: + forProvider: + description: Link team + handle: example-team-link + name: Example-Team-Link diff --git a/examples/iam/v1beta1/teammembership.yaml b/examples/iam/v1beta1/teammembership.yaml new file mode 100644 index 0000000..c7b738a --- /dev/null +++ b/examples/iam/v1beta1/teammembership.yaml @@ -0,0 +1,47 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: TeamMembership +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teammembership + labels: + testing.upbound.io/example-name: member + name: member +spec: + forProvider: + role: admin + teamIdSelector: + matchLabels: + testing.upbound.io/example-name: member + userIdSelector: + matchLabels: + testing.upbound.io/example-name: member + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teammembership + labels: + testing.upbound.io/example-name: member + name: foo +spec: + forProvider: + description: Member team + handle: example-team-member + name: Example Team-member + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: User +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teammembership + labels: + testing.upbound.io/example-name: member + name: member-user +spec: + forProvider: + email: member@example.com diff --git a/examples/iam/v1beta1/teampermissionsetting.yaml b/examples/iam/v1beta1/teampermissionsetting.yaml new file mode 100644 index 0000000..320a7bb --- /dev/null +++ b/examples/iam/v1beta1/teampermissionsetting.yaml @@ -0,0 +1,31 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: TeamPermissionSetting +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teampermissionsetting + labels: + testing.upbound.io/example-name: permission + name: foo +spec: + forProvider: + action: manage_membership + teamIdSelector: + matchLabels: + testing.upbound.io/example-name: permission + value: organization + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Team +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/teampermissionsetting + labels: + testing.upbound.io/example-name: permission + name: permission-team +spec: + forProvider: + description: Example team + handle: example-team-permission + name: Example Team-permission diff --git a/examples/iam/v1beta1/user.yaml b/examples/iam/v1beta1/user.yaml new file mode 100644 index 0000000..f9a3467 --- /dev/null +++ b/examples/iam/v1beta1/user.yaml @@ -0,0 +1,30 @@ +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: User +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/user + labels: + testing.upbound.io/example-name: example_user + name: uptest +spec: + forProvider: + email: uptest@example.com + rolesSelector: + matchLabels: + testing.upbound.io/example-name: example_user + +--- + +apiVersion: iam.datadog.upbound.io/v1beta1 +kind: Role +metadata: + annotations: + meta.upbound.io/example-id: iam/v1beta1/role + labels: + testing.upbound.io/example-name: example_user + name: user-example +spec: + forProvider: + name: uptest + permission: + - id: 4d87d5f8-d8b1-11e9-a77a-eb9c8350d04f diff --git a/examples/integration/pagerduty-secret.sh b/examples/integration/pagerduty-secret.sh deleted file mode 100755 index a2be04a..0000000 --- a/examples/integration/pagerduty-secret.sh +++ /dev/null @@ -1,13 +0,0 @@ -cat < accountSpecificNamespaceRules: auto_scaling: false opsworks: false diff --git a/examples/integration/v1beta1/awseventbridge.yaml b/examples/integration/v1beta1/awseventbridge.yaml new file mode 100644 index 0000000..6902801 --- /dev/null +++ b/examples/integration/v1beta1/awseventbridge.yaml @@ -0,0 +1,15 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsEventBridge +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: integration/v1beta1/awseventbridge + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: + createEventBus: true + eventGeneratorName: app-alerts + region: us-east-1 diff --git a/examples/integration/v1beta1/awslambdaarn.yaml b/examples/integration/v1beta1/awslambdaarn.yaml new file mode 100644 index 0000000..985903e --- /dev/null +++ b/examples/integration/v1beta1/awslambdaarn.yaml @@ -0,0 +1,13 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsLambdaArn +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: integration/v1beta1/awslambdaarn + labels: + testing.upbound.io/example-name: main_collector + name: main-collector +spec: + forProvider: + accountId: + lambdaArn: diff --git a/examples/integration/v1beta1/awslogcollection.yaml b/examples/integration/v1beta1/awslogcollection.yaml new file mode 100644 index 0000000..7f900be --- /dev/null +++ b/examples/integration/v1beta1/awslogcollection.yaml @@ -0,0 +1,14 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsLogCollection +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: integration/v1beta1/awslogcollection + labels: + testing.upbound.io/example-name: main + name: main +spec: + forProvider: + accountId: + services: + - lambda diff --git a/examples/integration/v1beta1/awstagfilter.yaml b/examples/integration/v1beta1/awstagfilter.yaml new file mode 100644 index 0000000..f662f22 --- /dev/null +++ b/examples/integration/v1beta1/awstagfilter.yaml @@ -0,0 +1,14 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: AwsTagFilter +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: integration/v1beta1/awstagfilter + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + accountId: + namespace: sqs + tagFilterStr: key:value diff --git a/examples-generated/integration/v1alpha1/azure.yaml b/examples/integration/v1beta1/azure.yaml similarity index 74% rename from examples-generated/integration/v1alpha1/azure.yaml rename to examples/integration/v1beta1/azure.yaml index 3cd1c4d..7348c4a 100644 --- a/examples-generated/integration/v1alpha1/azure.yaml +++ b/examples/integration/v1beta1/azure.yaml @@ -1,8 +1,9 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: Azure metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/azure + upjet.upbound.io/manual-intervention: This resource needs Azure integration + meta.upbound.io/example-id: integration/v1beta1/azure labels: testing.upbound.io/example-name: sandbox name: sandbox diff --git a/examples-generated/integration/v1alpha1/cloudflareaccount.yaml b/examples/integration/v1beta1/cloudflareaccount.yaml similarity index 58% rename from examples-generated/integration/v1alpha1/cloudflareaccount.yaml rename to examples/integration/v1beta1/cloudflareaccount.yaml index a035141..9122e87 100644 --- a/examples-generated/integration/v1alpha1/cloudflareaccount.yaml +++ b/examples/integration/v1beta1/cloudflareaccount.yaml @@ -1,8 +1,9 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: CloudflareAccount metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/cloudflareaccount + upjet.upbound.io/manual-intervention: This resource needs CloudFlare integration + meta.upbound.io/example-id: integration/v1beta1/cloudflareaccount labels: testing.upbound.io/example-name: foo name: foo diff --git a/examples-generated/integration/v1alpha1/confluentaccount.yaml b/examples/integration/v1beta1/confluentaccount.yaml similarity index 54% rename from examples-generated/integration/v1alpha1/confluentaccount.yaml rename to examples/integration/v1beta1/confluentaccount.yaml index bb13390..4cc9685 100644 --- a/examples-generated/integration/v1alpha1/confluentaccount.yaml +++ b/examples/integration/v1beta1/confluentaccount.yaml @@ -1,14 +1,15 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: ConfluentAccount metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/confluentaccount + upjet.upbound.io/manual-intervention: This resource needs Confluent integration + meta.upbound.io/example-id: integration/v1beta1/confluentaccount labels: testing.upbound.io/example-name: foo name: foo spec: forProvider: - apiKey: TESTAPIKEY123 + apiKey: apiSecretSecretRef: key: example-key name: example-secret diff --git a/examples/integration/v1beta1/confluentresource.yaml b/examples/integration/v1beta1/confluentresource.yaml new file mode 100644 index 0000000..df29f64 --- /dev/null +++ b/examples/integration/v1beta1/confluentresource.yaml @@ -0,0 +1,40 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: ConfluentResource +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs Confluent integration + meta.upbound.io/example-id: integration/v1beta1/confluentresource + labels: + testing.upbound.io/example-name: confluent_resource + name: foo +spec: + forProvider: + accountIdSelector: + matchLabels: + testing.upbound.io/example-name: confluent_resource + resourceId: + resourceType: kafka + tags: + - mytag + - mytag2:myvalue + +--- + +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: ConfluentAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1beta1/confluentresource + labels: + testing.upbound.io/example-name: confluent_resource + name: foo +spec: + forProvider: + apiKey: + apiSecretSecretRef: + key: example-key + name: example-secret + namespace: upbound-system + tags: + - mytag + - mytag2:myvalue diff --git a/examples/integration/v1beta1/fastlyaccount.yaml b/examples/integration/v1beta1/fastlyaccount.yaml new file mode 100644 index 0000000..8b0fe90 --- /dev/null +++ b/examples/integration/v1beta1/fastlyaccount.yaml @@ -0,0 +1,13 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: FastlyAccount +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs FastlyAccount integration + meta.upbound.io/example-id: integration/v1beta1/fastlyaccount + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + apiKey: + name: test-name diff --git a/examples/integration/v1beta1/fastlyservice.yaml b/examples/integration/v1beta1/fastlyservice.yaml new file mode 100644 index 0000000..63f5f9e --- /dev/null +++ b/examples/integration/v1beta1/fastlyservice.yaml @@ -0,0 +1,32 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: FastlyService +metadata: + annotations: + meta.upbound.io/example-id: integration/v1beta1/fastlyservice + labels: + testing.upbound.io/example-name: fastly_resource + name: foo +spec: + forProvider: + accountIdSelector: + matchLabels: + testing.upbound.io/example-name: fastly_resource + serviceId: my-service-id + tags: + - mytag + - mytag2:myvalue + +--- + +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: FastlyAccount +metadata: + annotations: + meta.upbound.io/example-id: integration/v1beta1/fastlyservice + labels: + testing.upbound.io/example-name: fastly_resource + name: foo +spec: + forProvider: + apiKey: + name: test-name diff --git a/examples/integration/v1alpha1/gcp.yaml b/examples/integration/v1beta1/gcp.yaml similarity index 58% rename from examples/integration/v1alpha1/gcp.yaml rename to examples/integration/v1beta1/gcp.yaml index 074de19..a9a6b70 100644 --- a/examples/integration/v1alpha1/gcp.yaml +++ b/examples/integration/v1beta1/gcp.yaml @@ -1,17 +1,21 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: GCP metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/gcp + upjet.upbound.io/manual-intervention: This resource needs GCP integration + meta.upbound.io/example-id: integration/v1beta1/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" + clientId: + cloudRunRevisionFilters: + - filter_one + - filter_two hostFilters: foo:bar,buzz:lightyear - privateKeyId: "1234567890123456789012345678901234567890" + privateKeyId: privateKeySecretRef: key: example-key name: example-secret diff --git a/examples/integration/v1beta1/gcpsts.yaml b/examples/integration/v1beta1/gcpsts.yaml new file mode 100644 index 0000000..c3599bf --- /dev/null +++ b/examples/integration/v1beta1/gcpsts.yaml @@ -0,0 +1,20 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: GCPSts +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs GCP integration + meta.upbound.io/example-id: integration/v1beta1/gcpsts + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + automute: true + clientEmail: awesome-service-account@awesome-project-id.iam.gserviceaccount.com + cloudRunRevisionFilters: + - filter_one + - filter_two + hostFilters: + - filter_one + - filter_two + isCspmEnabled: false diff --git a/examples/integration/v1beta1/opsgenieserviceobject.yaml b/examples/integration/v1beta1/opsgenieserviceobject.yaml new file mode 100644 index 0000000..34c3c4f --- /dev/null +++ b/examples/integration/v1beta1/opsgenieserviceobject.yaml @@ -0,0 +1,17 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: OpsgenieServiceObject +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs opsgenie integration + meta.upbound.io/example-id: integration/v1beta1/opsgenieserviceobject + labels: + testing.upbound.io/example-name: example_service_name + name: example-service-name +spec: + forProvider: + name: example_service_name + opsgenieApiKeySecretRef: + key: example-key + name: example-secret + namespace: upbound-system + region: us diff --git a/examples/integration/v1beta1/pagerduty.yaml b/examples/integration/v1beta1/pagerduty.yaml new file mode 100644 index 0000000..c73c47b --- /dev/null +++ b/examples/integration/v1beta1/pagerduty.yaml @@ -0,0 +1,57 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: Pagerduty +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs PagerDuty integration + meta.upbound.io/example-id: integration/v1beta1/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/v1beta1 +kind: PagerdutyServiceObject +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs PagerDuty integration + meta.upbound.io/example-id: integration/v1beta1/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/v1beta1 +kind: PagerdutyServiceObject +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs PagerDuty integration + meta.upbound.io/example-id: integration/v1beta1/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/integration/v1beta1/pagerdutyserviceobject.yaml b/examples/integration/v1beta1/pagerdutyserviceobject.yaml new file mode 100644 index 0000000..fd0e541 --- /dev/null +++ b/examples/integration/v1beta1/pagerdutyserviceobject.yaml @@ -0,0 +1,16 @@ +apiVersion: integration.datadog.upbound.io/v1beta1 +kind: PagerdutyServiceObject +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs PagerDuty integration + meta.upbound.io/example-id: integration/v1beta1/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/integration/v1alpha1/slackchannel.yaml b/examples/integration/v1beta1/slackchannel.yaml similarity index 55% rename from examples/integration/v1alpha1/slackchannel.yaml rename to examples/integration/v1beta1/slackchannel.yaml index 1600713..d284f88 100644 --- a/examples/integration/v1alpha1/slackchannel.yaml +++ b/examples/integration/v1beta1/slackchannel.yaml @@ -1,8 +1,9 @@ -apiVersion: integration.datadog.upbound.io/v1alpha1 +apiVersion: integration.datadog.upbound.io/v1beta1 kind: SlackChannel metadata: annotations: - meta.upbound.io/example-id: integration/v1alpha1/slackchannel + upjet.upbound.io/manual-intervention: This resource needs Slack integration + meta.upbound.io/example-id: integration/v1beta1/slackchannel labels: testing.upbound.io/example-name: test_channel name: test-channel @@ -11,7 +12,7 @@ spec: accountName: foo channelName: '#test_channel' display: - - message: true + message: true notified: false snapshot: false tags: true diff --git a/examples/logs/v1alpha1/archive.yaml b/examples/logs/v1alpha1/archive.yaml deleted file mode 100644 index 1cfccdf..0000000 --- a/examples/logs/v1alpha1/archive.yaml +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index e3cd1fa..0000000 --- a/examples/logs/v1alpha1/archiveorder.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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/indexorder.yaml b/examples/logs/v1alpha1/indexorder.yaml deleted file mode 100644 index 3632d58..0000000 --- a/examples/logs/v1alpha1/indexorder.yaml +++ /dev/null @@ -1,13 +0,0 @@ -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/v1beta1/archive.yaml b/examples/logs/v1beta1/archive.yaml new file mode 100644 index 0000000..0e91ad0 --- /dev/null +++ b/examples/logs/v1beta1/archive.yaml @@ -0,0 +1,18 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: Archive +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: logs/v1beta1/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: + bucket: + path: + roleName: diff --git a/examples/logs/v1beta1/archiveorder.yaml b/examples/logs/v1beta1/archiveorder.yaml new file mode 100644 index 0000000..17220d1 --- /dev/null +++ b/examples/logs/v1beta1/archiveorder.yaml @@ -0,0 +1,35 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: ArchiveOrder +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource depends on Archive and it needs AWS integration + meta.upbound.io/example-id: logs/v1beta1/archiveorder + labels: + testing.upbound.io/example-name: sample_archive_order + name: sample-archive-order +spec: + forProvider: + archiveIdsSelector: + matchLabels: + testing.upbound.io/example-name: sample_archive_order + +--- + +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: Archive +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs AWS integration + meta.upbound.io/example-id: logs/v1beta1/archive + labels: + testing.upbound.io/example-name: sample_archive_order + name: my-s3-archive +spec: + forProvider: + name: my s3 archive + query: service:myservice + s3Archive: + accountId: + bucket: + path: + roleName: diff --git a/examples/logs/v1alpha1/custompipeline.yaml b/examples/logs/v1beta1/custompipeline.yaml similarity index 80% rename from examples/logs/v1alpha1/custompipeline.yaml rename to examples/logs/v1beta1/custompipeline.yaml index ac67c8b..39d8cf6 100644 --- a/examples/logs/v1alpha1/custompipeline.yaml +++ b/examples/logs/v1beta1/custompipeline.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: CustomPipeline metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/custompipeline + meta.upbound.io/example-id: logs/v1beta1/custompipeline labels: testing.upbound.io/example-name: sample_pipeline name: sample-pipeline @@ -14,13 +14,13 @@ spec: name: sample pipeline processor: - arithmeticProcessor: - - expression: (time1 - time2)*1000 + expression: (time1 - time2)*1000 isEnabled: true isReplaceMissing: true name: sample arithmetic processor target: my_arithmetic - attributeRemapper: - - isEnabled: true + isEnabled: true name: sample attribute processor overrideOnConflict: false preserveSource: true @@ -31,31 +31,31 @@ spec: targetFormat: string targetType: attribute - categoryProcessor: - - category: + category: - filter: - - query: '@severity: "."' + query: '@severity: "."' name: debug - filter: - - query: '@severity: "-"' + query: '@severity: "-"' name: verbose isEnabled: true name: sample category processor target: foo.severity - dateRemapper: - - isEnabled: true + isEnabled: true name: sample date remapper sources: - _timestamp - published_date - geoIpParser: - - isEnabled: true + 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} + grok: + matchRules: Rule %{word:my_word2} %{number:my_float2} supportRules: "" isEnabled: true name: sample grok parser @@ -63,7 +63,7 @@ spec: - sample log 1 source: message - lookupProcessor: - - defaultLookup: unknown service + defaultLookup: unknown service isEnabled: true lookupTable: - 1,my service @@ -71,47 +71,47 @@ spec: source: service_id target: service_name - messageRemapper: - - isEnabled: true + isEnabled: true name: sample message remapper sources: - msg - pipeline: - - filter: + filter: - query: source:foo isEnabled: true name: nested pipeline processor: - urlParser: - - name: sample url parser + name: sample url parser normalizeEndingSlashes: true sources: - url - extra target: http_url - serviceRemapper: - - isEnabled: true + isEnabled: true name: sample service remapper sources: - service - statusRemapper: - - isEnabled: true + isEnabled: true name: sample status remapper sources: - info - trace - stringBuilderProcessor: - - isEnabled: true + isEnabled: true isReplaceMissing: false name: sample string builder processor target: user_activity template: '%{user.name} logged in at %{timestamp}' - traceIdRemapper: - - isEnabled: true + isEnabled: true name: sample trace id remapper sources: - dd.trace_id - userAgentParser: - - isEnabled: true + isEnabled: true isEncoded: false name: sample user agent parser sources: diff --git a/examples-generated/logs/v1alpha1/index.yaml b/examples/logs/v1beta1/index.yaml similarity index 74% rename from examples-generated/logs/v1alpha1/index.yaml rename to examples/logs/v1beta1/index.yaml index 57e0086..d955e8e 100644 --- a/examples-generated/logs/v1alpha1/index.yaml +++ b/examples/logs/v1beta1/index.yaml @@ -1,8 +1,8 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: Index metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/index + meta.upbound.io/example-id: logs/v1beta1/index labels: testing.upbound.io/example-name: sample_index name: sample-index @@ -10,7 +10,7 @@ spec: forProvider: dailyLimit: 200000 dailyLimitReset: - - resetTime: "14:00" + resetTime: "14:00" resetUtcOffset: "+02:00" dailyLimitWarningThresholdPercentage: 50 exclusionFilter: @@ -25,6 +25,4 @@ spec: isEnabled: true name: Kubernetes apiserver filter: - - query: '*' - name: your index - retentionDays: 7 + query: "*" diff --git a/examples/logs/v1beta1/indexorder.yaml b/examples/logs/v1beta1/indexorder.yaml new file mode 100644 index 0000000..ed79c9f --- /dev/null +++ b/examples/logs/v1beta1/indexorder.yaml @@ -0,0 +1,45 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: IndexOrder +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs long running and hardcoded IDs of Indexes + meta.upbound.io/example-id: logs/v1beta1/indexorder + labels: + testing.upbound.io/example-name: sample_index_order + name: sample-index-order +spec: + forProvider: + indexesSelector: + matchLabels: + testing.upbound.io/example-name: sample_index_order + +--- + +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: Index +metadata: + annotations: + meta.upbound.io/example-id: logs/v1beta1/index + labels: + testing.upbound.io/example-name: sample_index_order + name: order-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: "*" diff --git a/examples/logs/v1beta1/integrationpipeline.yaml b/examples/logs/v1beta1/integrationpipeline.yaml new file mode 100644 index 0000000..f6d9566 --- /dev/null +++ b/examples/logs/v1beta1/integrationpipeline.yaml @@ -0,0 +1,12 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: IntegrationPipeline +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs long running Pipeline + meta.upbound.io/example-id: logs/v1beta1/integrationpipeline + labels: + testing.upbound.io/example-name: python + name: python +spec: + forProvider: + isEnabled: true diff --git a/examples/logs/v1beta1/metric.yaml b/examples/logs/v1beta1/metric.yaml new file mode 100644 index 0000000..b9b8184 --- /dev/null +++ b/examples/logs/v1beta1/metric.yaml @@ -0,0 +1,21 @@ +apiVersion: logs.datadog.upbound.io/v1beta1 +kind: Metric +metadata: + annotations: + meta.upbound.io/example-id: logs/v1beta1/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/v1beta1/pipelineorder.yaml similarity index 58% rename from examples/logs/v1alpha1/pipelineorder.yaml rename to examples/logs/v1beta1/pipelineorder.yaml index 0cc65e6..e72044f 100644 --- a/examples/logs/v1alpha1/pipelineorder.yaml +++ b/examples/logs/v1beta1/pipelineorder.yaml @@ -1,14 +1,14 @@ -apiVersion: logs.datadog.upbound.io/v1alpha1 +apiVersion: logs.datadog.upbound.io/v1beta1 kind: PipelineOrder metadata: annotations: - meta.upbound.io/example-id: logs/v1alpha1/pipelineorder + upjet.upbound.io/manual-intervention: This resource needs long running and hardcoded IDs of Pipelines + meta.upbound.io/example-id: logs/v1beta1/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/v1beta1/metadata.yaml similarity index 73% rename from examples/metric/v1alpha1/metadata.yaml rename to examples/metric/v1beta1/metadata.yaml index 3cbabb7..d350555 100644 --- a/examples/metric/v1alpha1/metadata.yaml +++ b/examples/metric/v1beta1/metadata.yaml @@ -1,8 +1,8 @@ -apiVersion: metric.datadog.upbound.io/v1alpha1 +apiVersion: metric.datadog.upbound.io/v1beta1 kind: Metadata metadata: annotations: - meta.upbound.io/example-id: metric/v1alpha1/metadata + meta.upbound.io/example-id: metric/v1beta1/metadata labels: testing.upbound.io/example-name: request_time name: request-time diff --git a/examples/datadog/v1alpha1/spansmetric.yaml b/examples/metric/v1beta1/spansmetric.yaml similarity index 69% rename from examples/datadog/v1alpha1/spansmetric.yaml rename to examples/metric/v1beta1/spansmetric.yaml index f88611e..6dae760 100644 --- a/examples/datadog/v1alpha1/spansmetric.yaml +++ b/examples/metric/v1beta1/spansmetric.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: metric.datadog.upbound.io/v1beta1 kind: SpansMetric metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/spansmetric + meta.upbound.io/example-id: metric/v1beta1/spansmetric labels: testing.upbound.io/example-name: testing_spans_metric name: testing-spans-metric @@ -15,6 +15,6 @@ spec: filter: query: "@http.status_code:200 service:my-service" groupBy: - - path: resource_name - tagName: resource_name + - path: resource_name + tagName: resource_name name: testing.span.metric diff --git a/examples/metric/v1alpha1/tagconfiguration.yaml b/examples/metric/v1beta1/tagconfiguration.yaml similarity index 59% rename from examples/metric/v1alpha1/tagconfiguration.yaml rename to examples/metric/v1beta1/tagconfiguration.yaml index 28d0fcd..33663b3 100644 --- a/examples/metric/v1alpha1/tagconfiguration.yaml +++ b/examples/metric/v1beta1/tagconfiguration.yaml @@ -1,16 +1,16 @@ -apiVersion: metric.datadog.upbound.io/v1alpha1 +apiVersion: metric.datadog.upbound.io/v1beta1 kind: TagConfiguration metadata: annotations: - meta.upbound.io/example-id: metric/v1alpha1/tagconfiguration + meta.upbound.io/example-id: metric/v1beta1/tagconfiguration labels: testing.upbound.io/example-name: example_dist_metric name: example-dist-metric spec: forProvider: - includePercentiles: false + #includePercentiles: false metricName: example.crossplane.dist.metric - metricType: distribution + metricType: count tags: - sport - datacenter diff --git a/examples-generated/datadog/v1alpha1/monitorconfigpolicy.yaml b/examples/monitor/v1beta1/configpolicy.yaml similarity index 59% rename from examples-generated/datadog/v1alpha1/monitorconfigpolicy.yaml rename to examples/monitor/v1beta1/configpolicy.yaml index 1639195..6b68486 100644 --- a/examples-generated/datadog/v1alpha1/monitorconfigpolicy.yaml +++ b/examples/monitor/v1beta1/configpolicy.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: MonitorConfigPolicy +apiVersion: monitor.datadog.upbound.io/v1beta1 +kind: ConfigPolicy metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/monitorconfigpolicy + meta.upbound.io/example-id: monitor/v1beta1/configpolicy labels: testing.upbound.io/example-name: test name: test @@ -10,7 +10,7 @@ spec: forProvider: policyType: tag tagPolicy: - - tagKey: env + tagKey: env tagKeyRequired: false validTagValues: - staging diff --git a/examples/monitor/v1beta1/downtime.yaml b/examples/monitor/v1beta1/downtime.yaml new file mode 100644 index 0000000..ba8a9a6 --- /dev/null +++ b/examples/monitor/v1beta1/downtime.yaml @@ -0,0 +1,18 @@ +apiVersion: monitor.datadog.upbound.io/v1beta1 +kind: Downtime +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1beta1/downtime + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + monitorId: 177177172 + recurrence: + period: 1 + type: days + scope: + - '*' + start: 1817631983 + end: 1820310383 diff --git a/examples/monitor/v1beta1/downtimeschedule.yaml b/examples/monitor/v1beta1/downtimeschedule.yaml new file mode 100644 index 0000000..113eb8a --- /dev/null +++ b/examples/monitor/v1beta1/downtimeschedule.yaml @@ -0,0 +1,78 @@ +apiVersion: monitor.datadog.upbound.io/v1beta1 +kind: DowntimeSchedule +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1beta1/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: + - foo:bar + - team:fooBar + muteFirstRecoveryNotification: true + notifyEndStates: + - alert + - warn + notifyEndTypes: + - canceled + - expired + scope: "*" + recurringSchedule: + recurrence: + - duration: "1h" + rrule: "FREQ=DAILY;INTERVAL=1" + start: "2050-01-02T03:04:05" + timezone: "America/New_York" + +--- + +apiVersion: monitor.datadog.upbound.io/v1beta1 +kind: Downtime +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1beta1/downtime + labels: + testing.upbound.io/example-name: downtime_schedule_example + name: foo +spec: + forProvider: + monitorIdSelector: + matchLabels: + testing.upbound.io/example-name: downtime_schedule_example + recurrence: + period: 1 + type: days + scope: + - '*' + start: 1817631983 + end: 1820310383 + +--- + +apiVersion: monitor.datadog.upbound.io/v1beta1 +kind: Monitor +metadata: + annotations: + meta.upbound.io/example-id: monitor/v1beta1/monitor + labels: + testing.upbound.io/example-name: downtime_schedule_example + 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/monitor.yaml b/examples/monitor/v1beta1/monitor.yaml similarity index 79% rename from examples/datadog/v1alpha1/monitor.yaml rename to examples/monitor/v1beta1/monitor.yaml index a29f3e5..4de8492 100644 --- a/examples/datadog/v1alpha1/monitor.yaml +++ b/examples/monitor/v1beta1/monitor.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: monitor.datadog.upbound.io/v1beta1 kind: Monitor metadata: annotations: - meta.upbound.io/example-id: monitor/v1alpha1/monitor + meta.upbound.io/example-id: monitor/v1beta1/monitor labels: testing.upbound.io/example-name: foo name: foo @@ -12,7 +12,7 @@ spec: includeTags: true message: 'Monitor triggered. Notify: @hipchat-channel' monitorThresholds: - - critical: "4" + critical: "4" warning: "2" name: Name for monitor foo query: avg(last_1h):avg:aws.ec2.cpu{environment:foo,host:foo} by {host} > 4 diff --git a/examples-generated/datadog/v1alpha1/monitorjson.yaml b/examples/monitor/v1beta1/monitorjson.yaml similarity index 75% rename from examples-generated/datadog/v1alpha1/monitorjson.yaml rename to examples/monitor/v1beta1/monitorjson.yaml index 014b002..e6f83b6 100644 --- a/examples-generated/datadog/v1alpha1/monitorjson.yaml +++ b/examples/monitor/v1beta1/monitorjson.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: monitor.datadog.upbound.io/v1beta1 kind: MonitorJSON metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/monitorjson + meta.upbound.io/example-id: monitor/v1beta1/monitorjson labels: testing.upbound.io/example-name: monitor_json name: monitor-json @@ -15,7 +15,7 @@ spec: 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\": + true,\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/notification/v1beta1/webhook.yaml b/examples/notification/v1beta1/webhook.yaml new file mode 100644 index 0000000..fe5bb7f --- /dev/null +++ b/examples/notification/v1beta1/webhook.yaml @@ -0,0 +1,22 @@ +apiVersion: notification.datadog.upbound.io/v1beta1 +kind: Webhook +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs a valid endpoint + meta.upbound.io/example-id: notification/v1beta1/webhook + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + customHeaders: | + { + "custom": "header" + } + encodeAs: json + name: test-webhook + payload: | + { + "custom": "payload" + } + url: example.com diff --git a/examples/notification/v1beta1/webhookcustomvariable.yaml b/examples/notification/v1beta1/webhookcustomvariable.yaml new file mode 100644 index 0000000..e39f771 --- /dev/null +++ b/examples/notification/v1beta1/webhookcustomvariable.yaml @@ -0,0 +1,17 @@ +apiVersion: notification.datadog.upbound.io/v1beta1 +kind: WebhookCustomVariable +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource depends on Webhook and it needs a valid endpoint + meta.upbound.io/example-id: notification/v1beta1/webhookcustomvariable + labels: + testing.upbound.io/example-name: foo + name: foo +spec: + forProvider: + isSecret: true + name: + valueSecretRef: + key: example-key + name: example-secret + namespace: upbound-system diff --git a/examples/organization/v1beta1/childorganization.yaml b/examples/organization/v1beta1/childorganization.yaml new file mode 100644 index 0000000..dcdae47 --- /dev/null +++ b/examples/organization/v1beta1/childorganization.yaml @@ -0,0 +1,12 @@ +apiVersion: organization.datadog.upbound.io/v1beta1 +kind: ChildOrganization +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs a Upgraded account + meta.upbound.io/example-id: organization/v1beta1/childorganization + labels: + testing.upbound.io/example-name: organization + name: organization +spec: + forProvider: + name: foo-organization diff --git a/examples/organization/v1beta1/settings.yaml b/examples/organization/v1beta1/settings.yaml new file mode 100644 index 0000000..ea3ecaa --- /dev/null +++ b/examples/organization/v1beta1/settings.yaml @@ -0,0 +1,11 @@ +apiVersion: organization.datadog.upbound.io/v1beta1 +kind: Settings +metadata: + annotations: + meta.upbound.io/example-id: organization/v1beta1/settings + labels: + testing.upbound.io/example-name: organization + name: organization +spec: + forProvider: + name: foo-organization diff --git a/examples/providerconfig/secret.yaml.tmpl b/examples/providerconfig/secret.yaml.tmpl index 77e1220..00154ca 100644 --- a/examples/providerconfig/secret.yaml.tmpl +++ b/examples/providerconfig/secret.yaml.tmpl @@ -2,12 +2,12 @@ apiVersion: v1 kind: Secret metadata: name: datadog-creds - namespace: upbounbd-system + namespace: upbound-system type: Opaque stringData: credentials: | { - "api_key": "admin", - "app_key": "appkey", + "api_key": "", + "app_key": "", "api_url": "https://api.datadoghq.com/" } diff --git a/examples/datadog/v1alpha1/rumapplication.yaml b/examples/rum/v1beta1/application.yaml similarity index 58% rename from examples/datadog/v1alpha1/rumapplication.yaml rename to examples/rum/v1beta1/application.yaml index 1beb8eb..9919eca 100644 --- a/examples/datadog/v1alpha1/rumapplication.yaml +++ b/examples/rum/v1beta1/application.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: RUMApplication +apiVersion: rum.datadog.upbound.io/v1beta1 +kind: Application metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/rumapplication + meta.upbound.io/example-id: rum/v1beta1/application labels: testing.upbound.io/example-name: rum_application name: rum-application diff --git a/examples/security/v1beta1/ipallowlist.yaml b/examples/security/v1beta1/ipallowlist.yaml new file mode 100644 index 0000000..785818a --- /dev/null +++ b/examples/security/v1beta1/ipallowlist.yaml @@ -0,0 +1,17 @@ +apiVersion: security.datadog.upbound.io/v1beta1 +kind: IPAllowList +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs public dashboards + meta.upbound.io/example-id: security/v1beta1/ipallowlist + labels: + testing.upbound.io/example-name: example + name: example +spec: + forProvider: + enabled: false + entry: + - cidrBlock: 127.0.0.0/32 + note: 1st Example IP Range + - cidrBlock: 192.0.2.0/24 + note: 2nd Example IP Range diff --git a/examples/securitymonitoring/v1alpha1/defaultrule.yaml b/examples/securitymonitoring/v1beta1/defaultrule.yaml similarity index 52% rename from examples/securitymonitoring/v1alpha1/defaultrule.yaml rename to examples/securitymonitoring/v1beta1/defaultrule.yaml index b02a4c3..ceb1078 100644 --- a/examples/securitymonitoring/v1alpha1/defaultrule.yaml +++ b/examples/securitymonitoring/v1beta1/defaultrule.yaml @@ -1,8 +1,9 @@ -apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +apiVersion: securitymonitoring.datadog.upbound.io/v1beta1 kind: DefaultRule metadata: annotations: - meta.upbound.io/example-id: securitymonitoring/v1alpha1/defaultrule + upjet.upbound.io/manual-intervention: This resource needs importing rule + meta.upbound.io/example-id: securitymonitoring/v1beta1/defaultrule labels: testing.upbound.io/example-name: adefaultrule name: adefaultrule diff --git a/examples-generated/securitymonitoring/v1alpha1/filter.yaml b/examples/securitymonitoring/v1beta1/filter.yaml similarity index 72% rename from examples-generated/securitymonitoring/v1alpha1/filter.yaml rename to examples/securitymonitoring/v1beta1/filter.yaml index 0115ea6..3405902 100644 --- a/examples-generated/securitymonitoring/v1alpha1/filter.yaml +++ b/examples/securitymonitoring/v1beta1/filter.yaml @@ -1,8 +1,8 @@ -apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +apiVersion: securitymonitoring.datadog.upbound.io/v1beta1 kind: Filter metadata: annotations: - meta.upbound.io/example-id: securitymonitoring/v1alpha1/filter + meta.upbound.io/example-id: securitymonitoring/v1beta1/filter labels: testing.upbound.io/example-name: my_filter name: my-filter diff --git a/examples/securitymonitoring/v1alpha1/rule.yaml b/examples/securitymonitoring/v1beta1/rule.yaml similarity index 67% rename from examples/securitymonitoring/v1alpha1/rule.yaml rename to examples/securitymonitoring/v1beta1/rule.yaml index cb97228..01a5a92 100644 --- a/examples/securitymonitoring/v1alpha1/rule.yaml +++ b/examples/securitymonitoring/v1beta1/rule.yaml @@ -1,11 +1,12 @@ -apiVersion: securitymonitoring.datadog.upbound.io/v1alpha1 +apiVersion: securitymonitoring.datadog.upbound.io/v1beta1 kind: Rule metadata: annotations: - meta.upbound.io/example-id: securitymonitoring/v1alpha1/rule + upjet.upbound.io/manual-intervention: This resource needs monitoring application integration + meta.upbound.io/example-id: securitymonitoring/v1beta1/rule labels: testing.upbound.io/example-name: myrule - name: myrule + name: uptest-rule spec: forProvider: case: @@ -15,9 +16,9 @@ spec: status: high enabled: true message: The rule has triggered. - name: My rule + name: uptest-rule options: - - evaluationWindow: 300 + evaluationWindow: 300 keepAlive: 600 maxSignalDuration: 900 query: diff --git a/examples/sensitivedatascanner/v1alpha1/group.yaml b/examples/sensitivedata/v1beta1/scannergroup.yaml similarity index 56% rename from examples/sensitivedatascanner/v1alpha1/group.yaml rename to examples/sensitivedata/v1beta1/scannergroup.yaml index 82ff937..6141787 100644 --- a/examples/sensitivedatascanner/v1alpha1/group.yaml +++ b/examples/sensitivedata/v1beta1/scannergroup.yaml @@ -1,8 +1,8 @@ -apiVersion: sensitivedatascanner.datadog.upbound.io/v1alpha1 -kind: Group +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerGroup metadata: annotations: - meta.upbound.io/example-id: sensitivedatascanner/v1alpha1/group + meta.upbound.io/example-id: sensitivedata/v1beta1/scannergroup labels: testing.upbound.io/example-name: mygroup name: mygroup @@ -10,8 +10,8 @@ spec: forProvider: description: A relevant description filter: - - query: service:my-service + query: service:my-service isEnabled: true name: My new scanning group productList: - - apm + - apm diff --git a/examples/sensitivedata/v1beta1/scannergrouporder.yaml b/examples/sensitivedata/v1beta1/scannergrouporder.yaml new file mode 100644 index 0000000..75aa57c --- /dev/null +++ b/examples/sensitivedata/v1beta1/scannergrouporder.yaml @@ -0,0 +1,15 @@ +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerGroupOrder +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs long running and hardcoded IDs of Groups + meta.upbound.io/example-id: sensitivedata/v1beta1/scannergrouporder + labels: + testing.upbound.io/example-name: scanner + name: mygrouporder +spec: + forProvider: + groupIds: + - group-id-1 + - group-id-2 + - group-id-3 diff --git a/examples/sensitivedata/v1beta1/scannerrule.yaml b/examples/sensitivedata/v1beta1/scannerrule.yaml new file mode 100644 index 0000000..2a312cc --- /dev/null +++ b/examples/sensitivedata/v1beta1/scannerrule.yaml @@ -0,0 +1,52 @@ +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerRule +metadata: + annotations: + upjet.upbound.io/manual-intervention: This resource needs ordered deletion + meta.upbound.io/example-id: sensitivedata/v1beta1/scannerrule + labels: + testing.upbound.io/example-name: myrule + name: myrule +spec: + forProvider: + description: Another description + excludedNamespaces: + - username + groupIdSelector: + matchLabels: + testing.upbound.io/example-name: myrule + includedKeywordConfiguration: + characterCount: 30 + keywords: + - cc + - credit card + isEnabled: true + name: My new rule + pattern: myregex + priority: 1 + tags: + - sensitive_data:true + textReplacement: + numberOfChars: 0 + replacementString: "" + type: hash + +--- + +apiVersion: sensitivedata.datadog.upbound.io/v1beta1 +kind: ScannerGroup +metadata: + annotations: + meta.upbound.io/example-id: sensitivedata/v1beta1/scannerrule + labels: + testing.upbound.io/example-name: myrule + name: myrulegroup +spec: + forProvider: + description: A relevant description + filter: + query: service:my-service + isEnabled: true + name: myrulegroup + productList: + - apm diff --git a/examples/sensitivedatascanner/v1alpha1/grouporder.yaml b/examples/sensitivedatascanner/v1alpha1/grouporder.yaml deleted file mode 100644 index 14e9a29..0000000 --- a/examples/sensitivedatascanner/v1alpha1/grouporder.yaml +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index 9f4a3c8..0000000 --- a/examples/sensitivedatascanner/v1alpha1/rule.yaml +++ /dev/null @@ -1,28 +0,0 @@ -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-generated/datadog/v1alpha1/servicedefinitionyaml.yaml b/examples/service/v1beta1/definitionyaml.yaml similarity index 91% rename from examples-generated/datadog/v1alpha1/servicedefinitionyaml.yaml rename to examples/service/v1beta1/definitionyaml.yaml index d3bda82..d337247 100644 --- a/examples-generated/datadog/v1alpha1/servicedefinitionyaml.yaml +++ b/examples/service/v1beta1/definitionyaml.yaml @@ -1,8 +1,8 @@ -apiVersion: datadog.upbound.io/v1alpha1 -kind: ServiceDefinitionYAML +apiVersion: service.datadog.upbound.io/v1beta1 +kind: DefinitionYaml metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/servicedefinitionyaml + meta.upbound.io/example-id: service/v1beta1/definitionyaml labels: testing.upbound.io/example-name: service_definition_v2_2 name: service-definition-v2-2 diff --git a/examples/slo/v1beta1/correction.yaml b/examples/slo/v1beta1/correction.yaml new file mode 100644 index 0000000..2a8bd22 --- /dev/null +++ b/examples/slo/v1beta1/correction.yaml @@ -0,0 +1,50 @@ +apiVersion: slo.datadog.upbound.io/v1beta1 +kind: Correction +metadata: + annotations: + meta.upbound.io/example-id: slo/v1beta1/correction + labels: + testing.upbound.io/example-name: example_slo_correction + name: example-slo-correction +spec: + forProvider: + category: Scheduled Maintenance + description: correction example + sloIdSelector: + matchLabels: + testing.upbound.io/example-name: correction + start: 1817631983 + end: 1820310383 + timezone: UTC + +--- + +apiVersion: slo.datadog.upbound.io/v1beta1 +kind: ServiceLevelObjective +metadata: + annotations: + meta.upbound.io/example-id: slo/v1beta1/servicelevelobjective + labels: + testing.upbound.io/example-name: correction + name: correction +spec: + forProvider: + description: My custom metric SLO + name: correction + 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/servicelevelobjective.yaml b/examples/slo/v1beta1/servicelevelobjective.yaml similarity index 59% rename from examples/datadog/v1alpha1/servicelevelobjective.yaml rename to examples/slo/v1beta1/servicelevelobjective.yaml index b375807..2a92c07 100644 --- a/examples/datadog/v1alpha1/servicelevelobjective.yaml +++ b/examples/slo/v1beta1/servicelevelobjective.yaml @@ -1,17 +1,17 @@ -apiVersion: datadog.upbound.io/v1alpha1 +apiVersion: slo.datadog.upbound.io/v1beta1 kind: ServiceLevelObjective metadata: annotations: - meta.upbound.io/example-id: datadog/v1alpha1/servicelevelobjective + meta.upbound.io/example-id: slo/v1beta1/servicelevelobjective labels: - testing.upbound.io/example-name: slo-foo - name: slo-foo + testing.upbound.io/example-name: foo + name: foo spec: forProvider: - name: slo-foo - description: UXP created custom metric SLO + description: My custom metric SLO + name: Example Metric SLO query: - - denominator: sum:my.custom.count.metric{*}.as_count() + denominator: sum:my.custom.count.metric{*}.as_count() numerator: sum:my.custom.count.metric{type:good_events}.as_count() tags: - foo:bar diff --git a/examples/synthetics/v1alpha1/concurrencycap.yaml b/examples/synthetics/v1beta1/concurrencycap.yaml similarity index 57% rename from examples/synthetics/v1alpha1/concurrencycap.yaml rename to examples/synthetics/v1beta1/concurrencycap.yaml index c554aeb..bded243 100644 --- a/examples/synthetics/v1alpha1/concurrencycap.yaml +++ b/examples/synthetics/v1beta1/concurrencycap.yaml @@ -1,8 +1,8 @@ -apiVersion: synthetics.datadog.upbound.io/v1alpha1 +apiVersion: synthetics.datadog.upbound.io/v1beta1 kind: ConcurrencyCap metadata: annotations: - meta.upbound.io/example-id: synthetics/v1alpha1/concurrencycap + meta.upbound.io/example-id: synthetics/v1beta1/concurrencycap labels: testing.upbound.io/example-name: this name: this diff --git a/examples/synthetics/v1beta1/globalvariable.yaml b/examples/synthetics/v1beta1/globalvariable.yaml new file mode 100644 index 0000000..cc404a7 --- /dev/null +++ b/examples/synthetics/v1beta1/globalvariable.yaml @@ -0,0 +1,33 @@ +apiVersion: synthetics.datadog.upbound.io/v1beta1 +kind: GlobalVariable +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1beta1/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-gb + name: example-gb + namespace: upbound-system + +--- + +apiVersion: v1 +data: + secret: c2VjcmV0dmFsCg== +kind: Secret +metadata: + annotations: + meta.upbound.io/example-id: compute/v1beta1/externalvpngateway + labels: + testing.upbound.io/example-name: example-gb + name: example-gb + namespace: upbound-system diff --git a/examples/synthetics/v1alpha1/privatelocation.yaml b/examples/synthetics/v1beta1/privatelocation.yaml similarity index 70% rename from examples/synthetics/v1alpha1/privatelocation.yaml rename to examples/synthetics/v1beta1/privatelocation.yaml index 7e28d56..61f7ced 100644 --- a/examples/synthetics/v1alpha1/privatelocation.yaml +++ b/examples/synthetics/v1beta1/privatelocation.yaml @@ -1,8 +1,8 @@ -apiVersion: synthetics.datadog.upbound.io/v1alpha1 +apiVersion: synthetics.datadog.upbound.io/v1beta1 kind: PrivateLocation metadata: annotations: - meta.upbound.io/example-id: synthetics/v1alpha1/privatelocation + meta.upbound.io/example-id: synthetics/v1beta1/privatelocation labels: testing.upbound.io/example-name: private_location name: private-location diff --git a/examples/synthetics/v1beta1/test.yaml b/examples/synthetics/v1beta1/test.yaml new file mode 100644 index 0000000..7d9f2cb --- /dev/null +++ b/examples/synthetics/v1beta1/test.yaml @@ -0,0 +1,37 @@ +apiVersion: synthetics.datadog.upbound.io/v1beta1 +kind: Test +metadata: + annotations: + meta.upbound.io/example-id: synthetics/v1beta1/test + labels: + testing.upbound.io/example-name: test_uptime + name: test-uptime +spec: + forProvider: + assertion: + - operator: is + target: "200" + type: statusCode + locations: + - aws:eu-central-1 + message: Notify @pagerduty + name: An Uptime test on example.org + optionsList: + monitorOptions: + renotifyInterval: 120 + retry: + count: 2 + interval: 300 + tickEvery: 900 + requestDefinition: + method: GET + url: https://www.example.org + requestHeaders: + Content-Type: application/json + status: live + subtype: http + tags: + - foo:bar + - foo + - env:test + type: api diff --git a/go.mod b/go.mod index 9b63080..fab3107 100644 --- a/go.mod +++ b/go.mod @@ -1,74 +1,89 @@ module github.com/upbound/provider-datadog -go 1.21 +go 1.23.10 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 v1.2.0 - github.com/google/uuid v1.3.0 - github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 + dario.cat/mergo v1.0.1 + github.com/DataDog/terraform-provider-datadog/v3 v3.66.0 + github.com/crossplane/crossplane-runtime v1.20.0-rc.0.0.20250509113121-26da25aff65f + github.com/crossplane/crossplane-tools v0.0.0-20240522174801-1ad3d4c87f21 + github.com/crossplane/upjet v1.9.1-0.20250618135531-c4332e6ed194 + github.com/google/uuid v1.6.0 + github.com/hashicorp/terraform-json v0.25.0 + github.com/hashicorp/terraform-plugin-framework v1.15.0 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 github.com/pkg/errors v0.9.1 gopkg.in/alecthomas/kingpin.v2 v2.2.6 - k8s.io/apimachinery v0.28.2 - k8s.io/client-go v0.28.2 - sigs.k8s.io/controller-runtime v0.16.2 - sigs.k8s.io/controller-tools v0.13.0 + k8s.io/apimachinery v0.32.3 + k8s.io/client-go v0.32.3 + sigs.k8s.io/controller-runtime v0.19.0 + sigs.k8s.io/controller-tools v0.16.5 ) +replace github.com/DataDog/terraform-provider-datadog/v3 => github.com/upbound/terraform-provider-datadog/v3 v3.0.0-20250702102807-256728703101 + require ( + github.com/DataDog/datadog-api-client-go/v2 v2.41.1-0.20250625122828-7d842183d973 // indirect + github.com/DataDog/zstd v1.5.7 // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/agext/levenshtein v1.2.3 // indirect + github.com/alecthomas/kingpin/v2 v2.4.0 // indirect github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect - github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect + github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/antchfx/htmlquery v1.2.4 // indirect github.com/antchfx/xpath v1.2.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 - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.10.2 // indirect - github.com/evanphx/json-patch/v5 v5.6.0 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/cenkalti/backoff v2.2.1+incompatible // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/dave/jennifer v1.7.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/emicklei/go-restful/v3 v3.12.1 // indirect + github.com/evanphx/json-patch v5.9.11+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.9.0 // indirect github.com/fatih/camelcase v1.0.0 // indirect - github.com/fatih/color v1.15.0 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-logr/zapr v1.2.4 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.3 // indirect - github.com/gobuffalo/flect v1.0.2 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/zapr v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/gobuffalo/flect v1.0.3 // indirect + github.com/goccy/go-json v0.10.5 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect - github.com/hashicorp/go-plugin v1.5.1 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-cty v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-plugin v1.6.3 // 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.19.1 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/hcl/v2 v2.23.0 // indirect github.com/hashicorp/logutils v1.0.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-framework-jsontypes v0.2.0 // indirect + github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 // indirect + github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.28.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-registry-address v0.2.5 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect - github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect + github.com/hashicorp/yamux v0.1.2 // 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 github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-ps v1.0.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect @@ -79,47 +94,55 @@ 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 - github.com/prometheus/procfs v0.10.1 // indirect - github.com/spf13/afero v1.10.0 // indirect - github.com/spf13/cobra v1.7.0 // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/prometheus/client_golang v1.20.2 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cobra v1.8.1 // indirect 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/v5 v5.3.5 // indirect + github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + github.com/x448/float16 v0.8.4 // indirect + github.com/xhit/go-str2duration/v2 v2.1.0 // indirect github.com/yuin/goldmark v1.4.13 // indirect - github.com/zclconf/go-cty v1.14.1 // indirect + github.com/zclconf/go-cty v1.16.3 // indirect github.com/zclconf/go-cty-yaml v1.0.3 // indirect + github.com/zorkian/go-datadog-api v2.30.0+incompatible // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // 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.13.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/oauth2 v0.10.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 + go.uber.org/zap v1.27.0 // indirect + golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sync v0.14.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/term v0.32.0 // indirect + golang.org/x/text v0.25.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.33.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/grpc v1.58.3 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/grpc v1.72.2 // indirect + google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.28.2 // indirect - k8s.io/apiextensions-apiserver v0.28.2 // indirect - k8s.io/component-base v0.28.2 // indirect - k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect - k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + k8s.io/api v0.32.3 // indirect + k8s.io/apiextensions-apiserver v0.32.3 // indirect + k8s.io/component-base v0.32.3 // indirect + k8s.io/klog/v2 v2.130.1 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect + sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/go.sum b/go.sum index d173e7d..9a1d785 100644 --- a/go.sum +++ b/go.sum @@ -1,53 +1,21 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/DataDog/datadog-api-client-go/v2 v2.41.1-0.20250625122828-7d842183d973 h1:Eb53EFWbLRG2Dtz7UtF6T3eVQU8+SukbcejMSW/0ujA= +github.com/DataDog/datadog-api-client-go/v2 v2.41.1-0.20250625122828-7d842183d973/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= +github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= +github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/kong v0.2.16/go.mod h1:kQOmtJgV+Lb4aj+I2LEn40cbtawdWJ9Y8QLq+lElKxE= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= +github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs= github.com/antchfx/htmlquery v1.2.4 h1:qLteofCMe/KGovBI6SQgmou2QNyedFUW+pE+BpeZ494= github.com/antchfx/htmlquery v1.2.4/go.mod h1:2xO6iu3EVWs7R2JYqBbp8YzG50gj/ofqs5/0VZoDZLc= github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8= @@ -58,204 +26,149 @@ github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJE 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= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/crossplane/crossplane-runtime v1.14.0-rc.0.0.20231011070344-cc691421c2e5 h1:K1Km6NCu9+VlZB3CmWSjrs09cDSbwQxJd2Qw2002dFs= -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 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/crossplane/crossplane-runtime v1.20.0-rc.0.0.20250509113121-26da25aff65f h1:XjO3ZL0rmhslau32GNoGudZkzALRmW14XG+3KNOoTTU= +github.com/crossplane/crossplane-runtime v1.20.0-rc.0.0.20250509113121-26da25aff65f/go.mod h1:FV2OSyPkmGJgRPUPAWkaAmJaG/Si8oOKHzLwl/ozIF0= +github.com/crossplane/crossplane-tools v0.0.0-20240522174801-1ad3d4c87f21 h1:8wb7/zCbVPkeX68WbVESWJmSWQE5SZKzz0g9X4FlXRw= +github.com/crossplane/crossplane-tools v0.0.0-20240522174801-1ad3d4c87f21/go.mod h1:cN0Y7PFGQMM8mcagXVCbeQoKtipmFWQTPZYyziCPBUI= +github.com/crossplane/upjet v1.9.1-0.20250618135531-c4332e6ed194 h1:brR10wYT/6r7rDWGm6ozuAWU9Mh9AuK5dOf4ZeppPpE= +github.com/crossplane/upjet v1.9.1-0.20250618135531-c4332e6ed194/go.mod h1:VhqkQRrvGuHOCacpcIWjZ+t0jUOpt5NL6RtbY0TSURo= +github.com/dave/jennifer v1.7.0 h1:uRbSBH9UTS64yXbh4FrMHfgfY762RD+C7bUPKODpSJE= +github.com/dave/jennifer v1.7.0/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= -github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= +github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= +github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= +github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -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/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= 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= -github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= -github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= +github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4= +github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU= +github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -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= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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/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.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/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-cty v1.5.0 h1:EkQ/v+dDNUqnuVpmS5fPqyY71NXVgT5gf32+57xY8g0= +github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= 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.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/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hcl/v2 v2.9.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= -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/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= +github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= 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.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-json v0.25.0 h1:rmNqc/CIfcWawGiwXmRuiXJKEiJu1ntGoxseG1hLhoQ= +github.com/hashicorp/terraform-json v0.25.0/go.mod h1:sMKS8fiRDX4rVlR6EJUMudg1WcanxCMoWwTLkgZP/vc= +github.com/hashicorp/terraform-plugin-framework v1.15.0 h1:LQ2rsOfmDLxcn5EeIwdXFtr03FVsNktbbBci8cOKdb4= +github.com/hashicorp/terraform-plugin-framework v1.15.0/go.mod h1:hxrNI/GY32KPISpWqlCoTLM9JZsGH3CyYlir09bD/fI= +github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0 h1:SJXL5FfJJm17554Kpt9jFXngdM6fXbnUnZ6iT2IeiYA= +github.com/hashicorp/terraform-plugin-framework-jsontypes v0.2.0/go.mod h1:p0phD0IYhsu9bR4+6OetVvvH59I6LwjXGnTVEr8ox6E= +github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0 h1:v3DapR8gsp3EM8fKMh6up9cJUFQ2iRaFsYLP8UJnCco= +github.com/hashicorp/terraform-plugin-framework-timetypes v0.5.0/go.mod h1:c3PnGE9pHBDfdEVG9t1S1C9ia5LW+gkFR0CygXlM8ak= +github.com/hashicorp/terraform-plugin-framework-validators v0.18.0 h1:OQnlOt98ua//rCw+QhBbSqfW3QbwtVrcdWeQN5gI3Hw= +github.com/hashicorp/terraform-plugin-framework-validators v0.18.0/go.mod h1:lZvZvagw5hsJwuY7mAY6KUz45/U6fiDR0CzQAwWD0CA= +github.com/hashicorp/terraform-plugin-go v0.28.0 h1:zJmu2UDwhVN0J+J20RE5huiF3XXlTYVIleaevHZgKPA= +github.com/hashicorp/terraform-plugin-go v0.28.0/go.mod h1:FDa2Bb3uumkTGSkTFpWSOwWJDwA7bf3vdP3ltLDTH6o= 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-plugin-sdk/v2 v2.37.0 h1:NFPMacTrY/IdcIcnUB+7hsore1ZaRWU9cnB6jFoBnIM= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0/go.mod h1:QYmYnLfsosrxjCnGY1p9c7Zj6n9thnEE+7RObeYs3fA= +github.com/hashicorp/terraform-registry-address v0.2.5 h1:2GTftHqmUhVOeuu9CW3kwDkRe4pcBDq0uuK5VJngU1M= +github.com/hashicorp/terraform-registry-address v0.2.5/go.mod h1:PpzXWINwB5kuVS5CA7m1+eO2f1jKb5ZDIxrOPfpnGkg= 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/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= 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= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= 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= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= 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= @@ -271,15 +184,12 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= @@ -304,71 +214,71 @@ github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7 h1:CxRHKnh1YJXgNK github.com/muvaf/typewriter v0.0.0-20220131201631-921e94e8e8d7/go.mod h1:SAAdeMEiFXR8LcHffvIdiLI1w243DCH2DuHq7UrA5YQ= 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/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= 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/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= 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= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= +github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -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= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 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/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tmccombs/hcl2json v0.3.3 h1:+DLNYqpWE0CsOQiEZu+OZm5ZBImake3wtITYxQ8uLFQ= github.com/tmccombs/hcl2json v0.3.3/go.mod h1:Y2chtz2x9bAeRTvSibVRVgbLJhLJXKlUeIvjeVdnm4w= +github.com/upbound/terraform-provider-datadog/v3 v3.0.0-20250702102807-256728703101 h1:qpewKJ35Ze/jPaBudzNTKzRm6OHSJqco+BKvIXDdgPA= +github.com/upbound/terraform-provider-datadog/v3 v3.0.0-20250702102807-256728703101/go.mod h1:GxRnEa6qUvXfqNYEuyTwyRP7tCcV3XY6uMtZQQAERyw= 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/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -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/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8= +github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= 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/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= +github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= @@ -376,406 +286,174 @@ 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.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= -github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= +github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM= 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= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -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= +github.com/zorkian/go-datadog-api v2.30.0+incompatible h1:R4ryGocppDqZZbnNc5EDR8xGWF/z/MxzWnqTUijDQes= +github.com/zorkian/go-datadog-api v2.30.0+incompatible/go.mod h1:PkXwHX9CUQa/FpB9ZwAD45N1uhCW4MT/Wj7m36PbKss= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI= +golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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.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/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= 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= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 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.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= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= 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= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -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/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= 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= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -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.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= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= -google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= +gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= 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/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.28.2 h1:9mpl5mOb6vXZvqbQmankOfPIGiudghwCoLl1EYfUZbw= -k8s.io/api v0.28.2/go.mod h1:RVnJBsjU8tcMq7C3iaRSGMeaKt2TWEUXcpIt/90fjEg= -k8s.io/apiextensions-apiserver v0.28.2 h1:J6/QRWIKV2/HwBhHRVITMLYoypCoPY1ftigDM0Kn+QU= -k8s.io/apiextensions-apiserver v0.28.2/go.mod h1:5tnkxLGa9nefefYzWuAlWZ7RZYuN/765Au8cWLA6SRg= -k8s.io/apimachinery v0.28.2 h1:KCOJLrc6gu+wV1BYgwik4AF4vXOlVJPdiqn0yAWWwXQ= -k8s.io/apimachinery v0.28.2/go.mod h1:RdzF87y/ngqk9H4z3EL2Rppv5jj95vGS/HaFXrLDApU= -k8s.io/client-go v0.28.2 h1:DNoYI1vGq0slMBN/SWKMZMw0Rq+0EQW6/AK4v9+3VeY= -k8s.io/client-go v0.28.2/go.mod h1:sMkApowspLuc7omj1FOSUxSoqjr+d5Q0Yc0LOFnYFJY= -k8s.io/component-base v0.28.2 h1:Yc1yU+6AQSlpJZyvehm/NkJBII72rzlEsd6MkBQ+G0E= -k8s.io/component-base v0.28.2/go.mod h1:4IuQPQviQCg3du4si8GpMrhAIegxpsgPngPRR/zWpzc= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= -k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.16.2 h1:mwXAVuEk3EQf478PQwQ48zGOXvW27UJc8NHktQVuIPU= -sigs.k8s.io/controller-runtime v0.16.2/go.mod h1:vpMu3LpI5sYWtujJOa2uPK61nB5rbwlN7BAB8aSLvGU= -sigs.k8s.io/controller-tools v0.13.0 h1:NfrvuZ4bxyolhDBt/rCZhDnx3M2hzlhgo5n3Iv2RykI= -sigs.k8s.io/controller-tools v0.13.0/go.mod h1:5vw3En2NazbejQGCeWKRrE7q4P+CW8/klfVqP8QZkgA= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +k8s.io/api v0.32.3 h1:Hw7KqxRusq+6QSplE3NYG4MBxZw1BZnq4aP4cJVINls= +k8s.io/api v0.32.3/go.mod h1:2wEDTXADtm/HA7CCMD8D8bK4yuBUptzaRhYcYEEYA3k= +k8s.io/apiextensions-apiserver v0.32.3 h1:4D8vy+9GWerlErCwVIbcQjsWunF9SUGNu7O7hiQTyPY= +k8s.io/apiextensions-apiserver v0.32.3/go.mod h1:8YwcvVRMVzw0r1Stc7XfGAzB/SIVLunqApySV5V7Dss= +k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= +k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/client-go v0.32.3 h1:RKPVltzopkSgHS7aS98QdscAgtgah/+zmpAogooIqVU= +k8s.io/client-go v0.32.3/go.mod h1:3v0+3k4IcT9bXTc4V2rt+d2ZPPG700Xy6Oi0Gdl2PaY= +k8s.io/component-base v0.32.3 h1:98WJvvMs3QZ2LYHBzvltFSeJjEx7t5+8s71P7M74u8k= +k8s.io/component-base v0.32.3/go.mod h1:LWi9cR+yPAv7cu2X9rZanTiFKB2kHA+JjmhkKjCZRpI= +k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= +k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e h1:KqK5c/ghOm8xkHYhlodbp6i6+r+ChV2vuAuVRdFbLro= +k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= +sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= +sigs.k8s.io/controller-tools v0.16.5 h1:5k9FNRqziBPwqr17AMEPPV/En39ZBplLAdOwwQHruP4= +sigs.k8s.io/controller-tools v0.16.5/go.mod h1:8vztuRVzs8IuuJqKqbXCSlXcw+lkAv/M2sTpg55qjMY= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= +sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016 h1:kXv6kKdoEtedwuqMmkqhbkgvYKeycVbC8+iPCP9j5kQ= +sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= +sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= +sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/internal/clients/datadog.go b/internal/clients/datadog.go index bdf1174..dbac88c 100644 --- a/internal/clients/datadog.go +++ b/internal/clients/datadog.go @@ -10,10 +10,14 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/resource" "github.com/crossplane/upjet/pkg/terraform" + "github.com/hashicorp/terraform-plugin-framework/provider" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + tfsdk "github.com/hashicorp/terraform-plugin-sdk/v2/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/upbound/provider-datadog/apis/v1beta1" ) const ( @@ -41,15 +45,9 @@ const ( // TerraformSetupBuilder builds Terraform a terraform.SetupFn function which // returns Terraform provider setup configuration -func TerraformSetupBuilder(version, providerSource, providerVersion string) terraform.SetupFn { +func TerraformSetupBuilder(sdkProvider *schema.Provider, fwProvider provider.Provider) terraform.SetupFn { //nolint:gocyclo // easier to follow as a unit return func(ctx context.Context, client client.Client, mg resource.Managed) (terraform.Setup, error) { - ps := terraform.Setup{ - Version: version, - Requirement: terraform.ProviderRequirement{ - Source: providerSource, - Version: providerVersion, - }, - } + ps := terraform.Setup{} configRef := mg.GetProviderConfigReference() if configRef == nil { @@ -103,6 +101,24 @@ func TerraformSetupBuilder(version, providerSource, providerVersion string) terr if v, ok := creds[keyValidate]; ok { ps.Configuration[keyValidate] = v } - return ps, nil + return ps, errors.Wrap(configureNoForkOCIClient(ctx, &ps, sdkProvider, fwProvider), "failed to configure the Terraform datadog provider meta") + } +} + +func configureNoForkOCIClient(ctx context.Context, ps *terraform.Setup, sdkProvier *schema.Provider, fwProvider provider.Provider) error { + // Please be aware that this implementation relies on the schema.Provider + // parameter `p` being a non-pointer. This is because normally + // the Terraform plugin SDK normally configures the provider + // only once and using a pointer argument here will cause + // race conditions between resources referring to different + // ProviderConfigs. + diag := sdkProvier.Configure(context.WithoutCancel(ctx), &tfsdk.ResourceConfig{ + Config: ps.Configuration, + }) + if diag != nil && diag.HasError() { + return errors.Errorf("failed to configure the provider: %v", diag) } + ps.Meta = sdkProvier.Meta() + ps.FrameworkProvider = fwProvider + return nil } diff --git a/internal/controller/access/apikey/zz_controller.go b/internal/controller/access/apikey/zz_controller.go new file mode 100755 index 0000000..3bdcc54 --- /dev/null +++ b/internal/controller/access/apikey/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/access/v1beta1" + 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(v1beta1.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", v1beta1.APIKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.APIKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_api_key"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.APIKey_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.APIKey + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.APIKey{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.APIKey") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.APIKeyList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.APIKeyList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.APIKey_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.APIKey{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/access/applicationkey/zz_controller.go b/internal/controller/access/applicationkey/zz_controller.go new file mode 100755 index 0000000..4b3407d --- /dev/null +++ b/internal/controller/access/applicationkey/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package applicationkey + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/access/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ApplicationKey managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.ApplicationKey_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", v1beta1.ApplicationKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ApplicationKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_application_key"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ApplicationKey_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ApplicationKey + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ApplicationKey{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ApplicationKey") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ApplicationKeyList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ApplicationKeyList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ApplicationKey_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ApplicationKey{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/apm/retentionfilter/zz_controller.go b/internal/controller/apm/retentionfilter/zz_controller.go index 8c5e192..80e430e 100755 --- a/internal/controller/apm/retentionfilter/zz_controller.go +++ b/internal/controller/apm/retentionfilter/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/apm/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/apm/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.RetentionFilter_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.RetentionFilter_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_apm_retention_filter"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.RetentionFilter_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.RetentionFilter + // register webhooks for the kind v1beta1.RetentionFilter // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.RetentionFilter{}). + For(&v1beta1.RetentionFilter{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.RetentionFilter") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.RetentionFilter") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RetentionFilter_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.RetentionFilterList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.RetentionFilterList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.RetentionFilter_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.RetentionFilter{}, eventHandler). + Watches(&v1beta1.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 index 78bc48f..c515eca 100755 --- a/internal/controller/apm/retentionfilterorder/zz_controller.go +++ b/internal/controller/apm/retentionfilterorder/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/apm/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/apm/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.RetentionFilterOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.RetentionFilterOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_apm_retention_filter_order"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.RetentionFilterOrder_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.RetentionFilterOrder + // register webhooks for the kind v1beta1.RetentionFilterOrder // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.RetentionFilterOrder{}). + For(&v1beta1.RetentionFilterOrder{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.RetentionFilterOrder") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.RetentionFilterOrder") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.RetentionFilterOrder_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.RetentionFilterOrderList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.RetentionFilterOrderList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.RetentionFilterOrder_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.RetentionFilterOrder{}, eventHandler). + Watches(&v1beta1.RetentionFilterOrder{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/authentication/authnmapping/zz_controller.go b/internal/controller/authentication/authnmapping/zz_controller.go new file mode 100755 index 0000000..5759bd7 --- /dev/null +++ b/internal/controller/authentication/authnmapping/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/authentication/v1beta1" + 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(v1beta1.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", v1beta1.AuthnMapping_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.AuthnMapping_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_authn_mapping"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.AuthnMapping_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.AuthnMapping + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.AuthnMapping{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.AuthnMapping") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AuthnMappingList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AuthnMappingList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.AuthnMapping_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.AuthnMapping{}, 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 index 2c6a385..a523712 100755 --- a/internal/controller/cloud/configurationrule/zz_controller.go +++ b/internal/controller/cloud/configurationrule/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/cloud/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/cloud/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.ConfigurationRule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ConfigurationRule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_cloud_configuration_rule"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ConfigurationRule_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.ConfigurationRule + // register webhooks for the kind v1beta1.ConfigurationRule // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.ConfigurationRule{}). + For(&v1beta1.ConfigurationRule{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConfigurationRule") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ConfigurationRule") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConfigurationRule_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ConfigurationRuleList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ConfigurationRuleList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ConfigurationRule_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.ConfigurationRule{}, eventHandler). + Watches(&v1beta1.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 deleted file mode 100755 index 07bdf46..0000000 --- a/internal/controller/cloud/workloadsecurityagentrule/zz_controller.go +++ /dev/null @@ -1,78 +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 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/dashboard/dashboardjson/zz_controller.go b/internal/controller/dashboard/dashboardjson/zz_controller.go new file mode 100755 index 0000000..2c3972b --- /dev/null +++ b/internal/controller/dashboard/dashboardjson/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/dashboard/v1beta1" + 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(v1beta1.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", v1beta1.DashboardJSON_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.DashboardJSON_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_dashboard_json"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.DashboardJSON_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.DashboardJSON + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.DashboardJSON{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.DashboardJSON") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.DashboardJSONList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.DashboardJSONList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.DashboardJSON_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.DashboardJSON{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/dashboard/dashboardlist/zz_controller.go b/internal/controller/dashboard/dashboardlist/zz_controller.go new file mode 100755 index 0000000..7889d08 --- /dev/null +++ b/internal/controller/dashboard/dashboardlist/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/dashboard/v1beta1" + 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(v1beta1.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", v1beta1.DashboardList_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.DashboardList_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_dashboard_list"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.DashboardList_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.DashboardList + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.DashboardList{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.DashboardList") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.DashboardListList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.DashboardListList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.DashboardList_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.DashboardList{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/dashboard/powerpack/zz_controller.go b/internal/controller/dashboard/powerpack/zz_controller.go new file mode 100755 index 0000000..f2dd14b --- /dev/null +++ b/internal/controller/dashboard/powerpack/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/dashboard/v1beta1" + 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(v1beta1.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", v1beta1.Powerpack_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Powerpack_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_powerpack"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Powerpack_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.Powerpack + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.Powerpack{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Powerpack") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.PowerpackList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.PowerpackList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Powerpack_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.Powerpack{}, 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 deleted file mode 100755 index 605f25f..0000000 --- a/internal/controller/datadog/apikey/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index a4e8b7f..0000000 --- a/internal/controller/datadog/appkey/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 3ca1b28..0000000 --- a/internal/controller/datadog/authnmapping/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index d5b33e0..0000000 --- a/internal/controller/datadog/childorganization/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 95130c4..0000000 --- a/internal/controller/datadog/dashboardjson/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index b3568a5..0000000 --- a/internal/controller/datadog/dashboardlist/zz_controller.go +++ /dev/null @@ -1,78 +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 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/datadog/downtime/zz_controller.go b/internal/controller/datadog/downtime/zz_controller.go deleted file mode 100755 index 9c6f49c..0000000 --- a/internal/controller/datadog/downtime/zz_controller.go +++ /dev/null @@ -1,78 +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 downtime - -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 Downtime managed resources. -func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { - 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.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["datadog_downtime"], 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.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.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 deleted file mode 100755 index 66c9840..0000000 --- a/internal/controller/datadog/downtimeschedule/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index d8dec9f..0000000 --- a/internal/controller/datadog/ipallowlist/zz_controller.go +++ /dev/null @@ -1,78 +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 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/monitorconfigpolicy/zz_controller.go b/internal/controller/datadog/monitorconfigpolicy/zz_controller.go deleted file mode 100755 index 1c5b2f6..0000000 --- a/internal/controller/datadog/monitorconfigpolicy/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 490a081..0000000 --- a/internal/controller/datadog/monitorjson/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index b6699b1..0000000 --- a/internal/controller/datadog/organizationsettings/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 2bf46db..0000000 --- a/internal/controller/datadog/powerpack/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 801662f..0000000 --- a/internal/controller/datadog/restrictionpolicy/zz_controller.go +++ /dev/null @@ -1,78 +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 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/rumapplication/zz_controller.go b/internal/controller/datadog/rumapplication/zz_controller.go deleted file mode 100755 index 23bbfde..0000000 --- a/internal/controller/datadog/rumapplication/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index a841557..0000000 --- a/internal/controller/datadog/serviceaccount/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index abecf29..0000000 --- a/internal/controller/datadog/serviceaccountapplicationkey/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 4c88a19..0000000 --- a/internal/controller/datadog/servicedefinitionyaml/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 5bbc719..0000000 --- a/internal/controller/datadog/servicelevelobjective/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index e1d6aeb..0000000 --- a/internal/controller/datadog/slocorrection/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 414b1a4..0000000 --- a/internal/controller/datadog/spansmetric/zz_controller.go +++ /dev/null @@ -1,78 +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 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/teamlink/zz_controller.go b/internal/controller/datadog/teamlink/zz_controller.go deleted file mode 100755 index d0053f4..0000000 --- a/internal/controller/datadog/teamlink/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index eb46f6e..0000000 --- a/internal/controller/datadog/teammembership/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 740c82f..0000000 --- a/internal/controller/datadog/teampermissionsetting/zz_controller.go +++ /dev/null @@ -1,78 +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 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/webhook/zz_controller.go b/internal/controller/datadog/webhook/zz_controller.go deleted file mode 100755 index 669957f..0000000 --- a/internal/controller/datadog/webhook/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 5e851f0..0000000 --- a/internal/controller/datadog/webhookcustomvariable/zz_controller.go +++ /dev/null @@ -1,78 +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 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/iam/restrictionpolicy/zz_controller.go b/internal/controller/iam/restrictionpolicy/zz_controller.go new file mode 100755 index 0000000..3cc922f --- /dev/null +++ b/internal/controller/iam/restrictionpolicy/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + 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(v1beta1.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", v1beta1.RestrictionPolicy_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.RestrictionPolicy_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_restriction_policy"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.RestrictionPolicy_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.RestrictionPolicy + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.RestrictionPolicy{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.RestrictionPolicy") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.RestrictionPolicyList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.RestrictionPolicyList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.RestrictionPolicy_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.RestrictionPolicy{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/role/zz_controller.go b/internal/controller/iam/role/zz_controller.go similarity index 50% rename from internal/controller/datadog/role/zz_controller.go rename to internal/controller/iam/role/zz_controller.go index bcff579..4e31ec9 100755 --- a/internal/controller/datadog/role/zz_controller.go +++ b/internal/controller/iam/role/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Role_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Role_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_role"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Role_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Role + // register webhooks for the kind v1beta1.Role // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Role{}). + For(&v1beta1.Role{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Role") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Role") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Role_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.RoleList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.RoleList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Role_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Role{}, eventHandler). + Watches(&v1beta1.Role{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/iam/serviceaccount/zz_controller.go b/internal/controller/iam/serviceaccount/zz_controller.go new file mode 100755 index 0000000..6187def --- /dev/null +++ b/internal/controller/iam/serviceaccount/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + 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(v1beta1.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", v1beta1.ServiceAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ServiceAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_service_account"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ServiceAccount_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ServiceAccount + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ServiceAccount{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ServiceAccount") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ServiceAccountList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ServiceAccountList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ServiceAccount_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ServiceAccount{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/iam/serviceaccountapplicationkey/zz_controller.go b/internal/controller/iam/serviceaccountapplicationkey/zz_controller.go new file mode 100755 index 0000000..140ac12 --- /dev/null +++ b/internal/controller/iam/serviceaccountapplicationkey/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + 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(v1beta1.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", v1beta1.ServiceAccountApplicationKey_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ServiceAccountApplicationKey_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_service_account_application_key"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ServiceAccountApplicationKey_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ServiceAccountApplicationKey + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ServiceAccountApplicationKey{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ServiceAccountApplicationKey") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ServiceAccountApplicationKeyList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ServiceAccountApplicationKeyList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ServiceAccountApplicationKey_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ServiceAccountApplicationKey{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/team/zz_controller.go b/internal/controller/iam/team/zz_controller.go similarity index 50% rename from internal/controller/datadog/team/zz_controller.go rename to internal/controller/iam/team/zz_controller.go index 330db94..307e0bf 100755 --- a/internal/controller/datadog/team/zz_controller.go +++ b/internal/controller/iam/team/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Team_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Team_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_team"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Team_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Team + // register webhooks for the kind v1beta1.Team // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Team{}). + For(&v1beta1.Team{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Team") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Team") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Team_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.TeamList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.TeamList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Team_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Team{}, eventHandler). + Watches(&v1beta1.Team{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/iam/teamlink/zz_controller.go b/internal/controller/iam/teamlink/zz_controller.go new file mode 100755 index 0000000..dd48931 --- /dev/null +++ b/internal/controller/iam/teamlink/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + 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(v1beta1.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", v1beta1.TeamLink_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.TeamLink_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_team_link"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.TeamLink_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.TeamLink + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.TeamLink{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.TeamLink") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.TeamLinkList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.TeamLinkList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.TeamLink_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.TeamLink{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/iam/teammembership/zz_controller.go b/internal/controller/iam/teammembership/zz_controller.go new file mode 100755 index 0000000..664b487 --- /dev/null +++ b/internal/controller/iam/teammembership/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + 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(v1beta1.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", v1beta1.TeamMembership_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.TeamMembership_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_team_membership"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.TeamMembership_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.TeamMembership + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.TeamMembership{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.TeamMembership") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.TeamMembershipList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.TeamMembershipList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.TeamMembership_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.TeamMembership{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/iam/teampermissionsetting/zz_controller.go b/internal/controller/iam/teampermissionsetting/zz_controller.go new file mode 100755 index 0000000..8377447 --- /dev/null +++ b/internal/controller/iam/teampermissionsetting/zz_controller.go @@ -0,0 +1,97 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" + 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(v1beta1.TeamPermissionSetting_GroupVersionKind.String()) + var initializers managed.InitializerChain + initializers = append(initializers, managed.NewNameAsExternalName(mgr.GetClient())) + 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", v1beta1.TeamPermissionSetting_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.TeamPermissionSetting_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_team_permission_setting"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.TeamPermissionSetting_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.TeamPermissionSetting + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.TeamPermissionSetting{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.TeamPermissionSetting") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.TeamPermissionSettingList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.TeamPermissionSettingList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.TeamPermissionSetting_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.TeamPermissionSetting{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/user/zz_controller.go b/internal/controller/iam/user/zz_controller.go similarity index 50% rename from internal/controller/datadog/user/zz_controller.go rename to internal/controller/iam/user/zz_controller.go index 8b718ea..247e16a 100755 --- a/internal/controller/datadog/user/zz_controller.go +++ b/internal/controller/iam/user/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/iam/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.User_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.User_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_user"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.User_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.User + // register webhooks for the kind v1beta1.User // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.User{}). + For(&v1beta1.User{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.User") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.User") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.User_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.UserList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.UserList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.User_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.User{}, eventHandler). + Watches(&v1beta1.User{}, 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 index fc4a6be..c404449 100755 --- a/internal/controller/integration/aws/zz_controller.go +++ b/internal/controller/integration/aws/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles AWS managed resources. +// 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Aws_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Aws_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Aws_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.AWS + // register webhooks for the kind v1beta1.Aws // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.AWS{}). + For(&v1beta1.Aws{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWS") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Aws") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWS_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AwsList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AwsList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Aws_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.AWS{}, eventHandler). + Watches(&v1beta1.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 index 4f19cdf..05df65f 100755 --- a/internal/controller/integration/awseventbridge/zz_controller.go +++ b/internal/controller/integration/awseventbridge/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles AWSEventBridge managed resources. +// 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.AwsEventBridge_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.AwsEventBridge_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_event_bridge"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.AwsEventBridge_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.AWSEventBridge + // register webhooks for the kind v1beta1.AwsEventBridge // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.AWSEventBridge{}). + For(&v1beta1.AwsEventBridge{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSEventBridge") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.AwsEventBridge") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSEventBridge_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AwsEventBridgeList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AwsEventBridgeList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.AwsEventBridge_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.AWSEventBridge{}, eventHandler). + Watches(&v1beta1.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 index df62e41..36bf1f0 100755 --- a/internal/controller/integration/awslambdaarn/zz_controller.go +++ b/internal/controller/integration/awslambdaarn/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles AWSLambdaARN managed resources. +// 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.AwsLambdaArn_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.AwsLambdaArn_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_lambda_arn"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.AwsLambdaArn_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.AWSLambdaARN + // register webhooks for the kind v1beta1.AwsLambdaArn // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.AWSLambdaARN{}). + For(&v1beta1.AwsLambdaArn{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSLambdaARN") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.AwsLambdaArn") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSLambdaARN_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AwsLambdaArnList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AwsLambdaArnList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.AwsLambdaArn_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.AWSLambdaARN{}, eventHandler). + Watches(&v1beta1.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 index c454ba0..ec39257 100755 --- a/internal/controller/integration/awslogcollection/zz_controller.go +++ b/internal/controller/integration/awslogcollection/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles AWSLogCollection managed resources. +// 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.AwsLogCollection_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.AwsLogCollection_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_log_collection"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.AwsLogCollection_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.AWSLogCollection + // register webhooks for the kind v1beta1.AwsLogCollection // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.AWSLogCollection{}). + For(&v1beta1.AwsLogCollection{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSLogCollection") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.AwsLogCollection") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSLogCollection_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AwsLogCollectionList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AwsLogCollectionList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.AwsLogCollection_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.AWSLogCollection{}, eventHandler). + Watches(&v1beta1.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 index f450153..3535339 100755 --- a/internal/controller/integration/awstagfilter/zz_controller.go +++ b/internal/controller/integration/awstagfilter/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles AWSTagFilter managed resources. +// 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.AwsTagFilter_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.AwsTagFilter_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_aws_tag_filter"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.AwsTagFilter_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.AWSTagFilter + // register webhooks for the kind v1beta1.AwsTagFilter // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.AWSTagFilter{}). + For(&v1beta1.AwsTagFilter{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.AWSTagFilter") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.AwsTagFilter") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.AWSTagFilter_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AwsTagFilterList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AwsTagFilterList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.AwsTagFilter_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.AWSTagFilter{}, eventHandler). + Watches(&v1beta1.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 index 6e1db1c..72bbe39 100755 --- a/internal/controller/integration/azure/zz_controller.go +++ b/internal/controller/integration/azure/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Azure_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Azure_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_azure"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Azure_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Azure + // register webhooks for the kind v1beta1.Azure // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Azure{}). + For(&v1beta1.Azure{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Azure") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Azure") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Azure_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.AzureList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.AzureList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Azure_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Azure{}, eventHandler). + Watches(&v1beta1.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 index babbf78..907622a 100755 --- a/internal/controller/integration/cloudflareaccount/zz_controller.go +++ b/internal/controller/integration/cloudflareaccount/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.CloudflareAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.CloudflareAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_cloudflare_account"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.CloudflareAccount_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.CloudflareAccount + // register webhooks for the kind v1beta1.CloudflareAccount // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.CloudflareAccount{}). + For(&v1beta1.CloudflareAccount{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.CloudflareAccount") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.CloudflareAccount") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.CloudflareAccount_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.CloudflareAccountList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.CloudflareAccountList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.CloudflareAccount_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.CloudflareAccount{}, eventHandler). + Watches(&v1beta1.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 index 045ddc3..54e2a7a 100755 --- a/internal/controller/integration/confluentaccount/zz_controller.go +++ b/internal/controller/integration/confluentaccount/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.ConfluentAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ConfluentAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_confluent_account"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ConfluentAccount_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.ConfluentAccount + // register webhooks for the kind v1beta1.ConfluentAccount // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.ConfluentAccount{}). + For(&v1beta1.ConfluentAccount{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConfluentAccount") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ConfluentAccount") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConfluentAccount_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ConfluentAccountList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ConfluentAccountList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ConfluentAccount_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.ConfluentAccount{}, eventHandler). + Watches(&v1beta1.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 index af8328e..83cf1a1 100755 --- a/internal/controller/integration/confluentresource/zz_controller.go +++ b/internal/controller/integration/confluentresource/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.ConfluentResource_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ConfluentResource_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_confluent_resource"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ConfluentResource_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.ConfluentResource + // register webhooks for the kind v1beta1.ConfluentResource // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.ConfluentResource{}). + For(&v1beta1.ConfluentResource{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConfluentResource") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ConfluentResource") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConfluentResource_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ConfluentResourceList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ConfluentResourceList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ConfluentResource_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.ConfluentResource{}, eventHandler). + Watches(&v1beta1.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 index b81a197..147bb0a 100755 --- a/internal/controller/integration/fastlyaccount/zz_controller.go +++ b/internal/controller/integration/fastlyaccount/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.FastlyAccount_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.FastlyAccount_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_fastly_account"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.FastlyAccount_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.FastlyAccount + // register webhooks for the kind v1beta1.FastlyAccount // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.FastlyAccount{}). + For(&v1beta1.FastlyAccount{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.FastlyAccount") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.FastlyAccount") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.FastlyAccount_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.FastlyAccountList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.FastlyAccountList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.FastlyAccount_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.FastlyAccount{}, eventHandler). + Watches(&v1beta1.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 index 2071a9c..2a95f40 100755 --- a/internal/controller/integration/fastlyservice/zz_controller.go +++ b/internal/controller/integration/fastlyservice/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.FastlyService_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.FastlyService_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_fastly_service"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.FastlyService_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.FastlyService + // register webhooks for the kind v1beta1.FastlyService // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.FastlyService{}). + For(&v1beta1.FastlyService{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.FastlyService") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.FastlyService") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.FastlyService_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.FastlyServiceList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.FastlyServiceList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.FastlyService_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.FastlyService{}, eventHandler). + Watches(&v1beta1.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 index 65d416d..8de09f6 100755 --- a/internal/controller/integration/gcp/zz_controller.go +++ b/internal/controller/integration/gcp/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.GCP_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.GCP_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_gcp"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.GCP_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.GCP + // register webhooks for the kind v1beta1.GCP // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.GCP{}). + For(&v1beta1.GCP{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GCP") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.GCP") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GCP_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.GCPList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.GCPList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.GCP_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.GCP{}, eventHandler). + Watches(&v1beta1.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 index 8104c3d..0dfd637 100755 --- a/internal/controller/integration/gcpsts/zz_controller.go +++ b/internal/controller/integration/gcpsts/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) -// Setup adds a controller that reconciles GCPSTS managed resources. +// 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.GCPSts_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.GCPSts_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_gcp_sts"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.GCPSts_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.GCPSTS + // register webhooks for the kind v1beta1.GCPSts // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.GCPSTS{}). + For(&v1beta1.GCPSts{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GCPSTS") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.GCPSts") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GCPSTS_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.GCPStsList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.GCPStsList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.GCPSts_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.GCPSTS{}, eventHandler). + Watches(&v1beta1.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 index b17755d..671ad66 100755 --- a/internal/controller/integration/opsgenieserviceobject/zz_controller.go +++ b/internal/controller/integration/opsgenieserviceobject/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.OpsgenieServiceObject_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.OpsgenieServiceObject_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_opsgenie_service_object"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.OpsgenieServiceObject_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.OpsgenieServiceObject + // register webhooks for the kind v1beta1.OpsgenieServiceObject // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.OpsgenieServiceObject{}). + For(&v1beta1.OpsgenieServiceObject{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.OpsgenieServiceObject") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.OpsgenieServiceObject") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.OpsgenieServiceObject_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.OpsgenieServiceObjectList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.OpsgenieServiceObjectList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.OpsgenieServiceObject_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.OpsgenieServiceObject{}, eventHandler). + Watches(&v1beta1.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 index 441c7ab..7718abf 100755 --- a/internal/controller/integration/pagerduty/zz_controller.go +++ b/internal/controller/integration/pagerduty/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Pagerduty_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Pagerduty_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_pagerduty"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Pagerduty_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Pagerduty + // register webhooks for the kind v1beta1.Pagerduty // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Pagerduty{}). + For(&v1beta1.Pagerduty{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Pagerduty") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Pagerduty") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Pagerduty_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.PagerdutyList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.PagerdutyList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Pagerduty_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Pagerduty{}, eventHandler). + Watches(&v1beta1.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 index 05a6993..614dad7 100755 --- a/internal/controller/integration/pagerdutyserviceobject/zz_controller.go +++ b/internal/controller/integration/pagerdutyserviceobject/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.PagerdutyServiceObject_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.PagerdutyServiceObject_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_pagerduty_service_object"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.PagerdutyServiceObject_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.PagerdutyServiceObject + // register webhooks for the kind v1beta1.PagerdutyServiceObject // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.PagerdutyServiceObject{}). + For(&v1beta1.PagerdutyServiceObject{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.PagerdutyServiceObject") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.PagerdutyServiceObject") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.PagerdutyServiceObject_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.PagerdutyServiceObjectList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.PagerdutyServiceObjectList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.PagerdutyServiceObject_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.PagerdutyServiceObject{}, eventHandler). + Watches(&v1beta1.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 index 0357342..e633e7e 100755 --- a/internal/controller/integration/slackchannel/zz_controller.go +++ b/internal/controller/integration/slackchannel/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/integration/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/integration/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.SlackChannel_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.SlackChannel_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_integration_slack_channel"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.SlackChannel_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.SlackChannel + // register webhooks for the kind v1beta1.SlackChannel // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.SlackChannel{}). + For(&v1beta1.SlackChannel{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.SlackChannel") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.SlackChannel") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.SlackChannel_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.SlackChannelList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.SlackChannelList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.SlackChannel_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.SlackChannel{}, eventHandler). + Watches(&v1beta1.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 index 5d3bf79..e68c3d4 100755 --- a/internal/controller/logs/archive/zz_controller.go +++ b/internal/controller/logs/archive/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Archive_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Archive_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_archive"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Archive_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Archive + // register webhooks for the kind v1beta1.Archive // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Archive{}). + For(&v1beta1.Archive{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Archive") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Archive") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Archive_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ArchiveList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ArchiveList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Archive_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Archive{}, eventHandler). + Watches(&v1beta1.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 index f364333..8e284f9 100755 --- a/internal/controller/logs/archiveorder/zz_controller.go +++ b/internal/controller/logs/archiveorder/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.ArchiveOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ArchiveOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_archive_order"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ArchiveOrder_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.ArchiveOrder + // register webhooks for the kind v1beta1.ArchiveOrder // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.ArchiveOrder{}). + For(&v1beta1.ArchiveOrder{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ArchiveOrder") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ArchiveOrder") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ArchiveOrder_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ArchiveOrderList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ArchiveOrderList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ArchiveOrder_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.ArchiveOrder{}, eventHandler). + Watches(&v1beta1.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 index 7a76601..b70734f 100755 --- a/internal/controller/logs/custompipeline/zz_controller.go +++ b/internal/controller/logs/custompipeline/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.CustomPipeline_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.CustomPipeline_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_custom_pipeline"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.CustomPipeline_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.CustomPipeline + // register webhooks for the kind v1beta1.CustomPipeline // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.CustomPipeline{}). + For(&v1beta1.CustomPipeline{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.CustomPipeline") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.CustomPipeline") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.CustomPipeline_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.CustomPipelineList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.CustomPipelineList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.CustomPipeline_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.CustomPipeline{}, eventHandler). + Watches(&v1beta1.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 index c28fda3..5c0d988 100755 --- a/internal/controller/logs/index/zz_controller.go +++ b/internal/controller/logs/index/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,43 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.Index_GroupVersionKind.String()) var initializers managed.InitializerChain + initializers = append(initializers, managed.NewNameAsExternalName(mgr.GetClient())) 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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Index_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Index_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_index"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Index_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +59,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Index + // register webhooks for the kind v1beta1.Index // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Index{}). + For(&v1beta1.Index{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Index") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Index") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Index_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.IndexList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.IndexList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Index_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Index{}, eventHandler). + Watches(&v1beta1.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 index 2986c67..59beae3 100755 --- a/internal/controller/logs/indexorder/zz_controller.go +++ b/internal/controller/logs/indexorder/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,43 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.IndexOrder_GroupVersionKind.String()) var initializers managed.InitializerChain + initializers = append(initializers, managed.NewNameAsExternalName(mgr.GetClient())) 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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.IndexOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.IndexOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_index_order"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.IndexOrder_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +59,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.IndexOrder + // register webhooks for the kind v1beta1.IndexOrder // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.IndexOrder{}). + For(&v1beta1.IndexOrder{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.IndexOrder") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.IndexOrder") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.IndexOrder_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.IndexOrderList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.IndexOrderList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.IndexOrder_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.IndexOrder{}, eventHandler). + Watches(&v1beta1.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 index dcd509a..5762b99 100755 --- a/internal/controller/logs/integrationpipeline/zz_controller.go +++ b/internal/controller/logs/integrationpipeline/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.IntegrationPipeline_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.IntegrationPipeline_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_integration_pipeline"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.IntegrationPipeline_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.IntegrationPipeline + // register webhooks for the kind v1beta1.IntegrationPipeline // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.IntegrationPipeline{}). + For(&v1beta1.IntegrationPipeline{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.IntegrationPipeline") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.IntegrationPipeline") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.IntegrationPipeline_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.IntegrationPipelineList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.IntegrationPipelineList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.IntegrationPipeline_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.IntegrationPipeline{}, eventHandler). + Watches(&v1beta1.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 index bd0ea36..12454bf 100755 --- a/internal/controller/logs/metric/zz_controller.go +++ b/internal/controller/logs/metric/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Metric_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Metric_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_metric"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Metric_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Metric + // register webhooks for the kind v1beta1.Metric // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Metric{}). + For(&v1beta1.Metric{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Metric") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Metric") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Metric_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.MetricList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.MetricList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Metric_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Metric{}, eventHandler). + Watches(&v1beta1.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 index e819f84..b2d7f16 100755 --- a/internal/controller/logs/pipelineorder/zz_controller.go +++ b/internal/controller/logs/pipelineorder/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,43 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/logs/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/logs/v1beta1" 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()) + name := managed.ControllerName(v1beta1.PipelineOrder_GroupVersionKind.String()) var initializers managed.InitializerChain + initializers = append(initializers, managed.NewNameAsExternalName(mgr.GetClient())) 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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.PipelineOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.PipelineOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_logs_pipeline_order"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.PipelineOrder_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +59,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.PipelineOrder + // register webhooks for the kind v1beta1.PipelineOrder // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.PipelineOrder{}). + For(&v1beta1.PipelineOrder{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.PipelineOrder") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.PipelineOrder") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.PipelineOrder_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.PipelineOrderList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.PipelineOrderList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.PipelineOrder_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.PipelineOrder{}, eventHandler). + Watches(&v1beta1.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 index 2887679..c5c278e 100755 --- a/internal/controller/metric/metadata/zz_controller.go +++ b/internal/controller/metric/metadata/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/metric/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/metric/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Metadata_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Metadata_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_metric_metadata"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Metadata_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Metadata + // register webhooks for the kind v1beta1.Metadata // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Metadata{}). + For(&v1beta1.Metadata{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Metadata") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Metadata") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Metadata_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.MetadataList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.MetadataList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Metadata_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Metadata{}, eventHandler). + Watches(&v1beta1.Metadata{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/metric/spansmetric/zz_controller.go b/internal/controller/metric/spansmetric/zz_controller.go new file mode 100755 index 0000000..d009ee1 --- /dev/null +++ b/internal/controller/metric/spansmetric/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/metric/v1beta1" + 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(v1beta1.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", v1beta1.SpansMetric_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.SpansMetric_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_spans_metric"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.SpansMetric_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.SpansMetric + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.SpansMetric{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.SpansMetric") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.SpansMetricList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.SpansMetricList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.SpansMetric_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.SpansMetric{}, 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 index 5bc870a..9a62e52 100755 --- a/internal/controller/metric/tagconfiguration/zz_controller.go +++ b/internal/controller/metric/tagconfiguration/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/metric/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/metric/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.TagConfiguration_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.TagConfiguration_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_metric_tag_configuration"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.TagConfiguration_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.TagConfiguration + // register webhooks for the kind v1beta1.TagConfiguration // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.TagConfiguration{}). + For(&v1beta1.TagConfiguration{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.TagConfiguration") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.TagConfiguration") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.TagConfiguration_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.TagConfigurationList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.TagConfigurationList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.TagConfiguration_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.TagConfiguration{}, eventHandler). + Watches(&v1beta1.TagConfiguration{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/monitor/configpolicy/zz_controller.go b/internal/controller/monitor/configpolicy/zz_controller.go new file mode 100755 index 0000000..233d304 --- /dev/null +++ b/internal/controller/monitor/configpolicy/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package configpolicy + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/monitor/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ConfigPolicy managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.ConfigPolicy_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", v1beta1.ConfigPolicy_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ConfigPolicy_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_monitor_config_policy"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ConfigPolicy_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ConfigPolicy + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ConfigPolicy{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ConfigPolicy") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ConfigPolicyList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ConfigPolicyList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ConfigPolicy_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ConfigPolicy{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/monitor/downtime/zz_controller.go b/internal/controller/monitor/downtime/zz_controller.go new file mode 100755 index 0000000..6b31796 --- /dev/null +++ b/internal/controller/monitor/downtime/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package downtime + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/monitor/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Downtime managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.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", v1beta1.Downtime_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Downtime_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_downtime"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Downtime_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.Downtime + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.Downtime{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Downtime") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.DowntimeList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.DowntimeList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Downtime_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.Downtime{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/monitor/downtimeschedule/zz_controller.go b/internal/controller/monitor/downtimeschedule/zz_controller.go new file mode 100755 index 0000000..37f901d --- /dev/null +++ b/internal/controller/monitor/downtimeschedule/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/monitor/v1beta1" + 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(v1beta1.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", v1beta1.DowntimeSchedule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.DowntimeSchedule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_downtime_schedule"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.DowntimeSchedule_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.DowntimeSchedule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.DowntimeSchedule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.DowntimeSchedule") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.DowntimeScheduleList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.DowntimeScheduleList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.DowntimeSchedule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.DowntimeSchedule{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/datadog/monitor/zz_controller.go b/internal/controller/monitor/monitor/zz_controller.go similarity index 50% rename from internal/controller/datadog/monitor/zz_controller.go rename to internal/controller/monitor/monitor/zz_controller.go index a70714c..37d3af8 100755 --- a/internal/controller/datadog/monitor/zz_controller.go +++ b/internal/controller/monitor/monitor/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/datadog/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/monitor/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Monitor_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Monitor_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_monitor"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Monitor_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Monitor + // register webhooks for the kind v1beta1.Monitor // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Monitor{}). + For(&v1beta1.Monitor{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Monitor") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Monitor") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Monitor_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.MonitorList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.MonitorList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Monitor_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Monitor{}, eventHandler). + Watches(&v1beta1.Monitor{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/monitor/monitorjson/zz_controller.go b/internal/controller/monitor/monitorjson/zz_controller.go new file mode 100755 index 0000000..cbed1b2 --- /dev/null +++ b/internal/controller/monitor/monitorjson/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/monitor/v1beta1" + 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(v1beta1.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", v1beta1.MonitorJSON_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.MonitorJSON_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_monitor_json"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.MonitorJSON_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.MonitorJSON + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.MonitorJSON{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.MonitorJSON") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.MonitorJSONList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.MonitorJSONList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.MonitorJSON_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.MonitorJSON{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/notification/webhook/zz_controller.go b/internal/controller/notification/webhook/zz_controller.go new file mode 100755 index 0000000..d411f7d --- /dev/null +++ b/internal/controller/notification/webhook/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/notification/v1beta1" + 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(v1beta1.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", v1beta1.Webhook_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Webhook_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_webhook"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Webhook_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.Webhook + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.Webhook{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Webhook") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.WebhookList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.WebhookList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Webhook_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.Webhook{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/notification/webhookcustomvariable/zz_controller.go b/internal/controller/notification/webhookcustomvariable/zz_controller.go new file mode 100755 index 0000000..4d39e39 --- /dev/null +++ b/internal/controller/notification/webhookcustomvariable/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/notification/v1beta1" + 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(v1beta1.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", v1beta1.WebhookCustomVariable_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.WebhookCustomVariable_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_webhook_custom_variable"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.WebhookCustomVariable_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.WebhookCustomVariable + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.WebhookCustomVariable{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.WebhookCustomVariable") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.WebhookCustomVariableList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.WebhookCustomVariableList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.WebhookCustomVariable_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.WebhookCustomVariable{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/organization/childorganization/zz_controller.go b/internal/controller/organization/childorganization/zz_controller.go new file mode 100755 index 0000000..4dc50f4 --- /dev/null +++ b/internal/controller/organization/childorganization/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/organization/v1beta1" + 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(v1beta1.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", v1beta1.ChildOrganization_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ChildOrganization_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_child_organization"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ChildOrganization_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ChildOrganization + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ChildOrganization{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ChildOrganization") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ChildOrganizationList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ChildOrganizationList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ChildOrganization_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ChildOrganization{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/organization/settings/zz_controller.go b/internal/controller/organization/settings/zz_controller.go new file mode 100755 index 0000000..9b67fb2 --- /dev/null +++ b/internal/controller/organization/settings/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package settings + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/organization/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Settings managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.Settings_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", v1beta1.Settings_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Settings_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_organization_settings"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Settings_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.Settings + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.Settings{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Settings") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.SettingsList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.SettingsList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Settings_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.Settings{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/providerconfig/config.go b/internal/controller/providerconfig/config.go index fdd13ee..f6453e5 100644 --- a/internal/controller/providerconfig/config.go +++ b/internal/controller/providerconfig/config.go @@ -9,8 +9,9 @@ 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/provider-datadog/apis/v1beta1" ) // Setup adds a controller that reconciles ProviderConfigs by accounting for diff --git a/internal/controller/rum/application/zz_controller.go b/internal/controller/rum/application/zz_controller.go new file mode 100755 index 0000000..24a7105 --- /dev/null +++ b/internal/controller/rum/application/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package application + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/rum/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Application managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.Application_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", v1beta1.Application_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Application_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_rum_application"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Application_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.Application + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.Application{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Application") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ApplicationList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ApplicationList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Application_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.Application{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/security/ipallowlist/zz_controller.go b/internal/controller/security/ipallowlist/zz_controller.go new file mode 100755 index 0000000..20459b3 --- /dev/null +++ b/internal/controller/security/ipallowlist/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/security/v1beta1" + 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(v1beta1.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", v1beta1.IPAllowList_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.IPAllowList_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_ip_allowlist"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.IPAllowList_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.IPAllowList + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.IPAllowList{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.IPAllowList") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.IPAllowListList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.IPAllowListList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.IPAllowList_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.IPAllowList{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/securitymonitoring/defaultrule/zz_controller.go b/internal/controller/securitymonitoring/defaultrule/zz_controller.go index f149395..ae97f4d 100755 --- a/internal/controller/securitymonitoring/defaultrule/zz_controller.go +++ b/internal/controller/securitymonitoring/defaultrule/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.DefaultRule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.DefaultRule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_security_monitoring_default_rule"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.DefaultRule_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.DefaultRule + // register webhooks for the kind v1beta1.DefaultRule // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.DefaultRule{}). + For(&v1beta1.DefaultRule{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.DefaultRule") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.DefaultRule") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.DefaultRule_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.DefaultRuleList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.DefaultRuleList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.DefaultRule_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.DefaultRule{}, eventHandler). + Watches(&v1beta1.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 index 4f659e6..68516e3 100755 --- a/internal/controller/securitymonitoring/filter/zz_controller.go +++ b/internal/controller/securitymonitoring/filter/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Filter_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Filter_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_security_monitoring_filter"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Filter_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Filter + // register webhooks for the kind v1beta1.Filter // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Filter{}). + For(&v1beta1.Filter{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Filter") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Filter") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Filter_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.FilterList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.FilterList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Filter_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Filter{}, eventHandler). + Watches(&v1beta1.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 index aaf41d9..f20c582 100755 --- a/internal/controller/securitymonitoring/rule/zz_controller.go +++ b/internal/controller/securitymonitoring/rule/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/securitymonitoring/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Rule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Rule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_security_monitoring_rule"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Rule_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Rule + // register webhooks for the kind v1beta1.Rule // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Rule{}). + For(&v1beta1.Rule{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Rule") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Rule") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Rule_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.RuleList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.RuleList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Rule_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Rule{}, eventHandler). + Watches(&v1beta1.Rule{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/sensitivedata/scannergroup/zz_controller.go b/internal/controller/sensitivedata/scannergroup/zz_controller.go new file mode 100755 index 0000000..49984d0 --- /dev/null +++ b/internal/controller/sensitivedata/scannergroup/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package scannergroup + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/sensitivedata/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ScannerGroup managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.ScannerGroup_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", v1beta1.ScannerGroup_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ScannerGroup_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_sensitive_data_scanner_group"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ScannerGroup_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ScannerGroup + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ScannerGroup{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ScannerGroup") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ScannerGroupList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ScannerGroupList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ScannerGroup_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ScannerGroup{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/sensitivedata/scannergrouporder/zz_controller.go b/internal/controller/sensitivedata/scannergrouporder/zz_controller.go new file mode 100755 index 0000000..f4b9c4a --- /dev/null +++ b/internal/controller/sensitivedata/scannergrouporder/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package scannergrouporder + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/sensitivedata/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ScannerGroupOrder managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.ScannerGroupOrder_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", v1beta1.ScannerGroupOrder_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ScannerGroupOrder_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_sensitive_data_scanner_group_order"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ScannerGroupOrder_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ScannerGroupOrder + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ScannerGroupOrder{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ScannerGroupOrder") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ScannerGroupOrderList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ScannerGroupOrderList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ScannerGroupOrder_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ScannerGroupOrder{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/sensitivedata/scannerrule/zz_controller.go b/internal/controller/sensitivedata/scannerrule/zz_controller.go new file mode 100755 index 0000000..b7f8c8e --- /dev/null +++ b/internal/controller/sensitivedata/scannerrule/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package scannerrule + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/sensitivedata/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles ScannerRule managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.ScannerRule_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", v1beta1.ScannerRule_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ScannerRule_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_sensitive_data_scanner_rule"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ScannerRule_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ScannerRule + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ScannerRule{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ScannerRule") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ScannerRuleList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ScannerRuleList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ScannerRule_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ScannerRule{}, 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 deleted file mode 100755 index 8cfdbfe..0000000 --- a/internal/controller/sensitivedatascanner/group/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 1a1e57c..0000000 --- a/internal/controller/sensitivedatascanner/grouporder/zz_controller.go +++ /dev/null @@ -1,78 +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 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 deleted file mode 100755 index 99b7686..0000000 --- a/internal/controller/sensitivedatascanner/rule/zz_controller.go +++ /dev/null @@ -1,78 +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 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/service/definitionyaml/zz_controller.go b/internal/controller/service/definitionyaml/zz_controller.go new file mode 100755 index 0000000..8d50a2e --- /dev/null +++ b/internal/controller/service/definitionyaml/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package definitionyaml + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/service/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles DefinitionYaml managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.DefinitionYaml_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", v1beta1.DefinitionYaml_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.DefinitionYaml_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_service_definition_yaml"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.DefinitionYaml_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.DefinitionYaml + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.DefinitionYaml{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.DefinitionYaml") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.DefinitionYamlList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.DefinitionYamlList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.DefinitionYaml_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.DefinitionYaml{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/slo/correction/zz_controller.go b/internal/controller/slo/correction/zz_controller.go new file mode 100755 index 0000000..2e045e6 --- /dev/null +++ b/internal/controller/slo/correction/zz_controller.go @@ -0,0 +1,96 @@ +/* +Copyright 2022 Upbound Inc. +*/ + +// Code generated by upjet. DO NOT EDIT. + +package correction + +import ( + "time" + + "github.com/crossplane/crossplane-runtime/pkg/connection" + "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/slo/v1beta1" + features "github.com/upbound/provider-datadog/internal/features" +) + +// Setup adds a controller that reconciles Correction managed resources. +func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { + name := managed.ControllerName(v1beta1.Correction_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", v1beta1.Correction_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Correction_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_slo_correction"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Correction_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.Correction + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.Correction{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Correction") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.CorrectionList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.CorrectionList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Correction_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.Correction{}, eventHandler). + Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) +} diff --git a/internal/controller/slo/servicelevelobjective/zz_controller.go b/internal/controller/slo/servicelevelobjective/zz_controller.go new file mode 100755 index 0000000..6ae8559 --- /dev/null +++ b/internal/controller/slo/servicelevelobjective/zz_controller.go @@ -0,0 +1,96 @@ +/* +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" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" + "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" + "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" + xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" + tjcontroller "github.com/crossplane/upjet/pkg/controller" + "github.com/crossplane/upjet/pkg/controller/handler" + "github.com/crossplane/upjet/pkg/metrics" + "github.com/pkg/errors" + ctrl "sigs.k8s.io/controller-runtime" + + v1beta1 "github.com/upbound/provider-datadog/apis/slo/v1beta1" + 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(v1beta1.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", v1beta1.ServiceLevelObjective_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ServiceLevelObjective_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) + opts := []managed.ReconcilerOption{ + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_service_level_objective"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ServiceLevelObjective_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), + managed.WithLogger(o.Logger.WithValues("controller", name)), + managed.WithRecorder(event.NewAPIRecorder(mgr.GetEventRecorderFor(name))), + managed.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, 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()) + } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } + + // register webhooks for the kind v1beta1.ServiceLevelObjective + // if they're enabled. + if o.StartWebhooks { + if err := ctrl.NewWebhookManagedBy(mgr). + For(&v1beta1.ServiceLevelObjective{}). + Complete(); err != nil { + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ServiceLevelObjective") + } + } + + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ServiceLevelObjectiveList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ServiceLevelObjectiveList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ServiceLevelObjective_GroupVersionKind), opts...) + + return ctrl.NewControllerManagedBy(mgr). + Named(name). + WithOptions(o.ForControllerRuntime()). + WithEventFilter(xpresource.DesiredStateChanged()). + Watches(&v1beta1.ServiceLevelObjective{}, 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 index 34af09f..1848172 100755 --- a/internal/controller/synthetics/concurrencycap/zz_controller.go +++ b/internal/controller/synthetics/concurrencycap/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/synthetics/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.ConcurrencyCap_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.ConcurrencyCap_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_concurrency_cap"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.ConcurrencyCap_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.ConcurrencyCap + // register webhooks for the kind v1beta1.ConcurrencyCap // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.ConcurrencyCap{}). + For(&v1beta1.ConcurrencyCap{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.ConcurrencyCap") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.ConcurrencyCap") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.ConcurrencyCap_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.ConcurrencyCapList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.ConcurrencyCapList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.ConcurrencyCap_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.ConcurrencyCap{}, eventHandler). + Watches(&v1beta1.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 index ef8110e..c51d4cb 100755 --- a/internal/controller/synthetics/globalvariable/zz_controller.go +++ b/internal/controller/synthetics/globalvariable/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/synthetics/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.GlobalVariable_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.GlobalVariable_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_global_variable"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.GlobalVariable_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.GlobalVariable + // register webhooks for the kind v1beta1.GlobalVariable // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.GlobalVariable{}). + For(&v1beta1.GlobalVariable{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.GlobalVariable") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.GlobalVariable") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.GlobalVariable_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.GlobalVariableList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.GlobalVariableList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.GlobalVariable_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.GlobalVariable{}, eventHandler). + Watches(&v1beta1.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 index 6d3a304..13ca7f0 100755 --- a/internal/controller/synthetics/privatelocation/zz_controller.go +++ b/internal/controller/synthetics/privatelocation/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/synthetics/v1beta1" 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()) + name := managed.ControllerName(v1beta1.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)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.PrivateLocation_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.PrivateLocation_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) 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.WithExternalConnecter( + tjcontroller.NewTerraformPluginFrameworkAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_private_location"], + tjcontroller.WithTerraformPluginFrameworkAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginFrameworkAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginFrameworkAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginFrameworkAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.PrivateLocation_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginFrameworkAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.PrivateLocation + // register webhooks for the kind v1beta1.PrivateLocation // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.PrivateLocation{}). + For(&v1beta1.PrivateLocation{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.PrivateLocation") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.PrivateLocation") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.PrivateLocation_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.PrivateLocationList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.PrivateLocationList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.PrivateLocation_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.PrivateLocation{}, eventHandler). + Watches(&v1beta1.PrivateLocation{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/synthetics/test/zz_controller.go b/internal/controller/synthetics/test/zz_controller.go index 6cb85f0..258fef2 100755 --- a/internal/controller/synthetics/test/zz_controller.go +++ b/internal/controller/synthetics/test/zz_controller.go @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 - /* Copyright 2022 Upbound Inc. */ @@ -15,36 +11,42 @@ import ( "github.com/crossplane/crossplane-runtime/pkg/connection" "github.com/crossplane/crossplane-runtime/pkg/event" + xpfeature "github.com/crossplane/crossplane-runtime/pkg/feature" "github.com/crossplane/crossplane-runtime/pkg/ratelimiter" "github.com/crossplane/crossplane-runtime/pkg/reconciler/managed" xpresource "github.com/crossplane/crossplane-runtime/pkg/resource" + "github.com/crossplane/crossplane-runtime/pkg/statemetrics" tjcontroller "github.com/crossplane/upjet/pkg/controller" "github.com/crossplane/upjet/pkg/controller/handler" - "github.com/crossplane/upjet/pkg/terraform" + "github.com/crossplane/upjet/pkg/metrics" "github.com/pkg/errors" ctrl "sigs.k8s.io/controller-runtime" - v1alpha1 "github.com/upbound/provider-datadog/apis/synthetics/v1alpha1" + v1beta1 "github.com/upbound/provider-datadog/apis/synthetics/v1beta1" features "github.com/upbound/provider-datadog/internal/features" ) // Setup adds a controller that reconciles Test managed resources. func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { - name := managed.ControllerName(v1alpha1.Test_GroupVersionKind.String()) + name := managed.ControllerName(v1beta1.Test_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.Test_GroupVersionKind))) - ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1alpha1.Test_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler)) + eventHandler := handler.NewEventHandler(handler.WithLogger(o.Logger.WithValues("gvk", v1beta1.Test_GroupVersionKind))) + ac := tjcontroller.NewAPICallbacks(mgr, xpresource.ManagedKind(v1beta1.Test_GroupVersionKind), tjcontroller.WithEventHandler(eventHandler), tjcontroller.WithStatusUpdates(false)) opts := []managed.ReconcilerOption{ - managed.WithExternalConnecter(tjcontroller.NewConnector(mgr.GetClient(), o.WorkspaceStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_test"], tjcontroller.WithLogger(o.Logger), tjcontroller.WithConnectorEventHandler(eventHandler), - tjcontroller.WithCallbackProvider(ac), - )), + managed.WithExternalConnecter( + tjcontroller.NewTerraformPluginSDKAsyncConnector(mgr.GetClient(), o.OperationTrackerStore, o.SetupFn, o.Provider.Resources["datadog_synthetics_test"], + tjcontroller.WithTerraformPluginSDKAsyncLogger(o.Logger), + tjcontroller.WithTerraformPluginSDKAsyncConnectorEventHandler(eventHandler), + tjcontroller.WithTerraformPluginSDKAsyncCallbackProvider(ac), + tjcontroller.WithTerraformPluginSDKAsyncMetricRecorder(metrics.NewMetricRecorder(v1beta1.Test_GroupVersionKind, mgr, o.PollInterval)), + tjcontroller.WithTerraformPluginSDKAsyncManagementPolicies(o.Features.Enabled(features.EnableBetaManagementPolicies)))), 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.WithFinalizer(tjcontroller.NewOperationTrackerFinalizer(o.OperationTrackerStore, xpresource.NewAPIFinalizer(mgr.GetClient(), managed.FinalizerName))), managed.WithTimeout(3 * time.Minute), managed.WithInitializers(initializers), managed.WithConnectionPublishers(cps...), @@ -56,23 +58,39 @@ func Setup(mgr ctrl.Manager, o tjcontroller.Options) error { if o.Features.Enabled(features.EnableBetaManagementPolicies) { opts = append(opts, managed.WithManagementPolicies()) } + if o.MetricOptions != nil { + opts = append(opts, managed.WithMetricRecorder(o.MetricOptions.MRMetrics)) + } - // register webhooks for the kind v1alpha1.Test + // register webhooks for the kind v1beta1.Test // if they're enabled. if o.StartWebhooks { if err := ctrl.NewWebhookManagedBy(mgr). - For(&v1alpha1.Test{}). + For(&v1beta1.Test{}). Complete(); err != nil { - return errors.Wrap(err, "cannot register webhook for the kind v1alpha1.Test") + return errors.Wrap(err, "cannot register webhook for the kind v1beta1.Test") } } - r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1alpha1.Test_GroupVersionKind), opts...) + if o.MetricOptions != nil && o.MetricOptions.MRStateMetrics != nil { + stateMetricsRecorder := statemetrics.NewMRStateRecorder( + mgr.GetClient(), o.Logger, o.MetricOptions.MRStateMetrics, &v1beta1.TestList{}, o.MetricOptions.PollStateMetricInterval, + ) + if err := mgr.Add(stateMetricsRecorder); err != nil { + return errors.Wrap(err, "cannot register MR state metrics recorder for kind v1beta1.TestList") + } + } + + if o.Features.Enabled(xpfeature.EnableAlphaChangeLogs) { + opts = append(opts, managed.WithChangeLogger(o.ChangeLogOptions.ChangeLogger)) + } + + r := managed.NewReconciler(mgr, xpresource.ManagedKind(v1beta1.Test_GroupVersionKind), opts...) return ctrl.NewControllerManagedBy(mgr). Named(name). WithOptions(o.ForControllerRuntime()). WithEventFilter(xpresource.DesiredStateChanged()). - Watches(&v1alpha1.Test{}, eventHandler). + Watches(&v1beta1.Test{}, eventHandler). Complete(ratelimiter.NewReconciler(name, r, o.GlobalRateLimiter)) } diff --git a/internal/controller/zz_setup.go b/internal/controller/zz_setup.go index d02da92..a406aa7 100755 --- a/internal/controller/zz_setup.go +++ b/internal/controller/zz_setup.go @@ -1,6 +1,6 @@ -// SPDX-FileCopyrightText: 2023 The Crossplane Authors -// -// SPDX-License-Identifier: Apache-2.0 +/* +Copyright 2022 Upbound Inc. +*/ package controller @@ -9,40 +9,24 @@ import ( "github.com/crossplane/upjet/pkg/controller" + apikey "github.com/upbound/provider-datadog/internal/controller/access/apikey" + applicationkey "github.com/upbound/provider-datadog/internal/controller/access/applicationkey" retentionfilter "github.com/upbound/provider-datadog/internal/controller/apm/retentionfilter" retentionfilterorder "github.com/upbound/provider-datadog/internal/controller/apm/retentionfilterorder" + authnmapping "github.com/upbound/provider-datadog/internal/controller/authentication/authnmapping" 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" + dashboardjson "github.com/upbound/provider-datadog/internal/controller/dashboard/dashboardjson" + dashboardlist "github.com/upbound/provider-datadog/internal/controller/dashboard/dashboardlist" + powerpack "github.com/upbound/provider-datadog/internal/controller/dashboard/powerpack" + restrictionpolicy "github.com/upbound/provider-datadog/internal/controller/iam/restrictionpolicy" + role "github.com/upbound/provider-datadog/internal/controller/iam/role" + serviceaccount "github.com/upbound/provider-datadog/internal/controller/iam/serviceaccount" + serviceaccountapplicationkey "github.com/upbound/provider-datadog/internal/controller/iam/serviceaccountapplicationkey" + team "github.com/upbound/provider-datadog/internal/controller/iam/team" + teamlink "github.com/upbound/provider-datadog/internal/controller/iam/teamlink" + teammembership "github.com/upbound/provider-datadog/internal/controller/iam/teammembership" + teampermissionsetting "github.com/upbound/provider-datadog/internal/controller/iam/teampermissionsetting" + user "github.com/upbound/provider-datadog/internal/controller/iam/user" 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" @@ -69,14 +53,29 @@ import ( 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" + spansmetric "github.com/upbound/provider-datadog/internal/controller/metric/spansmetric" tagconfiguration "github.com/upbound/provider-datadog/internal/controller/metric/tagconfiguration" + configpolicy "github.com/upbound/provider-datadog/internal/controller/monitor/configpolicy" + downtime "github.com/upbound/provider-datadog/internal/controller/monitor/downtime" + downtimeschedule "github.com/upbound/provider-datadog/internal/controller/monitor/downtimeschedule" + monitor "github.com/upbound/provider-datadog/internal/controller/monitor/monitor" + monitorjson "github.com/upbound/provider-datadog/internal/controller/monitor/monitorjson" + webhook "github.com/upbound/provider-datadog/internal/controller/notification/webhook" + webhookcustomvariable "github.com/upbound/provider-datadog/internal/controller/notification/webhookcustomvariable" + childorganization "github.com/upbound/provider-datadog/internal/controller/organization/childorganization" + settings "github.com/upbound/provider-datadog/internal/controller/organization/settings" providerconfig "github.com/upbound/provider-datadog/internal/controller/providerconfig" + application "github.com/upbound/provider-datadog/internal/controller/rum/application" + ipallowlist "github.com/upbound/provider-datadog/internal/controller/security/ipallowlist" 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" + scannergroup "github.com/upbound/provider-datadog/internal/controller/sensitivedata/scannergroup" + scannergrouporder "github.com/upbound/provider-datadog/internal/controller/sensitivedata/scannergrouporder" + scannerrule "github.com/upbound/provider-datadog/internal/controller/sensitivedata/scannerrule" + definitionyaml "github.com/upbound/provider-datadog/internal/controller/service/definitionyaml" + correction "github.com/upbound/provider-datadog/internal/controller/slo/correction" + servicelevelobjective "github.com/upbound/provider-datadog/internal/controller/slo/servicelevelobjective" 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" @@ -87,40 +86,24 @@ import ( // the supplied manager. func Setup(mgr ctrl.Manager, o controller.Options) error { for _, setup := range []func(ctrl.Manager, controller.Options) error{ + apikey.Setup, + applicationkey.Setup, retentionfilter.Setup, retentionfilterorder.Setup, - configurationrule.Setup, - workloadsecurityagentrule.Setup, - apikey.Setup, - appkey.Setup, authnmapping.Setup, - childorganization.Setup, + configurationrule.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, @@ -147,14 +130,29 @@ func Setup(mgr ctrl.Manager, o controller.Options) error { metric.Setup, pipelineorder.Setup, metadata.Setup, + spansmetric.Setup, tagconfiguration.Setup, + configpolicy.Setup, + downtime.Setup, + downtimeschedule.Setup, + monitor.Setup, + monitorjson.Setup, + webhook.Setup, + webhookcustomvariable.Setup, + childorganization.Setup, + settings.Setup, providerconfig.Setup, + application.Setup, + ipallowlist.Setup, defaultrule.Setup, filter.Setup, rule.Setup, - group.Setup, - grouporder.Setup, - rulesensitivedatascanner.Setup, + scannergroup.Setup, + scannergrouporder.Setup, + scannerrule.Setup, + definitionyaml.Setup, + correction.Setup, + servicelevelobjective.Setup, concurrencycap.Setup, globalvariable.Setup, privatelocation.Setup, diff --git a/package/crds/access.datadog.upbound.io_apikeys.yaml b/package/crds/access.datadog.upbound.io_apikeys.yaml new file mode 100644 index 0000000..08df0bd --- /dev/null +++ b/package/crds/access.datadog.upbound.io_apikeys.yaml @@ -0,0 +1,366 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: apikeys.access.datadog.upbound.io +spec: + group: access.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: APIKey + listKind: APIKeyList + plural: apikeys + singular: apikey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + 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. + Import functionality for this resource is deprecated and will be removed + in a future release with prior notice. Securely store your API keys using + a secret management system or use this resource to create and manage new + API 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: APIKeySpec defines the desired state of APIKey + 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 API Key. + Name for API Key. + type: string + remoteConfigReadEnabled: + description: |- + settings/remote-config. + Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`. + 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 for API Key. + Name for API Key. + type: string + remoteConfigReadEnabled: + description: |- + settings/remote-config. + Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`. + 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: 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 + remoteConfigReadEnabled: + description: |- + settings/remote-config. + Whether the API key is used for remote config. Set to true only if remote config is enabled in `/organization-settings/remote-config`. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/access.datadog.upbound.io_applicationkeys.yaml b/package/crds/access.datadog.upbound.io_applicationkeys.yaml new file mode 100644 index 0000000..1864ab2 --- /dev/null +++ b/package/crds/access.datadog.upbound.io_applicationkeys.yaml @@ -0,0 +1,375 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: applicationkeys.access.datadog.upbound.io +spec: + group: access.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ApplicationKey + listKind: ApplicationKeyList + plural: applicationkeys + singular: applicationkey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: ApplicationKey is the Schema for the ApplicationKeys API. Provides + a Datadog Application Key resource. This can be used to create and manage + Datadog Application Keys. Import functionality for this resource is deprecated + and will be removed in a future release with prior notice. Securely store + your application keys using a secret management system or use this resource + to create and manage new 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: ApplicationKeySpec defines the desired state of ApplicationKey + 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 + scopes: + description: |- + (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + 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: + name: + description: |- + (String) Name for Application Key. + Name for Application Key. + type: string + scopes: + description: |- + (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + 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.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: ApplicationKeyStatus defines the observed state of ApplicationKey. + 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 + scopes: + description: |- + (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml b/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml index 389a65c..6437872 100644 --- a/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml +++ b/package/crds/apm.datadog.upbound.io_retentionfilterorders.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: retentionfilterorders.apm.datadog.upbound.io spec: group: apm.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: RetentionFilterOrder is the Schema for the RetentionFilterOrders @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,53 +75,210 @@ spec: 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. + 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 + filterIdsRefs: + description: References to RetentionFilter in apm to populate + filterIds. + items: + description: A Reference to a named object. + 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 + type: array + filterIdsSelector: + description: Selector for a list of RetentionFilter in apm to + populate filterIds. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + 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. + 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. + 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 + filterIdsRefs: + description: References to RetentionFilter in apm to populate + filterIds. + items: + description: A Reference to a named object. + 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 + type: array + filterIdsSelector: + description: Selector for a list of RetentionFilter in apm to + populate filterIds. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -128,9 +291,10 @@ spec: 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. + 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. @@ -140,21 +304,21 @@ spec: 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. + 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. + 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 @@ -164,17 +328,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -184,21 +350,21 @@ spec: 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. + 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. + 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 @@ -213,21 +379,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -238,14 +405,15 @@ spec: - 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. + 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. @@ -260,11 +428,6 @@ spec: 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. @@ -272,11 +435,9 @@ spec: 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. + 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 @@ -290,14 +451,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -307,8 +477,9 @@ spec: 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. + 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 @@ -320,6 +491,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/apm.datadog.upbound.io_retentionfilters.yaml b/package/crds/apm.datadog.upbound.io_retentionfilters.yaml index f6b5786..3ada803 100644 --- a/package/crds/apm.datadog.upbound.io_retentionfilters.yaml +++ b/package/crds/apm.datadog.upbound.io_retentionfilters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: retentionfilters.apm.datadog.upbound.io spec: group: apm.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,101 +74,110 @@ spec: forProvider: properties: enabled: - description: (Boolean) the status of the retention filter. the - status of the retention filter. + 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. + 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 `"*"`. + description: |- + follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + The search query - follow the span search syntax, use `AND` between tags and `\` to escape special characters, use nanosecond for duration. 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`. + 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. + 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. + 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. Value must be between 0.00 and 1.00. + 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. Value must be between 0.00 and 1.00. + type: string + traceRate: + description: |- + (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. 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. + 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. + 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. + 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 `"*"`. + description: |- + follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + The search query - follow the span search syntax, use `AND` between tags and `\` to escape special characters, use nanosecond for duration. 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`. + 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. + 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. + 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. Value must be between 0.00 and 1.00. + 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. Value must be between 0.00 and 1.00. + type: string + traceRate: + description: |- + (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -175,9 +190,10 @@ spec: 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. + 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. @@ -187,21 +203,21 @@ spec: 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. + 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. + 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 @@ -211,17 +227,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -231,21 +249,21 @@ spec: 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. + 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. + 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 @@ -260,21 +278,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -285,14 +304,15 @@ spec: - 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. + 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. @@ -330,40 +350,43 @@ spec: atProvider: properties: enabled: - description: (Boolean) the status of the retention filter. the - status of the retention filter. + 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. + 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 `"*"`. + description: |- + follow the span search syntax, use AND between tags and \ to escape special characters, use nanosecond for duration. Defaults to "*". + The search query - follow the span search syntax, use `AND` between tags and `\` to escape special characters, use nanosecond for duration. 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`. + 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. + 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. + 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. Value must be between 0.00 and 1.00. + 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. Value must be between 0.00 and 1.00. + type: string + traceRate: + description: |- + (String) Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. + Sample rate to apply to traces with spans going through this retention filter as a string; a value of 1.0 keeps all traces matching the query. Value must be between 0.00 and 1.00. type: string type: object conditions: @@ -372,14 +395,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -389,8 +421,9 @@ spec: 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. + 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 @@ -402,6 +435,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/authentication.datadog.upbound.io_authnmappings.yaml b/package/crds/authentication.datadog.upbound.io_authnmappings.yaml new file mode 100644 index 0000000..c5da906 --- /dev/null +++ b/package/crds/authentication.datadog.upbound.io_authnmappings.yaml @@ -0,0 +1,545 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: authnmappings.authentication.datadog.upbound.io +spec: + group: authentication.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: AuthnMapping + listKind: AuthnMappingList + plural: authnmappings + singular: authnmapping + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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. Cannot be used in conjunction with team. + The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with `team`. + type: string + roleRef: + description: Reference to a Role in iam to populate role. + 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 + roleSelector: + description: Selector for a Role in iam to populate role. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + team: + description: |- + (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. + The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`. + 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. Cannot be used in conjunction with team. + The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with `team`. + type: string + roleRef: + description: Reference to a Role in iam to populate role. + 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 + roleSelector: + description: Selector for a Role in iam to populate role. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + team: + description: |- + (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. + The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`. + 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.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. Cannot be used in conjunction with team. + The ID of a role to attach to all users with the corresponding key and value. Cannot be used in conjunction with `team`. + type: string + team: + description: |- + (String) The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with role. + The ID of a team to add all users with the corresponding key and value to. Cannot be used in conjunction with `role`. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 index 3228d2f..5c2015e 100644 --- a/package/crds/cloud.datadog.upbound.io_configurationrules.yaml +++ b/package/crds/cloud.datadog.upbound.io_configurationrules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: configurationrules.cloud.datadog.upbound.io spec: group: cloud.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,165 +74,168 @@ spec: forProvider: properties: enabled: - description: (Boolean) Whether the cloud configuration rule is - enabled. Whether the cloud configuration rule is 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 + 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`. + 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. + 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. + description: |- + (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. + Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. 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. + 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. + 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. + description: |- + (List of String) This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. + This function will be deprecated soon. Use the notification rules function instead. 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. + 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. + 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. + 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`. + 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. + 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. + 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. + 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 + 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`. + 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. + 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. + description: |- + (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. + Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. 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. + 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. + 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. + description: |- + (List of String) This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. + This function will be deprecated soon. Use the notification rules function instead. 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. + 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. + 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. + 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`. + 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. + 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 @@ -234,19 +243,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -259,9 +270,10 @@ spec: 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. + 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. @@ -271,21 +283,21 @@ spec: 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. + 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. + 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 @@ -295,17 +307,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -315,21 +329,21 @@ spec: 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. + 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. + 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 @@ -344,21 +358,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -369,14 +384,15 @@ spec: - 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. + 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. @@ -422,33 +438,32 @@ spec: atProvider: properties: enabled: - description: (Boolean) Whether the cloud configuration rule is - enabled. Whether the cloud configuration rule is 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 + 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`. + 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. + 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. + description: |- + (List of String) Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. + Defaults to empty list. This function will be deprecated soon. Use the notification rules function instead. Fields to group by when generating signals, e.g. @resource. items: type: string type: array @@ -456,46 +471,48 @@ spec: 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. + 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. + 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. + description: |- + (List of String) This function will be deprecated soon. Use the notification rules function instead. Notification targets for signals. Defaults to empty list. + This function will be deprecated soon. Use the notification rules function instead. 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. + 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. + 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. + 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`. + 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. + 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 @@ -506,14 +523,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -523,8 +549,9 @@ spec: 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. + 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 @@ -536,6 +563,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/cloud.datadog.upbound.io_workloadsecurityagentrules.yaml b/package/crds/cloud.datadog.upbound.io_workloadsecurityagentrules.yaml deleted file mode 100644 index 6aae76b..0000000 --- a/package/crds/cloud.datadog.upbound.io_workloadsecurityagentrules.yaml +++ /dev/null @@ -1,356 +0,0 @@ ---- -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/dashboard.datadog.upbound.io_dashboardjsons.yaml b/package/crds/dashboard.datadog.upbound.io_dashboardjsons.yaml new file mode 100644 index 0000000..f544d35 --- /dev/null +++ b/package/crds/dashboard.datadog.upbound.io_dashboardjsons.yaml @@ -0,0 +1,395 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: dashboardjsons.dashboard.datadog.upbound.io +spec: + group: dashboard.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DashboardJSON + listKind: DashboardJSONList + plural: dashboardjsons + singular: dashboardjson + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/dashboard.datadog.upbound.io_dashboardlists.yaml b/package/crds/dashboard.datadog.upbound.io_dashboardlists.yaml new file mode 100644 index 0000000..0322d9f --- /dev/null +++ b/package/crds/dashboard.datadog.upbound.io_dashboardlists.yaml @@ -0,0 +1,402 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: dashboardlists.dashboard.datadog.upbound.io +spec: + group: dashboard.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DashboardList + listKind: DashboardListList + plural: dashboardlists + singular: dashboardlist + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/dashboard.datadog.upbound.io_powerpacks.yaml b/package/crds/dashboard.datadog.upbound.io_powerpacks.yaml new file mode 100644 index 0000000..8407cfb --- /dev/null +++ b/package/crds/dashboard.datadog.upbound.io_powerpacks.yaml @@ -0,0 +1,554 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: powerpacks.dashboard.datadog.upbound.io +spec: + group: dashboard.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Powerpack + listKind: PowerpackList + plural: powerpacks + singular: powerpack + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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. + 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 + 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. + 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 + 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. + 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 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/datadog.upbound.io_apikeys.yaml b/package/crds/datadog.upbound.io_apikeys.yaml deleted file mode 100644 index 848ead5..0000000 --- a/package/crds/datadog.upbound.io_apikeys.yaml +++ /dev/null @@ -1,310 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.13.0 - name: apikeys.datadog.upbound.io -spec: - group: datadog.upbound.io - names: - categories: - - crossplane - - managed - - datadog - kind: APIKey - listKind: APIKeyList - plural: apikeys - singular: apikey - 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: 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 - 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: APIKeySpec defines the desired state of APIKey - 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 API Key. Name for API 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 API Key. Name for API 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: 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 - 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_appkeys.yaml b/package/crds/datadog.upbound.io_appkeys.yaml deleted file mode 100644 index 81e1481..0000000 --- a/package/crds/datadog.upbound.io_appkeys.yaml +++ /dev/null @@ -1,314 +0,0 @@ ---- -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 deleted file mode 100644 index e870764..0000000 --- a/package/crds/datadog.upbound.io_authnmappings.yaml +++ /dev/null @@ -1,349 +0,0 @@ ---- -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_dashboardjsons.yaml b/package/crds/datadog.upbound.io_dashboardjsons.yaml deleted file mode 100644 index ef4ff85..0000000 --- a/package/crds/datadog.upbound.io_dashboardjsons.yaml +++ /dev/null @@ -1,359 +0,0 @@ ---- -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 deleted file mode 100644 index f9cb64b..0000000 --- a/package/crds/datadog.upbound.io_dashboardlists.yaml +++ /dev/null @@ -1,371 +0,0 @@ ---- -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 deleted file mode 100644 index 6bc652a..0000000 --- a/package/crds/datadog.upbound.io_downtimes.yaml +++ /dev/null @@ -1,681 +0,0 @@ ---- -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 deleted file mode 100644 index e0e86ad..0000000 --- a/package/crds/datadog.upbound.io_downtimeschedules.yaml +++ /dev/null @@ -1,711 +0,0 @@ ---- -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 deleted file mode 100644 index d304a32..0000000 --- a/package/crds/datadog.upbound.io_ipallowlists.yaml +++ /dev/null @@ -1,347 +0,0 @@ ---- -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 deleted file mode 100644 index 85128be..0000000 --- a/package/crds/datadog.upbound.io_monitorconfigpolicies.yaml +++ /dev/null @@ -1,380 +0,0 @@ ---- -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 deleted file mode 100644 index 78d287d..0000000 --- a/package/crds/datadog.upbound.io_monitorjsons.yaml +++ /dev/null @@ -1,323 +0,0 @@ ---- -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 deleted file mode 100644 index 32147fd..0000000 --- a/package/crds/datadog.upbound.io_monitors.yaml +++ /dev/null @@ -1,1877 +0,0 @@ ---- -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 deleted file mode 100644 index 741d1ea..0000000 --- a/package/crds/datadog.upbound.io_organizationsettings.yaml +++ /dev/null @@ -1,602 +0,0 @@ ---- -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 deleted file mode 100644 index 0a392da..0000000 --- a/package/crds/datadog.upbound.io_powerpacks.yaml +++ /dev/null @@ -1,535 +0,0 @@ ---- -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/datadog.upbound.io_providerconfigs.yaml b/package/crds/datadog.upbound.io_providerconfigs.yaml index 8cf14f9..7e44c6c 100644 --- a/package/crds/datadog.upbound.io_providerconfigs.yaml +++ b/package/crds/datadog.upbound.io_providerconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: providerconfigs.datadog.upbound.io spec: group: datadog.upbound.io @@ -32,14 +32,19 @@ spec: description: A ProviderConfig configures a Datadog provider. 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' + 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' + 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 @@ -50,8 +55,9 @@ spec: description: Credentials required to authenticate to this provider. properties: env: - description: Env is a reference to an environment variable that - contains credentials that must be used to connect to the provider. + description: |- + Env is a reference to an environment variable that contains credentials + that must be used to connect to the provider. properties: name: description: Name is the name of an environment variable. @@ -60,8 +66,9 @@ spec: - name type: object fs: - description: Fs is a reference to a filesystem location that contains - credentials that must be used to connect to the provider. + description: |- + Fs is a reference to a filesystem location that contains credentials that + must be used to connect to the provider. properties: path: description: Path is a filesystem path. @@ -70,8 +77,9 @@ spec: - path type: object secretRef: - description: A SecretRef is a reference to a secret key that contains - the credentials that must be used to connect to the provider. + description: |- + A SecretRef is a reference to a secret key that contains the credentials + that must be used to connect to the provider. properties: key: description: The key to select. @@ -109,14 +117,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -126,8 +143,9 @@ spec: 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. + 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 diff --git a/package/crds/datadog.upbound.io_providerconfigusages.yaml b/package/crds/datadog.upbound.io_providerconfigusages.yaml index 64e91dd..62b7298 100644 --- a/package/crds/datadog.upbound.io_providerconfigusages.yaml +++ b/package/crds/datadog.upbound.io_providerconfigusages.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: providerconfigusages.datadog.upbound.io spec: group: datadog.upbound.io @@ -37,14 +37,19 @@ spec: description: A ProviderConfigUsage indicates that a resource is using a ProviderConfig. 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' + 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' + 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 @@ -59,19 +64,21 @@ spec: 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. + 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. + 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 diff --git a/package/crds/datadog.upbound.io_restrictionpolicies.yaml b/package/crds/datadog.upbound.io_restrictionpolicies.yaml deleted file mode 100644 index beb97ae..0000000 --- a/package/crds/datadog.upbound.io_restrictionpolicies.yaml +++ /dev/null @@ -1,395 +0,0 @@ ---- -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 deleted file mode 100644 index f3e6dc0..0000000 --- a/package/crds/datadog.upbound.io_roles.yaml +++ /dev/null @@ -1,371 +0,0 @@ ---- -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 deleted file mode 100644 index 6488812..0000000 --- a/package/crds/datadog.upbound.io_rumapplications.yaml +++ /dev/null @@ -1,332 +0,0 @@ ---- -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 deleted file mode 100644 index 23270ef..0000000 --- a/package/crds/datadog.upbound.io_serviceaccountapplicationkeys.yaml +++ /dev/null @@ -1,340 +0,0 @@ ---- -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 deleted file mode 100644 index fe0eb8b..0000000 --- a/package/crds/datadog.upbound.io_serviceaccounts.yaml +++ /dev/null @@ -1,365 +0,0 @@ ---- -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 deleted file mode 100644 index 072e69a..0000000 --- a/package/crds/datadog.upbound.io_servicedefinitionyamls.yaml +++ /dev/null @@ -1,316 +0,0 @@ ---- -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 deleted file mode 100644 index 9940b50..0000000 --- a/package/crds/datadog.upbound.io_servicelevelobjectives.yaml +++ /dev/null @@ -1,973 +0,0 @@ ---- -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 deleted file mode 100644 index 03f91ed..0000000 --- a/package/crds/datadog.upbound.io_slocorrections.yaml +++ /dev/null @@ -1,441 +0,0 @@ ---- -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 deleted file mode 100644 index ca28d5b..0000000 --- a/package/crds/datadog.upbound.io_spansmetrics.yaml +++ /dev/null @@ -1,474 +0,0 @@ ---- -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/datadog.upbound.io_storeconfigs.yaml b/package/crds/datadog.upbound.io_storeconfigs.yaml index bbadfb6..b51f1bb 100644 --- a/package/crds/datadog.upbound.io_storeconfigs.yaml +++ b/package/crds/datadog.upbound.io_storeconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: storeconfigs.datadog.upbound.io spec: group: datadog.upbound.io @@ -35,14 +35,19 @@ spec: connection details. 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' + 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' + 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 @@ -50,24 +55,26 @@ spec: description: A StoreConfigSpec defines the desired state of a ProviderConfig. properties: defaultScope: - description: DefaultScope used for scoping secrets for "cluster-scoped" - resources. If store type is "Kubernetes", this would mean the default - namespace to store connection secrets for cluster scoped resources. + description: |- + DefaultScope used for scoping secrets for "cluster-scoped" resources. + If store type is "Kubernetes", this would mean the default namespace to + store connection secrets for cluster scoped resources. In case of "Vault", this would be used as the default parent path. Typically, should be set as Crossplane installation namespace. type: string kubernetes: - description: Kubernetes configures a Kubernetes secret store. If the - "type" is "Kubernetes" but no config provided, in cluster config + description: |- + Kubernetes configures a Kubernetes secret store. + If the "type" is "Kubernetes" but no config provided, in cluster config will be used. properties: auth: description: Credentials used to connect to the Kubernetes API. properties: env: - description: Env is a reference to an environment variable - that contains credentials that must be used to connect to - the provider. + description: |- + Env is a reference to an environment variable that contains credentials + that must be used to connect to the provider. properties: name: description: Name is the name of an environment variable. @@ -76,9 +83,9 @@ spec: - name type: object fs: - description: Fs is a reference to a filesystem location that - contains credentials that must be used to connect to the - provider. + description: |- + Fs is a reference to a filesystem location that contains credentials that + must be used to connect to the provider. properties: path: description: Path is a filesystem path. @@ -87,9 +94,9 @@ spec: - path type: object secretRef: - description: A SecretRef is a reference to a secret key that - contains the credentials that must be used to connect to - the provider. + description: |- + A SecretRef is a reference to a secret key that contains the credentials + that must be used to connect to the provider. properties: key: description: The key to select. @@ -145,9 +152,10 @@ spec: type: object type: default: Kubernetes - description: Type configures which secret store to be used. Only the - configuration block for this store will be used and others will - be ignored if provided. Default is Kubernetes. + description: |- + Type configures which secret store to be used. Only the configuration + block for this store will be used and others will be ignored if provided. + Default is Kubernetes. enum: - Kubernetes - Vault @@ -165,14 +173,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -182,8 +199,9 @@ spec: 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. + 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 diff --git a/package/crds/datadog.upbound.io_teamlinks.yaml b/package/crds/datadog.upbound.io_teamlinks.yaml deleted file mode 100644 index 6dd6767..0000000 --- a/package/crds/datadog.upbound.io_teamlinks.yaml +++ /dev/null @@ -1,354 +0,0 @@ ---- -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 deleted file mode 100644 index fbf4ac8..0000000 --- a/package/crds/datadog.upbound.io_teammemberships.yaml +++ /dev/null @@ -1,342 +0,0 @@ ---- -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 deleted file mode 100644 index 903f2a8..0000000 --- a/package/crds/datadog.upbound.io_teampermissionsettings.yaml +++ /dev/null @@ -1,359 +0,0 @@ ---- -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 deleted file mode 100644 index 31951ce..0000000 --- a/package/crds/datadog.upbound.io_teams.yaml +++ /dev/null @@ -1,355 +0,0 @@ ---- -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 deleted file mode 100644 index aa1447b..0000000 --- a/package/crds/datadog.upbound.io_users.yaml +++ /dev/null @@ -1,379 +0,0 @@ ---- -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 deleted file mode 100644 index 294ede7..0000000 --- a/package/crds/datadog.upbound.io_webhookcustomvariables.yaml +++ /dev/null @@ -1,355 +0,0 @@ ---- -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 deleted file mode 100644 index f42c20d..0000000 --- a/package/crds/datadog.upbound.io_webhooks.yaml +++ /dev/null @@ -1,365 +0,0 @@ ---- -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/iam.datadog.upbound.io_restrictionpolicies.yaml b/package/crds/iam.datadog.upbound.io_restrictionpolicies.yaml new file mode 100644 index 0000000..e883309 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_restrictionpolicies.yaml @@ -0,0 +1,426 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: restrictionpolicies.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: RestrictionPolicy + listKind: RestrictionPolicyList + plural: restrictionpolicies + singular: restrictionpolicy + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field. + An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field. + 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. + + Resources to define `resource_type` : + * [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access) + * [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources) + + Restrictions : + * 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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field. + An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field. + 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. + + Resources to define `resource_type` : + * [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access) + * [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources) + + Restrictions : + * 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, team, user, and org. Org ID can be obtained using a GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field. + An array of principals. A principal is a subject or group of subjects. Each principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`. Org ID can be obtained using a `GET /api/v2/current_user` API request. Find it in the `data.relationships.org.data.id` field. + 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. + + Resources to define `resource_type` : + * [List of supported resources](https://docs.datadoghq.com/account_management/rbac/granular_access) + * [Resource type definition](https://docs.datadoghq.com/api/latest/restriction-policies/#supported-resources) + + Restrictions : + * 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_roles.yaml b/package/crds/iam.datadog.upbound.io_roles.yaml new file mode 100644 index 0000000..568e2f0 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_roles.yaml @@ -0,0 +1,426 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: roles.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Role + listKind: RoleList + plural: roles + singular: role + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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: + defaultPermissionsOptOut: + description: |- + (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. + If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. + type: boolean + 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: + defaultPermissionsOptOut: + description: |- + (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. + If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. + type: boolean + 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: + defaultPermissionsOptOut: + description: |- + (Boolean) If set to true, the role does not have default (restricted) permissions unless they are explicitly set. + If set to `true`, the role does not have default (restricted) permissions unless they are explicitly set. + type: boolean + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_serviceaccountapplicationkeys.yaml b/package/crds/iam.datadog.upbound.io_serviceaccountapplicationkeys.yaml new file mode 100644 index 0000000..196e427 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_serviceaccountapplicationkeys.yaml @@ -0,0 +1,551 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: serviceaccountapplicationkeys.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceAccountApplicationKey + listKind: ServiceAccountApplicationKeyList + plural: serviceaccountapplicationkeys + singular: serviceaccountapplicationkey + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + scopes: + description: |- + (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + items: + type: string + type: array + x-kubernetes-list-type: set + serviceAccountId: + description: |- + (String) ID of the service account that owns this key. + ID of the service account that owns this key. + type: string + serviceAccountIdRef: + description: Reference to a ServiceAccount in iam to populate + serviceAccountId. + 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 + serviceAccountIdSelector: + description: Selector for a ServiceAccount in iam to populate + serviceAccountId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + 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: + name: + description: |- + (String) Name of the application key. + Name of the application key. + type: string + scopes: + description: |- + (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + items: + type: string + type: array + x-kubernetes-list-type: set + serviceAccountId: + description: |- + (String) ID of the service account that owns this key. + ID of the service account that owns this key. + type: string + serviceAccountIdRef: + description: Reference to a ServiceAccount in iam to populate + serviceAccountId. + 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 + serviceAccountIdSelector: + description: Selector for a ServiceAccount in iam to populate + serviceAccountId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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: 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 + scopes: + description: |- + (Set of String) Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + Authorization scopes for the Application Key. Application Keys configured with no scopes have full access. + items: + type: string + type: array + x-kubernetes-list-type: set + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_serviceaccounts.yaml b/package/crds/iam.datadog.upbound.io_serviceaccounts.yaml new file mode 100644 index 0000000..882118b --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_serviceaccounts.yaml @@ -0,0 +1,556 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: serviceaccounts.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceAccount + listKind: ServiceAccountList + plural: serviceaccounts + singular: serviceaccount + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 of role IDs to assign to the service account. + A list of role IDs to assign to the service account. + items: + type: string + type: array + x-kubernetes-list-type: set + rolesRefs: + description: References to Role in iam to populate roles. + items: + description: A Reference to a named object. + 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 + type: array + rolesSelector: + description: Selector for a list of Role in iam to populate roles. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + 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: + 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 of role IDs to assign to the service account. + A list of role IDs to assign to the service account. + items: + type: string + type: array + x-kubernetes-list-type: set + rolesRefs: + description: References to Role in iam to populate roles. + items: + description: A Reference to a named object. + 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 + type: array + rolesSelector: + description: Selector for a list of Role in iam to populate roles. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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 of role IDs to assign to the service account. + A list of 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_teamlinks.yaml b/package/crds/iam.datadog.upbound.io_teamlinks.yaml new file mode 100644 index 0000000..4a6a415 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_teamlinks.yaml @@ -0,0 +1,544 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: teamlinks.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TeamLink + listKind: TeamLinkList + plural: teamlinks + singular: teamlink + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + teamIdRef: + description: Reference to a Team in iam to populate teamId. + 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 + teamIdSelector: + description: Selector for a Team in iam to populate teamId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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 + teamIdRef: + description: Reference to a Team in iam to populate teamId. + 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 + teamIdSelector: + description: Selector for a Team in iam to populate teamId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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.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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_teammemberships.yaml b/package/crds/iam.datadog.upbound.io_teammemberships.yaml new file mode 100644 index 0000000..786de4d --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_teammemberships.yaml @@ -0,0 +1,669 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: teammemberships.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TeamMembership + listKind: TeamMembershipList + plural: teammemberships + singular: teammembership + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + teamIdRef: + description: Reference to a Team in iam to populate teamId. + 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 + teamIdSelector: + description: Selector for a Team in iam to populate teamId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + userId: + description: |- + (String) The ID of the user. + The ID of the user. + type: string + userIdRef: + description: Reference to a User in iam to populate userId. + 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 + userIdSelector: + description: Selector for a User in iam to populate userId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + 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: + 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 + teamIdRef: + description: Reference to a Team in iam to populate teamId. + 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 + teamIdSelector: + description: Selector for a Team in iam to populate teamId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + userId: + description: |- + (String) The ID of the user. + The ID of the user. + type: string + userIdRef: + description: Reference to a User in iam to populate userId. + 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 + userIdSelector: + description: Selector for a User in iam to populate userId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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: 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_teampermissionsettings.yaml b/package/crds/iam.datadog.upbound.io_teampermissionsettings.yaml new file mode 100644 index 0000000..87eb468 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_teampermissionsettings.yaml @@ -0,0 +1,445 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: teampermissionsettings.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: TeamPermissionSetting + listKind: TeamPermissionSettingList + plural: teampermissionsettings + singular: teampermissionsetting + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: TeamPermissionSetting is the Schema for the TeamPermissionSettings + API. Provides a Datadog TeamPermissionSetting resource. This can be used + to manage Datadog team_permission_setting. + 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 + teamIdRef: + description: Reference to a Team in iam to populate teamId. + 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 + teamIdSelector: + description: Selector for a Team in iam to populate teamId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + value: + description: |- + (String) The action value. Valid values are dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. + The action value. Valid values are dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values. + type: string + required: + - action + 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: + value: + description: |- + (String) The action value. Valid values are dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. + The action value. Valid values are dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values. + 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.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 dependent on the action. manage_membership action allows admins, members, organization, user_access_manage values. edit action allows admins, members, teams_manage values. + The action value. Valid values are dependent on the action. `manage_membership` action allows `admins`, `members`, `organization`, `user_access_manage` values. `edit` action allows `admins`, `members`, `teams_manage` values. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_teams.yaml b/package/crds/iam.datadog.upbound.io_teams.yaml new file mode 100644 index 0000000..49ec344 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_teams.yaml @@ -0,0 +1,400 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: teams.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Team + listKind: TeamList + plural: teams + singular: team + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/iam.datadog.upbound.io_users.yaml b/package/crds/iam.datadog.upbound.io_users.yaml new file mode 100644 index 0000000..a736116 --- /dev/null +++ b/package/crds/iam.datadog.upbound.io_users.yaml @@ -0,0 +1,580 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: users.iam.datadog.upbound.io +spec: + group: iam.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: User + listKind: UserList + plural: users + singular: user + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + type: string + roles: + description: |- + (Set of String) A list of role IDs to assign to the user. + A list of role IDs to assign to the user. + items: + type: string + type: array + x-kubernetes-list-type: set + rolesRefs: + description: References to Role in iam to populate roles. + items: + description: A Reference to a named object. + 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 + type: array + rolesSelector: + description: Selector for a list of Role in iam to populate roles. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + type: string + roles: + description: |- + (Set of String) A list of role IDs to assign to the user. + A list of role IDs to assign to the user. + items: + type: string + type: array + x-kubernetes-list-type: set + rolesRefs: + description: References to Role in iam to populate roles. + items: + description: A Reference to a named object. + 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 + type: array + rolesSelector: + description: Selector for a list of Role in iam to populate roles. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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) User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + User's name. Should be set only for password authentication, as it is overridden by Google or SAML authentication. + type: string + roles: + description: |- + (Set of String) A list of role IDs to assign to the user. + A list of 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/integration.datadog.upbound.io_aws.yaml b/package/crds/integration.datadog.upbound.io_aws.yaml new file mode 100644 index 0000000..31ae5a7 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_aws.yaml @@ -0,0 +1,567 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: aws.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Aws + listKind: AwsList + plural: aws + singular: aws + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Aws is the Schema for the Awss API. !>This resource is deprecated + - use the datadog_integration_aws_account resource instead. 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 + extendedResourceCollectionEnabled: + description: |- + (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. + Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`. + 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 + metricsCollectionEnabled: + description: |- + (String) Whether Datadog collects metrics for this AWS account. + Whether Datadog collects metrics for this AWS account. + type: string + resourceCollectionEnabled: + description: |- + (String, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. + Whether Datadog collects a standard set of resources from your AWS account. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`. + 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 + extendedResourceCollectionEnabled: + description: |- + (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. + Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`. + 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 + metricsCollectionEnabled: + description: |- + (String) Whether Datadog collects metrics for this AWS account. + Whether Datadog collects metrics for this AWS account. + type: string + resourceCollectionEnabled: + description: |- + (String, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. + Whether Datadog collects a standard set of resources from your AWS account. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`. + 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 + 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 + extendedResourceCollectionEnabled: + description: |- + (String) Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for cspm_resource_collection_enabled. + Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for `cspm_resource_collection_enabled`. + type: string + 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, Deprecated) Whether Datadog collects a standard set of resources from your AWS account. Deprecated. Deprecated in favor of extended_resource_collection_enabled. + Whether Datadog collects a standard set of resources from your AWS account. **Deprecated.** Deprecated in favor of `extended_resource_collection_enabled`. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 deleted file mode 100644 index 99590d3..0000000 --- a/package/crds/integration.datadog.upbound.io_awses.yaml +++ /dev/null @@ -1,530 +0,0 @@ ---- -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 index 1583de6..a39045a 100644 --- a/package/crds/integration.datadog.upbound.io_awseventbridges.yaml +++ b/package/crds/integration.datadog.upbound.io_awseventbridges.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: awseventbridges.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -12,57 +12,63 @@ spec: - crossplane - managed - datadog - kind: AWSEventBridge - listKind: AWSEventBridgeList + 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: - description: AWSEventBridge is the Schema for the AWSEventBridges API. Provides + 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' + 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' + 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 + 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' + 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 @@ -70,77 +76,78 @@ spec: forProvider: properties: accountId: - description: (String) Your AWS Account ID without dashes. Your - AWS Account ID without dashes. + 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`. + 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. + 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). + 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. + 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. + 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`. + 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. + 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). + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -153,9 +160,10 @@ spec: 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. + 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. @@ -165,21 +173,21 @@ spec: 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. + 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. + 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 @@ -189,17 +197,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -209,21 +219,21 @@ spec: 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. + 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. + 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 @@ -238,21 +248,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -263,14 +274,15 @@ spec: - 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. + 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. @@ -299,33 +311,32 @@ spec: || ''Update'' in self.managementPolicies) || has(self.forProvider.region) || (has(self.initProvider) && has(self.initProvider.region))' status: - description: AWSEventBridgeStatus defines the observed state of AWSEventBridge. + 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. + 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`. + 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. + 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). + 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: @@ -334,14 +345,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -351,8 +371,9 @@ spec: 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. + 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 @@ -364,6 +385,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml b/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml index 0425b65..ae27b9b 100644 --- a/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml +++ b/package/crds/integration.datadog.upbound.io_awslambdaarns.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: awslambdaarns.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -12,58 +12,69 @@ spec: - crossplane - managed - datadog - kind: AWSLambdaARN - listKind: AWSLambdaARNList + 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + description: 'AwsLambdaArn is the Schema for the AwsLambdaArns API. !>This + resource is deprecated - use the datadog_integration_aws_account resource + instead. 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. Note: If you are using AWS GovCloud + or the AWS China* region, update the lambda_arn parameter for your environment. + *All use of Datadog Services in (or in connection with environments within) + mainland China is subject to the disclaimer published in the Restricted + Service Locations section on our website.' 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' + 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' + 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 + 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' + 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 @@ -71,51 +82,58 @@ spec: forProvider: properties: accountId: - description: (String) Your AWS Account ID without dashes. Your - AWS Account ID without dashes. + 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. + 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. + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -128,9 +146,10 @@ spec: 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. + 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. @@ -140,21 +159,21 @@ spec: 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. + 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. + 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 @@ -164,17 +183,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -184,21 +205,21 @@ spec: 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. + 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. + 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 @@ -213,21 +234,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -238,14 +260,15 @@ spec: - 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. + 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. @@ -270,19 +293,21 @@ spec: || ''Update'' in self.managementPolicies) || has(self.forProvider.lambdaArn) || (has(self.initProvider) && has(self.initProvider.lambdaArn))' status: - description: AWSLambdaARNStatus defines the observed state of AWSLambdaARN. + 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. + 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. + description: |- + (String) The ARN of the Datadog forwarder Lambda. The ARN of the Datadog forwarder Lambda. type: string type: object @@ -292,14 +317,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -309,8 +343,9 @@ spec: 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. + 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 @@ -322,6 +357,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_awslogcollections.yaml b/package/crds/integration.datadog.upbound.io_awslogcollections.yaml index 95af835..9bc710c 100644 --- a/package/crds/integration.datadog.upbound.io_awslogcollections.yaml +++ b/package/crds/integration.datadog.upbound.io_awslogcollections.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: awslogcollections.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -12,57 +12,64 @@ spec: - crossplane - managed - datadog - kind: AWSLogCollection - listKind: AWSLogCollectionList + 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + description: AwsLogCollection is the Schema for the AwsLogCollections API. + !>This resource is deprecated - use the datadog_integration_aws_account + resource instead. 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' + 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' + 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 + 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' + 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 @@ -70,41 +77,40 @@ spec: forProvider: properties: accountId: - description: (String) Your AWS Account ID without dashes. Your - AWS Account ID without dashes. + 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. + 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. + 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. + 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. + 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 @@ -112,19 +118,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -137,9 +145,10 @@ spec: 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. + 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. @@ -149,21 +158,21 @@ spec: 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. + 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. + 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 @@ -173,17 +182,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -193,21 +204,21 @@ spec: 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. + 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. + 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 @@ -222,21 +233,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -247,14 +259,15 @@ spec: - 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. + 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. @@ -279,23 +292,22 @@ spec: || ''Update'' in self.managementPolicies) || has(self.forProvider.services) || (has(self.initProvider) && has(self.initProvider.services))' status: - description: AWSLogCollectionStatus defines the observed state of AWSLogCollection. + 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. + 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. + 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 @@ -306,14 +318,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -323,8 +344,9 @@ spec: 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. + 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 @@ -336,6 +358,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_awstagfilters.yaml b/package/crds/integration.datadog.upbound.io_awstagfilters.yaml index 9bd42b1..ec5194f 100644 --- a/package/crds/integration.datadog.upbound.io_awstagfilters.yaml +++ b/package/crds/integration.datadog.upbound.io_awstagfilters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: awstagfilters.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -12,56 +12,63 @@ spec: - crossplane - managed - datadog - kind: AWSTagFilter - listKind: AWSTagFilterList + 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + description: AwsTagFilter is the Schema for the AwsTagFilters API. !>This + resource is deprecated - use the datadog_integration_aws_account resource + instead. 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' + 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' + 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 + 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' + 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 @@ -69,63 +76,68 @@ spec: forProvider: properties: accountId: - description: (String) Your AWS Account ID without dashes. Your - AWS Account ID without dashes. + 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`. + description: |- + (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. + The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`, `step_functions`. type: string tagFilterStr: - description: (String) The tag filter string. The tag filter string. + 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. + 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. + 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`. + description: |- + (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. + The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`, `step_functions`. type: string tagFilterStr: - description: (String) The tag filter string. The tag filter string. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -138,9 +150,10 @@ spec: 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. + 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. @@ -150,21 +163,21 @@ spec: 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. + 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. + 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 @@ -174,17 +187,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -194,21 +209,21 @@ spec: 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. + 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. + 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 @@ -223,21 +238,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -248,14 +264,15 @@ spec: - 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. + 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. @@ -284,26 +301,27 @@ spec: || ''Update'' in self.managementPolicies) || has(self.forProvider.tagFilterStr) || (has(self.initProvider) && has(self.initProvider.tagFilterStr))' status: - description: AWSTagFilterStatus defines the observed state of AWSTagFilter. + 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. + 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`. + description: |- + (String) The namespace associated with the tag filter entry. Valid values are elb, application_elb, sqs, rds, custom, network_elb, lambda, step_functions. + The namespace associated with the tag filter entry. Valid values are `elb`, `application_elb`, `sqs`, `rds`, `custom`, `network_elb`, `lambda`, `step_functions`. type: string tagFilterStr: - description: (String) The tag filter string. The tag filter string. + description: |- + (String) The tag filter string. + The tag filter string. type: string type: object conditions: @@ -312,14 +330,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -329,8 +356,9 @@ spec: 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. + 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 @@ -342,6 +370,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_azures.yaml b/package/crds/integration.datadog.upbound.io_azures.yaml index 76f404c..f6ac643 100644 --- a/package/crds/integration.datadog.upbound.io_azures.yaml +++ b/package/crds/integration.datadog.upbound.io_azures.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: azures.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: Azure is the Schema for the Azures API. Provides a Datadog - @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,34 +75,24 @@ spec: 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 `""`. + 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`. + 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. + 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. + 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. @@ -113,158 +109,198 @@ spec: - 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 `""`. + 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`.' + 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`. + 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 `""`. + 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 + metricsEnabled: + description: |- + (Boolean) Enable Azure metrics for your organization. Defaults to true. + Enable Azure metrics for your organization. Defaults to `true`. + type: boolean + metricsEnabledDefault: + description: |- + (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`. + type: boolean 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. + 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 + resourceProviderConfigs: + description: |- + (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) + Configuration settings applied to resources from the specified Azure resource providers. + items: + properties: + metricsEnabled: + description: (Boolean) Enable Azure metrics for your organization. + Defaults to true. + type: boolean + namespace: + description: (String) + type: string + type: object + type: array tenantName: - description: (String) Your Azure Active Directory ID. Your Azure - Active Directory ID. + description: |- + (String) Your Azure Active Directory ID. + Your Azure Active Directory ID. type: string + usageMetricsEnabled: + description: |- + (Boolean) Enable azure.usage metrics for your organization. Defaults to true. + Enable azure.usage metrics for your organization. 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. + 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 `""`. + 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`. + 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. + 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 `""`. + 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`.' + 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`. + 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 `""`. + 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 + metricsEnabled: + description: |- + (Boolean) Enable Azure metrics for your organization. Defaults to true. + Enable Azure metrics for your organization. Defaults to `true`. + type: boolean + metricsEnabledDefault: + description: |- + (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`. + type: boolean 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. + 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 + resourceProviderConfigs: + description: |- + (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) + Configuration settings applied to resources from the specified Azure resource providers. + items: + properties: + metricsEnabled: + description: (Boolean) Enable Azure metrics for your organization. + Defaults to true. + type: boolean + namespace: + description: (String) + type: string + type: object + type: array tenantName: - description: (String) Your Azure Active Directory ID. Your Azure - Active Directory ID. + description: |- + (String) Your Azure Active Directory ID. + Your Azure Active Directory ID. type: string + usageMetricsEnabled: + description: |- + (Boolean) Enable azure.usage metrics for your organization. Defaults to true. + Enable azure.usage metrics for your organization. Defaults to `true`. + type: boolean + required: + - clientSecretSecretRef 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -277,9 +313,10 @@ spec: 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. + 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. @@ -289,21 +326,21 @@ spec: 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. + 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. + 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 @@ -313,17 +350,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -333,21 +372,21 @@ spec: 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. + 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. + 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 @@ -362,21 +401,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -387,14 +427,15 @@ spec: - 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. + 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. @@ -427,82 +468,85 @@ spec: 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 `""`. + 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`. + 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. + 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 `""`. + 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`.' + 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`. + 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 `""`. + 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 + metricsEnabled: + description: |- + (Boolean) Enable Azure metrics for your organization. Defaults to true. + Enable Azure metrics for your organization. Defaults to `true`. + type: boolean + metricsEnabledDefault: + description: |- + (Boolean) Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to true. + Enable Azure metrics for your organization for resource providers where no resource provider config is specified. Defaults to `true`. + type: boolean 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. + 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 + resourceProviderConfigs: + description: |- + (List of Object) Configuration settings applied to resources from the specified Azure resource providers. (see below for nested schema) + Configuration settings applied to resources from the specified Azure resource providers. + items: + properties: + metricsEnabled: + description: (Boolean) Enable Azure metrics for your organization. + Defaults to true. + type: boolean + namespace: + description: (String) + type: string + type: object + type: array tenantName: - description: (String) Your Azure Active Directory ID. Your Azure - Active Directory ID. + description: |- + (String) Your Azure Active Directory ID. + Your Azure Active Directory ID. type: string + usageMetricsEnabled: + description: |- + (Boolean) Enable azure.usage metrics for your organization. Defaults to true. + Enable azure.usage metrics for your organization. Defaults to `true`. + type: boolean type: object conditions: description: Conditions of the resource. @@ -510,14 +554,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -527,8 +580,9 @@ spec: 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. + 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 @@ -540,6 +594,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml b/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml index 7f96180..d13c9a0 100644 --- a/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml +++ b/package/crds/integration.datadog.upbound.io_cloudflareaccounts.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: cloudflareaccounts.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,34 +19,39 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + to create and manage Datadog integration_cloudflare_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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,9 +75,9 @@ spec: forProvider: properties: apiKeySecretRef: - description: (String, Sensitive) The API key (or token) for the - Cloudflare account. The API key (or token) for the Cloudflare - account. + 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. @@ -88,57 +94,95 @@ spec: - 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. + 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. + description: |- + (String) The name of the Cloudflare account. + The name of the Cloudflare account. type: string + resources: + description: |- + (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). + An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`). + 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. + 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: + 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. + 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. + description: |- + (String) The name of the Cloudflare account. + The name of the Cloudflare account. type: string + resources: + description: |- + (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). + An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`). + items: + type: string + type: array + x-kubernetes-list-type: set + required: + - apiKeySecretRef 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -151,9 +195,10 @@ spec: 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. + 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. @@ -163,21 +208,21 @@ spec: 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. + 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. + 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 @@ -187,17 +232,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -207,21 +254,21 @@ spec: 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. + 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. + 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 @@ -236,21 +283,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -261,14 +309,15 @@ spec: - 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. + 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. @@ -297,19 +346,26 @@ spec: 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. + 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. + description: |- + (String) The name of the Cloudflare account. + The name of the Cloudflare account. type: string + resources: + description: |- + (Set of String) An allowlist of resources to pull metrics for. Includes web, dns, lb (load balancer), and worker). + An allowlist of resources to pull metrics for. Includes `web`, `dns`, `lb` (load balancer), and `worker`). + items: + type: string + type: array + x-kubernetes-list-type: set type: object conditions: description: Conditions of the resource. @@ -317,14 +373,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -334,8 +399,9 @@ spec: 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. + 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 @@ -347,6 +413,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml b/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml index 85ee0e4..7f2297e 100644 --- a/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml +++ b/package/crds/integration.datadog.upbound.io_confluentaccounts.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: confluentaccounts.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,34 +19,39 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + to create and manage Datadog integration_confluent_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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,13 +75,14 @@ spec: forProvider: properties: apiKey: - description: (String) The API key associated with your Confluent - account. The API key associated with your Confluent account. + 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. + 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. @@ -92,55 +99,80 @@ spec: - 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. + 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. + 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. + 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. + 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 + required: + - apiSecretSecretRef 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -153,9 +185,10 @@ spec: 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. + 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. @@ -165,21 +198,21 @@ spec: 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. + 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. + 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 @@ -189,17 +222,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -209,21 +244,21 @@ spec: 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. + 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. + 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 @@ -238,21 +273,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -263,14 +299,15 @@ spec: - 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. + 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. @@ -299,16 +336,17 @@ spec: atProvider: properties: apiKey: - description: (String) The API key associated with your Confluent - account. The API key associated with your Confluent account. + 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. + 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 @@ -320,14 +358,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -337,8 +384,9 @@ spec: 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. + 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 @@ -350,6 +398,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_confluentresources.yaml b/package/crds/integration.datadog.upbound.io_confluentresources.yaml index 560085a..5b5a6e6 100644 --- a/package/crds/integration.datadog.upbound.io_confluentresources.yaml +++ b/package/crds/integration.datadog.upbound.io_confluentresources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: confluentresources.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,34 +19,39 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + to create and manage Datadog integration_confluent_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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,68 +75,223 @@ spec: forProvider: properties: accountId: - description: (String) Confluent Account ID. Confluent Account - ID. + description: |- + (String) Confluent Account ID. + Confluent Account ID. type: string + accountIdRef: + description: Reference to a ConfluentAccount in integration to + populate accountId. + 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 + accountIdSelector: + description: Selector for a ConfluentAccount in integration to + populate accountId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object 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`. + 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. + 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`. + 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. + 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. + 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. + description: |- + (String) Confluent Account ID. + Confluent Account ID. type: string + accountIdRef: + description: Reference to a ConfluentAccount in integration to + populate accountId. + 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 + accountIdSelector: + description: Selector for a ConfluentAccount in integration to + populate accountId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object 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`. + 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. + 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`. + 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. + 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 @@ -139,19 +300,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -164,9 +327,10 @@ spec: 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. + 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. @@ -176,21 +340,21 @@ spec: 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. + 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. + 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 @@ -200,17 +364,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -220,21 +386,21 @@ spec: 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. + 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. + 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 @@ -249,21 +415,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -274,14 +441,15 @@ spec: - 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. + 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. @@ -297,10 +465,6 @@ spec: - 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) @@ -311,31 +475,32 @@ spec: atProvider: properties: accountId: - description: (String) Confluent Account ID. Confluent Account - ID. + 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`. + 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. + 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`. + 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. + 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 @@ -347,14 +512,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -364,8 +538,9 @@ spec: 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. + 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 @@ -377,6 +552,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml b/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml index 64a1b26..3fb2a42 100644 --- a/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml +++ b/package/crds/integration.datadog.upbound.io_fastlyaccounts.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: fastlyaccounts.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,34 +19,39 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + and manage Datadog integration_fastly_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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,51 +75,58 @@ spec: forProvider: properties: apiKey: - description: (String) The API key for the Fastly account. The - API key for the Fastly account. + 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. + 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. + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -126,9 +139,10 @@ spec: 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. + 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. @@ -138,21 +152,21 @@ spec: 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. + 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. + 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 @@ -162,17 +176,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -182,21 +198,21 @@ spec: 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. + 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. + 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 @@ -211,21 +227,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -236,14 +253,15 @@ spec: - 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. + 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. @@ -273,15 +291,17 @@ spec: atProvider: properties: apiKey: - description: (String) The API key for the Fastly account. The - API key for the Fastly account. + 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. + description: |- + (String) The name of the Fastly account. + The name of the Fastly account. type: string type: object conditions: @@ -290,14 +310,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -307,8 +336,9 @@ spec: 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. + 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 @@ -320,6 +350,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_fastlyservices.yaml b/package/crds/integration.datadog.upbound.io_fastlyservices.yaml index b83aafd..c976e8a 100644 --- a/package/crds/integration.datadog.upbound.io_fastlyservices.yaml +++ b/package/crds/integration.datadog.upbound.io_fastlyservices.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: fastlyservices.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,34 +19,39 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + and manage Datadog integration_fastly_service. 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,14 +75,94 @@ spec: forProvider: properties: accountId: - description: (String) Fastly Account id. Fastly Account id. + description: |- + (String) Fastly Account id. + Fastly Account id. type: string + accountIdRef: + description: Reference to a FastlyAccount in integration to populate + accountId. + 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 + accountIdSelector: + description: Selector for a FastlyAccount in integration to populate + accountId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object serviceId: - description: (String) The ID of the Fastly service. The ID of - the Fastly service. + 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. + description: |- + (Set of String) A list of tags for the Fastly service. A list of tags for the Fastly service. items: type: string @@ -84,26 +170,107 @@ spec: 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. + 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. + description: |- + (String) Fastly Account id. + Fastly Account id. type: string + accountIdRef: + description: Reference to a FastlyAccount in integration to populate + accountId. + 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 + accountIdSelector: + description: Selector for a FastlyAccount in integration to populate + accountId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object serviceId: - description: (String) The ID of the Fastly service. The ID of - the Fastly service. + 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. + description: |- + (Set of String) A list of tags for the Fastly service. A list of tags for the Fastly service. items: type: string @@ -113,19 +280,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -138,9 +307,10 @@ spec: 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. + 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. @@ -150,21 +320,21 @@ spec: 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. + 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. + 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 @@ -174,17 +344,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -194,21 +366,21 @@ spec: 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. + 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. + 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 @@ -223,21 +395,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -248,14 +421,15 @@ spec: - 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. + 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. @@ -281,17 +455,21 @@ spec: atProvider: properties: accountId: - description: (String) Fastly Account id. Fastly Account id. + 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. + 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. + description: |- + (Set of String) A list of tags for the Fastly service. A list of tags for the Fastly service. items: type: string @@ -304,14 +482,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -321,8 +508,9 @@ spec: 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. + 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 @@ -334,6 +522,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_gcps.yaml b/package/crds/integration.datadog.upbound.io_gcps.yaml index 3f3e9c7..eda7543 100644 --- a/package/crds/integration.datadog.upbound.io_gcps.yaml +++ b/package/crds/integration.datadog.upbound.io_gcps.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: gcps.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,35 +19,40 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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. + 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' + 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' + 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 @@ -56,13 +61,14 @@ spec: 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' + 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 @@ -70,40 +76,57 @@ spec: 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`. + 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. + 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. + description: |- + (String) Your ID found in your JSON service account key. + Your ID found in your JSON service account key. type: string + cloudRunRevisionFilters: + description: |- + (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + items: + type: string + type: array + x-kubernetes-list-type: set 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`. + description: |- + (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. Defaults to false. + Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. 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. + 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. Defaults to "". + 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. Defaults to `""`. type: string + isResourceChangeCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + When enabled, Datadog scans for all resource change data in your Google Cloud environment. + type: boolean + isSecurityCommandCenterEnabled: + description: |- + (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + type: boolean 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. + 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. + 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. @@ -120,76 +143,127 @@ spec: - 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. + 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 + resourceCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + When enabled, Datadog scans for all resources in your GCP environment. + 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. + 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`. + 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. + 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. + description: |- + (String) Your ID found in your JSON service account key. + Your ID found in your JSON service account key. type: string + cloudRunRevisionFilters: + description: |- + (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + items: + type: string + type: array + x-kubernetes-list-type: set 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`. + description: |- + (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. Defaults to false. + Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. 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. + 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. Defaults to "". + 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. Defaults to `""`. type: string + isResourceChangeCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + When enabled, Datadog scans for all resource change data in your Google Cloud environment. + type: boolean + isSecurityCommandCenterEnabled: + description: |- + (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + type: boolean 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. + 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. + 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 + resourceCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + When enabled, Datadog scans for all resources in your GCP environment. + type: boolean + required: + - privateKeySecretRef 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -202,9 +276,10 @@ spec: 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. + 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. @@ -214,21 +289,21 @@ spec: 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. + 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. + 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 @@ -238,17 +313,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -258,21 +335,21 @@ spec: 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. + 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. + 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 @@ -287,21 +364,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -312,14 +390,15 @@ spec: - 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. + 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. @@ -360,44 +439,66 @@ spec: 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`. + 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. + 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. + description: |- + (String) Your ID found in your JSON service account key. + Your ID found in your JSON service account key. type: string + cloudRunRevisionFilters: + description: |- + (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + items: + type: string + type: array + x-kubernetes-list-type: set 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`. + description: |- + (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. Defaults to false. + Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. 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. + 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. Defaults to "". + 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. Defaults to `""`. type: string id: description: (String) The ID of this resource. type: string + isResourceChangeCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + When enabled, Datadog scans for all resource change data in your Google Cloud environment. + type: boolean + isSecurityCommandCenterEnabled: + description: |- + (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + type: boolean 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. + 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. + 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 + resourceCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + When enabled, Datadog scans for all resources in your GCP environment. + type: boolean type: object conditions: description: Conditions of the resource. @@ -405,14 +506,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -422,8 +532,9 @@ spec: 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. + 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 @@ -435,6 +546,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_gcpsts.yaml b/package/crds/integration.datadog.upbound.io_gcpsts.yaml new file mode 100644 index 0000000..b50d412 --- /dev/null +++ b/package/crds/integration.datadog.upbound.io_gcpsts.yaml @@ -0,0 +1,557 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: gcpsts.integration.datadog.upbound.io +spec: + group: integration.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: GCPSts + listKind: GCPStsList + plural: gcpsts + singular: gcpsts + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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: + accountTags: + description: |- + (Set of String) Tags to be associated with GCP metrics and service checks from your account. + Tags to be associated with GCP metrics and service checks from your account. + items: + type: string + type: array + x-kubernetes-list-type: set + 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 + cloudRunRevisionFilters: + description: |- + (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + items: + type: string + type: array + x-kubernetes-list-type: set + hostFilters: + description: |- + (Set of String) Your Host Filters. + Your Host Filters. + items: + type: string + type: array + x-kubernetes-list-type: set + isCspmEnabled: + description: |- + (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. + type: boolean + isPerProjectQuotaEnabled: + description: |- + Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + type: boolean + isResourceChangeCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + When enabled, Datadog scans for all resource change data in your Google Cloud environment. + type: boolean + isSecurityCommandCenterEnabled: + description: |- + (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + type: boolean + metricNamespaceConfigs: + description: |- + (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + Configuration for a GCP metric namespace. + items: + properties: + disabled: + description: (Boolean) + type: boolean + id: + description: (String) The ID of this resource. + type: string + type: object + type: array + resourceCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + When enabled, Datadog scans for all resources in your GCP environment. + 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: + accountTags: + description: |- + (Set of String) Tags to be associated with GCP metrics and service checks from your account. + Tags to be associated with GCP metrics and service checks from your account. + items: + type: string + type: array + x-kubernetes-list-type: set + 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 + cloudRunRevisionFilters: + description: |- + (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + items: + type: string + type: array + x-kubernetes-list-type: set + hostFilters: + description: |- + (Set of String) Your Host Filters. + Your Host Filters. + items: + type: string + type: array + x-kubernetes-list-type: set + isCspmEnabled: + description: |- + (Boolean) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. + type: boolean + isPerProjectQuotaEnabled: + description: |- + Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + type: boolean + isResourceChangeCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + When enabled, Datadog scans for all resource change data in your Google Cloud environment. + type: boolean + isSecurityCommandCenterEnabled: + description: |- + (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + type: boolean + metricNamespaceConfigs: + description: |- + (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + Configuration for a GCP metric namespace. + items: + properties: + disabled: + description: (Boolean) + type: boolean + id: + description: (String) The ID of this resource. + type: string + type: object + type: array + resourceCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + When enabled, Datadog scans for all resources in your GCP environment. + 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: + accountTags: + description: |- + (Set of String) Tags to be associated with GCP metrics and service checks from your account. + Tags to be associated with GCP metrics and service checks from your account. + items: + type: string + type: array + x-kubernetes-list-type: set + 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 + cloudRunRevisionFilters: + description: |- + (Set of String) Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + Tags to filter which Cloud Run revisions are imported into Datadog. Only revisions that meet specified criteria are monitored. + items: + type: string + type: array + x-kubernetes-list-type: set + 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) Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires resource_collection_enabled to also be enabled. + Whether Datadog collects cloud security posture management resources from your GCP project. If enabled, requires `resource_collection_enabled` to also be enabled. + type: boolean + isPerProjectQuotaEnabled: + description: |- + Goog-User-Project header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + When enabled, Datadog includes the `X-Goog-User-Project` header to attribute Google Cloud billing and quota usage to the monitored project instead of the default service account project. + type: boolean + isResourceChangeCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resource change data in your Google Cloud environment. + When enabled, Datadog scans for all resource change data in your Google Cloud environment. + type: boolean + isSecurityCommandCenterEnabled: + description: |- + (Boolean) When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to false. + When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account. Defaults to `false`. + type: boolean + metricNamespaceConfigs: + description: |- + (Set of Object) Configuration for a GCP metric namespace. (see below for nested schema) + Configuration for a GCP metric namespace. + items: + properties: + disabled: + description: (Boolean) + type: boolean + id: + description: (String) The ID of this resource. + type: string + type: object + type: array + resourceCollectionEnabled: + description: |- + (Boolean) When enabled, Datadog scans for all resources in your GCP environment. + When enabled, Datadog scans for all resources in your GCP environment. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 deleted file mode 100644 index 68eb5c0..0000000 --- a/package/crds/integration.datadog.upbound.io_gcpstses.yaml +++ /dev/null @@ -1,372 +0,0 @@ ---- -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 index f341974..80d5de8 100644 --- a/package/crds/integration.datadog.upbound.io_opsgenieserviceobjects.yaml +++ b/package/crds/integration.datadog.upbound.io_opsgenieserviceobjects.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: opsgenieserviceobjects.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,21 +74,19 @@ spec: forProvider: properties: customUrl: - description: (String) The custom url for a custom region. The - custom url for a custom region. + 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. + 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.' + 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. @@ -99,53 +103,79 @@ spec: - 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`. + 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. + 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. + 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. + 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`. + 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 + required: + - opsgenieApiKeySecretRef 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -158,9 +188,10 @@ spec: 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. + 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. @@ -170,21 +201,21 @@ spec: 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. + 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. + 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 @@ -194,17 +225,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -214,21 +247,21 @@ spec: 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. + 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. + 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 @@ -243,21 +276,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -268,14 +302,15 @@ spec: - 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. + 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. @@ -309,20 +344,22 @@ spec: atProvider: properties: customUrl: - description: (String) The custom url for a custom region. The - custom url for a custom region. + 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. + 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`. + 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: @@ -331,14 +368,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -348,8 +394,9 @@ spec: 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. + 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 @@ -361,6 +408,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_pagerduties.yaml b/package/crds/integration.datadog.upbound.io_pagerduties.yaml index e73561c..5fc50ad 100644 --- a/package/crds/integration.datadog.upbound.io_pagerduties.yaml +++ b/package/crds/integration.datadog.upbound.io_pagerduties.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: pagerduties.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: Pagerduty is the Schema for the Pagerdutys API. Provides a Datadog @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,8 +75,9 @@ spec: forProvider: properties: apiTokenSecretRef: - description: (String, Sensitive) Your PagerDuty API token. Your - PagerDuty API token. + description: |- + (String, Sensitive) Your PagerDuty API token. + Your PagerDuty API token. properties: key: description: The key to select. @@ -87,55 +94,81 @@ spec: - namespace type: object schedules: - description: (List of String) Array of your schedule URLs. Array - of your schedule URLs. + 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. + 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. + 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: + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -148,9 +181,10 @@ spec: 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. + 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. @@ -160,21 +194,21 @@ spec: 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. + 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. + 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 @@ -184,17 +218,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -204,21 +240,21 @@ spec: 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. + 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. + 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 @@ -233,21 +269,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -258,14 +295,15 @@ spec: - 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. + 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. @@ -294,14 +332,16 @@ spec: description: (String) The ID of this resource. type: string schedules: - description: (List of String) Array of your schedule URLs. Array - of your schedule URLs. + 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. + description: |- + (String) Your PagerDuty account’s personalized subdomain name. + Your PagerDuty account’s personalized subdomain name. type: string type: object conditions: @@ -310,14 +350,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -327,8 +376,9 @@ spec: 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. + 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 @@ -340,6 +390,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml b/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml index 64ed149..bc5c427 100644 --- a/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml +++ b/package/crds/integration.datadog.upbound.io_pagerdutyserviceobjects.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: pagerdutyserviceobjects.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: PagerdutyServiceObject is the Schema for the PagerdutyServiceObjects @@ -40,14 +40,19 @@ spec: 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' + 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' + 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 @@ -56,13 +61,14 @@ spec: 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' + 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 @@ -70,13 +76,9 @@ spec: 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.' + 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. @@ -93,43 +95,69 @@ spec: - namespace type: object serviceName: - description: (String) Your Service name in PagerDuty. Your Service - name in PagerDuty. + 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. + 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: + 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. + description: |- + (String) Your Service name in PagerDuty. + Your Service name in PagerDuty. type: string + required: + - serviceKeySecretRef 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -142,9 +170,10 @@ spec: 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. + 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. @@ -154,21 +183,21 @@ spec: 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. + 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. + 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 @@ -178,17 +207,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -198,21 +229,21 @@ spec: 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. + 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. + 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 @@ -227,21 +258,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -252,14 +284,15 @@ spec: - 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. + 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. @@ -292,8 +325,9 @@ spec: description: (String) The ID of this resource. type: string serviceName: - description: (String) Your Service name in PagerDuty. Your Service - name in PagerDuty. + description: |- + (String) Your Service name in PagerDuty. + Your Service name in PagerDuty. type: string type: object conditions: @@ -302,14 +336,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -319,8 +362,9 @@ spec: 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. + 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 @@ -332,6 +376,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/integration.datadog.upbound.io_slackchannels.yaml b/package/crds/integration.datadog.upbound.io_slackchannels.yaml index e80deaa..6b57fa3 100644 --- a/package/crds/integration.datadog.upbound.io_slackchannels.yaml +++ b/package/crds/integration.datadog.upbound.io_slackchannels.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: slackchannels.integration.datadog.upbound.io spec: group: integration.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,105 +74,120 @@ spec: forProvider: properties: accountName: - description: (String) Slack account name. Slack account name. + description: |- + (String) Slack account name. + Slack account name. type: string channelName: - description: (String) Slack channel name. Slack channel name. + 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 + 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. + 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 + muteButtons: + description: |- + (Boolean) Show interactive buttons to mute the alerting monitor. Defaults to true. + Show interactive buttons to mute the alerting monitor. 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: 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. + 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. + description: |- + (String) Slack account name. + Slack account name. type: string channelName: - description: (String) Slack channel name. Slack channel name. + 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 + 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. + 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 + muteButtons: + description: |- + (Boolean) Show interactive buttons to mute the alerting monitor. Defaults to true. + Show interactive buttons to mute the alerting monitor. 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: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -179,9 +200,10 @@ spec: 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. + 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. @@ -191,21 +213,21 @@ spec: 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. + 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. + 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 @@ -215,17 +237,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -235,21 +259,21 @@ spec: 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. + 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. + 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 @@ -264,21 +288,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -289,14 +314,15 @@ spec: - 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. + 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. @@ -330,40 +356,46 @@ spec: atProvider: properties: accountName: - description: (String) Slack account name. Slack account name. + description: |- + (String) Slack account name. + Slack account name. type: string channelName: - description: (String) Slack channel name. Slack channel name. + 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 + 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. + 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 + muteButtons: + description: |- + (Boolean) Show interactive buttons to mute the alerting monitor. Defaults to true. + Show interactive buttons to mute the alerting monitor. 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 id: description: (String) The ID of this resource. type: string @@ -374,14 +406,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -391,8 +432,9 @@ spec: 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. + 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 @@ -404,6 +446,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_archiveorders.yaml b/package/crds/logs.datadog.upbound.io_archiveorders.yaml index 5ba4d37..cdef99b 100644 --- a/package/crds/logs.datadog.upbound.io_archiveorders.yaml +++ b/package/crds/logs.datadog.upbound.io_archiveorders.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: archiveorders.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: ArchiveOrder is the Schema for the ArchiveOrders API. Provides @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,61 +75,208 @@ spec: 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. + 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 + archiveIdsRefs: + description: References to Archive in logs to populate archiveIds. + items: + description: A Reference to a named object. + 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 + type: array + archiveIdsSelector: + description: Selector for a list of Archive in logs to populate + archiveIds. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + 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. + 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. + 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 + archiveIdsRefs: + description: References to Archive in logs to populate archiveIds. + items: + description: A Reference to a named object. + 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 + type: array + archiveIdsSelector: + description: Selector for a list of Archive in logs to populate + archiveIds. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -136,9 +289,10 @@ spec: 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. + 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. @@ -148,21 +302,21 @@ spec: 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. + 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. + 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 @@ -172,17 +326,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -192,21 +348,21 @@ spec: 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. + 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. + 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 @@ -221,21 +377,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -246,14 +403,15 @@ spec: - 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. + 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. @@ -274,15 +432,9 @@ spec: 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. + 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 @@ -296,14 +448,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -313,8 +474,9 @@ spec: 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. + 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 @@ -326,6 +488,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_archives.yaml b/package/crds/logs.datadog.upbound.io_archives.yaml index e98429f..0966e93 100644 --- a/package/crds/logs.datadog.upbound.io_archives.yaml +++ b/package/crds/logs.datadog.upbound.io_archives.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: archives.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: Archive is the Schema for the Archives API. Provides a Datadog @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,227 +75,288 @@ spec: 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 + description: |- + (Block List, Max: 1) Definition of an azure archive. (see below for nested schema) + Definition of an azure archive. + 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 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 + description: |- + (Block List, Max: 1) Definition of a GCS archive. (see below for nested schema) + Definition of a GCS archive. + 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 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`. + 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. + 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. + 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. + 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. + 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 + description: |- + (Block List, Max: 1) Definition of an s3 archive. (see below for nested schema) + Definition of an s3 archive. + 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 + encryptionKey: + description: |- + (String) The AWS KMS encryption key. + The AWS KMS encryption key. + type: string + encryptionType: + description: |- + (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". + The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `"NO_OVERRIDE"`. + 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 + storageClass: + description: |- + (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". + The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `"STANDARD"`. + type: string + 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. + 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 + description: |- + (Block List, Max: 1) Definition of an azure archive. (see below for nested schema) + Definition of an azure archive. + 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 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 + description: |- + (Block List, Max: 1) Definition of a GCS archive. (see below for nested schema) + Definition of a GCS archive. + 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 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`. + 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. + 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. + 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. + 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. + 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 + description: |- + (Block List, Max: 1) Definition of an s3 archive. (see below for nested schema) + Definition of an s3 archive. + 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 + encryptionKey: + description: |- + (String) The AWS KMS encryption key. + The AWS KMS encryption key. + type: string + encryptionType: + description: |- + (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". + The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `"NO_OVERRIDE"`. + 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 + storageClass: + description: |- + (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". + The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `"STANDARD"`. + type: string + type: object 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -302,9 +369,10 @@ spec: 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. + 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. @@ -314,21 +382,21 @@ spec: 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. + 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. + 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 @@ -338,17 +406,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -358,21 +428,21 @@ spec: 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. + 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. + 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 @@ -387,21 +457,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -412,14 +483,15 @@ spec: - 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. + 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. @@ -449,104 +521,133 @@ spec: 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 + description: |- + (Block List, Max: 1) Definition of an azure archive. (see below for nested schema) + Definition of an azure archive. + 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 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 + description: |- + (Block List, Max: 1) Definition of a GCS archive. (see below for nested schema) + Definition of a GCS archive. + 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 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`. + 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. + 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. + 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. + 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. + 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 + description: |- + (Block List, Max: 1) Definition of an s3 archive. (see below for nested schema) + Definition of an s3 archive. + 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 + encryptionKey: + description: |- + (String) The AWS KMS encryption key. + The AWS KMS encryption key. + type: string + encryptionType: + description: |- + (String) The type of encryption on your archive. Valid values are NO_OVERRIDE, SSE_S3, SSE_KMS. Defaults to "NO_OVERRIDE". + The type of encryption on your archive. Valid values are `NO_OVERRIDE`, `SSE_S3`, `SSE_KMS`. Defaults to `"NO_OVERRIDE"`. + 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 + storageClass: + description: |- + (String) The AWS S3 storage class used to upload the logs. Valid values are STANDARD, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER_IR. Defaults to "STANDARD". + The AWS S3 storage class used to upload the logs. Valid values are `STANDARD`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `GLACIER_IR`. Defaults to `"STANDARD"`. + type: string + type: object type: object conditions: description: Conditions of the resource. @@ -554,14 +655,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -571,8 +681,9 @@ spec: 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. + 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 @@ -584,6 +695,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_custompipelines.yaml b/package/crds/logs.datadog.upbound.io_custompipelines.yaml index 555f013..0fbadda 100644 --- a/package/crds/logs.datadog.upbound.io_custompipelines.yaml +++ b/package/crds/logs.datadog.upbound.io_custompipelines.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: custompipelines.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: 'CustomPipeline is the Schema for the CustomPipelines API. Provides @@ -45,14 +45,19 @@ spec: 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' + 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' + 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 @@ -61,26 +66,31 @@ spec: 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' + 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) + type: string 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. + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. type: string type: object type: array @@ -95,1109 +105,1078 @@ spec: 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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)' + properties: + query: + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. + type: string + type: object + 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 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 + 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) + 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 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 + 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) + 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 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: + 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) + properties: + grok: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + matchRules: + description: |- + (String) Match rules for your grok parser. + Match rules for your grok parser. 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: + supportRules: + description: |- + (String) Support rules for your grok parser. + Support rules for your grok parser. 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 + type: object + 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 + 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) + 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 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 + 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) + 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 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: + description: + description: (String) + type: string + 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) + 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 + 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) + 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 + 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) + 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)' 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) + query: + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. 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: + name: + description: (String) 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: + 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 + 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) + 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 + 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) + 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 + 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) + properties: + grok: + description: '(Block List, Min: 1, Max: 1) + (see below for nested schema)' 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. + matchRules: + description: |- + (String) Match rules for your grok parser. + Match rules for your grok parser. 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. + supportRules: + description: |- + (String) Support rules for your grok parser. + Support rules for your grok parser. 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 + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + spanIdRemapper: + description: |- + (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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: object + type: array + tags: + description: (Set of String) + items: + type: string + type: array + x-kubernetes-list-type: set + type: object 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 + 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) + 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 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 + 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) + 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 + spanIdRemapper: + description: |- + (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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: object type: array + tags: + description: (Set of String) + 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. + 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) + type: string 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. + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. type: string type: object type: array @@ -1212,1106 +1191,1072 @@ spec: 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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)' + properties: + query: + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. + type: string + type: object + 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 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 + 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) + 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 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 + 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) + 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 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: + 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) + properties: + grok: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + matchRules: + description: |- + (String) Match rules for your grok parser. + Match rules for your grok parser. 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: + supportRules: + description: |- + (String) Support rules for your grok parser. + Support rules for your grok parser. 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 + type: object + 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 + 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) + 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 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 + 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) + 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 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: + description: + description: (String) + type: string + 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) + 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 + 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) + 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 + 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) + 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)' 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. + query: + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. 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: + name: + description: (String) 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: + 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 + 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) + 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 + 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) + 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 + 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) + properties: + grok: + description: '(Block List, Min: 1, Max: 1) + (see below for nested schema)' 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 + matchRules: + description: |- + (String) Match rules for your grok parser. + Match rules for your grok parser. type: string - source: - description: (String) Name of the log - attribute to parse. Name of the source - attribute used to do the lookup. + supportRules: + description: |- + (String) Support rules for your grok parser. + Support rules for your grok parser. 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 + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + spanIdRemapper: + description: |- + (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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: object + type: array + tags: + description: (Set of String) + items: + type: string + type: array + x-kubernetes-list-type: set + type: object 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 + 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) + 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 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 + 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) + 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 + spanIdRemapper: + description: |- + (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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: object type: array + tags: + description: (Set of String) + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -2324,9 +2269,10 @@ spec: 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. + 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. @@ -2336,21 +2282,21 @@ spec: 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. + 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. + 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 @@ -2360,17 +2306,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -2380,21 +2328,21 @@ spec: 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. + 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. + 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 @@ -2409,21 +2357,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -2434,14 +2383,15 @@ spec: - 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. + 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. @@ -2470,13 +2420,17 @@ spec: properties: atProvider: properties: + description: + description: (String) + type: string 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. + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. type: string type: object type: array @@ -2494,1089 +2448,1053 @@ spec: 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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)' + properties: + query: + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. + type: string + type: object + 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 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 + 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) + 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 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 + 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) + 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 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: + 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) + properties: + grok: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + matchRules: + description: |- + (String) Match rules for your grok parser. + Match rules for your grok parser. 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: + supportRules: + description: |- + (String) Support rules for your grok parser. + Support rules for your grok parser. 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 + type: object + 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 + 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) + 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 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 + 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) + 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 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: + description: + description: (String) + type: string + 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) + 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 + 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) + 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 + 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) + 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)' 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) + query: + description: |- + (String) Filter criteria of the category. + Filter criteria of the category. 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: + name: + description: (String) 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: + 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 + 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) + 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 + 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) + 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 + 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) + properties: + grok: + description: '(Block List, Min: 1, Max: 1) + (see below for nested schema)' properties: - isEnabled: - description: (Boolean) If the processor - is enabled or not. - type: boolean - name: - description: (String) Name of the processor. + matchRules: + description: |- + (String) Match rules for your grok parser. + Match rules for your grok parser. 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. + supportRules: + description: |- + (String) Support rules for your grok parser. + Support rules for your grok parser. 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 + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + spanIdRemapper: + description: |- + (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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 + 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) + 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: object + type: array + tags: + description: (Set of String) + items: + type: string + type: array + x-kubernetes-list-type: set + type: object 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 + 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) + 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 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 + 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) + 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 + spanIdRemapper: + description: |- + (Block List, Max: 1) Span ID Remapper Processor. More information can be found in the official docs (see below for nested schema) + Span ID Remapper Processor. More information can be found in the [official docs](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=ui#span-remapper) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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 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 + 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) + 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: object type: array + tags: + description: (Set of String) + items: + type: string + type: array + x-kubernetes-list-type: set type: object conditions: description: Conditions of the resource. @@ -3584,14 +3502,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -3601,8 +3528,9 @@ spec: 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. + 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 @@ -3614,6 +3542,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_indexorders.yaml b/package/crds/logs.datadog.upbound.io_indexorders.yaml index c16cb94..a789c65 100644 --- a/package/crds/logs.datadog.upbound.io_indexorders.yaml +++ b/package/crds/logs.datadog.upbound.io_indexorders.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: indexorders.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: IndexOrder is the Schema for the IndexOrders API. Provides a @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,61 +75,208 @@ spec: 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. + 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 + indexesRefs: + description: References to Index in logs to populate indexes. + items: + description: A Reference to a named object. + 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 + type: array + indexesSelector: + description: Selector for a list of Index in logs to populate + indexes. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + 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. + 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. + 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 + indexesRefs: + description: References to Index in logs to populate indexes. + items: + description: A Reference to a named object. + 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 + type: array + indexesSelector: + description: Selector for a list of Index in logs to populate + indexes. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -136,9 +289,10 @@ spec: 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. + 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. @@ -148,21 +302,21 @@ spec: 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. + 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. + 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 @@ -172,17 +326,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -192,21 +348,21 @@ spec: 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. + 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. + 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 @@ -221,21 +377,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -246,14 +403,15 @@ spec: - 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. + 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. @@ -268,11 +426,6 @@ spec: 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: @@ -282,18 +435,12 @@ spec: 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. + 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. @@ -301,14 +448,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -318,8 +474,9 @@ spec: 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. + 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 @@ -331,6 +488,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_indices.yaml b/package/crds/logs.datadog.upbound.io_indices.yaml index 8f97801..1357b4a 100644 --- a/package/crds/logs.datadog.upbound.io_indices.yaml +++ b/package/crds/logs.datadog.upbound.io_indices.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: indices.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: Index is the Schema for the Indexs API. Provides a Datadog Logs @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,51 +75,40 @@ spec: forProvider: properties: dailyLimit: - description: limited. The number of log events you can send in - this index per day before you are rate-limited. + 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 + 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. + 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 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. + 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. + 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. + description: |- + (Block List) List of exclusion filters. (see below for nested schema) + List of exclusion filters. items: properties: filter: @@ -122,110 +117,99 @@ spec: 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. + 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. + 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. + 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. + description: |- + (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. + 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 + description: |- + (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + Logs filter + 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 + flexRetentionDays: + description: |- + (Number) The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + type: number 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. + description: |- + (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. + The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the 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. + 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. + 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 + 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. + 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 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. + 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. + 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. + description: |- + (Block List) List of exclusion filters. (see below for nested schema) + List of exclusion filters. items: properties: filter: @@ -234,68 +218,69 @@ spec: 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. + 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. + 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. + 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. + description: |- + (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. + 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 + description: |- + (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + Logs filter + 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 + flexRetentionDays: + description: |- + (Number) The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + type: number 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. + description: |- + (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. + The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -308,9 +293,10 @@ spec: 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. + 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. @@ -320,21 +306,21 @@ spec: 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. + 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. + 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 @@ -344,17 +330,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -364,21 +352,21 @@ spec: 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. + 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. + 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 @@ -393,21 +381,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -418,14 +407,15 @@ spec: - 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. + 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. @@ -445,61 +435,46 @@ spec: 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. + 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 + 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. + 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 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. + 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. + 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. + description: |- + (Block List) List of exclusion filters. (see below for nested schema) + List of exclusion filters. items: properties: filter: @@ -508,53 +483,52 @@ spec: 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. + 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. + 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. + 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. + description: |- + (String) The name of the index. Index names cannot be modified after creation. If this value is changed, a new index will be created. + 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 + description: |- + (Block List, Min: 1, Max: 1) Logs filter (see below for nested schema) + Logs filter + 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 + flexRetentionDays: + description: |- + (Number) The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + The total number of days logs are stored in Standard and Flex Tier before being deleted from the index. + type: number 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. + description: |- + (Number) The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. + The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index. type: number type: object conditions: @@ -563,14 +537,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -580,8 +563,9 @@ spec: 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. + 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 @@ -593,6 +577,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml b/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml index 263611b..392db2b 100644 --- a/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml +++ b/package/crds/logs.datadog.upbound.io_integrationpipelines.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: integrationpipelines.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: IntegrationPipeline is the Schema for the IntegrationPipelines @@ -44,14 +44,19 @@ spec: 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' + 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' + 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 @@ -60,13 +65,14 @@ spec: 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' + 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 @@ -74,43 +80,48 @@ spec: forProvider: properties: isEnabled: - description: (Boolean) Boolean value to enable your pipeline. + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -123,9 +134,10 @@ spec: 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. + 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. @@ -135,21 +147,21 @@ spec: 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. + 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. + 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 @@ -159,17 +171,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -179,21 +193,21 @@ spec: 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. + 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. + 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 @@ -208,21 +222,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -233,14 +248,15 @@ spec: - 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. + 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. @@ -264,7 +280,8 @@ spec: description: (String) The ID of this resource. type: string isEnabled: - description: (Boolean) Boolean value to enable your pipeline. + description: |- + (Boolean) Boolean value to enable your pipeline. Boolean value to enable your pipeline. type: boolean type: object @@ -274,14 +291,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -291,8 +317,9 @@ spec: 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. + 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 @@ -304,6 +331,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_metrics.yaml b/package/crds/logs.datadog.upbound.io_metrics.yaml index 3a7a9a0..66b8f4c 100644 --- a/package/crds/logs.datadog.upbound.io_metrics.yaml +++ b/package/crds/logs.datadog.upbound.io_metrics.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: metrics.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,169 +74,148 @@ spec: 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 + 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. + 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 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 + 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. + properties: + query: + description: |- + following the log search syntax. + The search query - following the log search syntax. + type: string + type: object groupBy: - description: (Block Set) The rules for the group by. (see below - for nested schema) The rules for the group by. + 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. + 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. + 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. + 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. + 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 + 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. + 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 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 + 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. + properties: + query: + description: |- + following the log search syntax. + The search query - following the log search syntax. + type: string + type: object groupBy: - description: (Block Set) The rules for the group by. (see below - for nested schema) The rules for the group by. + 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. + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -243,9 +228,10 @@ spec: 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. + 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. @@ -255,21 +241,21 @@ spec: 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. + 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. + 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 @@ -279,17 +265,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -299,21 +287,21 @@ spec: 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. + 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. + 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 @@ -328,21 +316,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -353,14 +342,15 @@ spec: - 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. + 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. @@ -394,63 +384,51 @@ spec: 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 + 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. + 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 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 + 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. + properties: + query: + description: |- + following the log search syntax. + The search query - following the log search syntax. + type: string + type: object groupBy: - description: (Block Set) The rules for the group by. (see below - for nested schema) The rules for the group by. + 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. + 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. + description: |- + (String) Name of the tag that gets created. Name of the tag that gets created. type: string type: object @@ -459,9 +437,9 @@ spec: 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. + 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: @@ -470,14 +448,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -487,8 +474,9 @@ spec: 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. + 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 @@ -500,6 +488,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/logs.datadog.upbound.io_pipelineorders.yaml b/package/crds/logs.datadog.upbound.io_pipelineorders.yaml index 4dab933..c70b192 100644 --- a/package/crds/logs.datadog.upbound.io_pipelineorders.yaml +++ b/package/crds/logs.datadog.upbound.io_pipelineorders.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: pipelineorders.logs.datadog.upbound.io spec: group: logs.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: PipelineOrder is the Schema for the PipelineOrders API. Provides @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,65 +60,45 @@ spec: 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' + 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. + 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. + 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. + 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 @@ -121,19 +106,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -146,9 +133,10 @@ spec: 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. + 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. @@ -158,21 +146,21 @@ spec: 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. + 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. + 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 @@ -182,17 +170,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -202,21 +192,21 @@ spec: 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. + 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. + 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 @@ -231,21 +221,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -256,14 +247,15 @@ spec: - 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. + 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. @@ -279,10 +271,6 @@ spec: - 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) @@ -295,21 +283,10 @@ spec: 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. + 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 @@ -320,14 +297,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -337,8 +323,9 @@ spec: 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. + 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 @@ -350,6 +337,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/metric.datadog.upbound.io_metadata.yaml b/package/crds/metric.datadog.upbound.io_metadata.yaml index 6cc0ea7..e3c0217 100644 --- a/package/crds/metric.datadog.upbound.io_metadata.yaml +++ b/package/crds/metric.datadog.upbound.io_metadata.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: metadata.metric.datadog.upbound.io spec: group: metric.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,105 +74,108 @@ spec: forProvider: properties: description: - description: (String) A description of the metric. A description - of the metric. + 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. + 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`. + 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. + 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. + 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/). + 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`. + 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. + 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. + 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. + 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`. + 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. + 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. + 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/). + 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`. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -179,9 +188,10 @@ spec: 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. + 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. @@ -191,21 +201,21 @@ spec: 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. + 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. + 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 @@ -215,17 +225,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -235,21 +247,21 @@ spec: 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. + 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. + 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 @@ -264,21 +276,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -289,14 +302,15 @@ spec: - 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. + 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. @@ -322,42 +336,42 @@ spec: atProvider: properties: description: - description: (String) A description of the metric. A description - of the metric. + 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. + 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`. + 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. + 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. + 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/). + 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`. + 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: @@ -366,14 +380,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -383,8 +406,9 @@ spec: 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. + 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 @@ -396,6 +420,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/metric.datadog.upbound.io_spansmetrics.yaml b/package/crds/metric.datadog.upbound.io_spansmetrics.yaml new file mode 100644 index 0000000..e643ec3 --- /dev/null +++ b/package/crds/metric.datadog.upbound.io_spansmetrics.yaml @@ -0,0 +1,484 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: spansmetrics.metric.datadog.upbound.io +spec: + group: metric.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: SpansMetric + listKind: SpansMetricList + plural: spansmetrics + singular: spansmetric + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 index 5ac9a9e..4795e90 100644 --- a/package/crds/metric.datadog.upbound.io_tagconfigurations.yaml +++ b/package/crds/metric.datadog.upbound.io_tagconfigurations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: tagconfigurations.metric.datadog.upbound.io spec: group: metric.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: TagConfiguration is the Schema for the TagConfigurations API. @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,136 +75,107 @@ spec: 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.' + 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`. + 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`. + 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`. + 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. + 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. + 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`. + 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. + 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. + 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.' + 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`. + 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`. + 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`. + 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. + 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. + 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`. + 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. + 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 @@ -207,19 +184,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -232,9 +211,10 @@ spec: 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. + 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. @@ -244,21 +224,21 @@ spec: 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. + 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. + 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 @@ -268,17 +248,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -288,21 +270,21 @@ spec: 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. + 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. + 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 @@ -317,21 +299,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -342,14 +325,15 @@ spec: - 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. + 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. @@ -383,65 +367,50 @@ spec: 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.' + 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`. + 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`. + 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`. + 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. + 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. + 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`. + 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. + 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 @@ -453,14 +422,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -470,8 +448,9 @@ spec: 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. + 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 @@ -483,6 +462,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/monitor.datadog.upbound.io_configpolicies.yaml b/package/crds/monitor.datadog.upbound.io_configpolicies.yaml new file mode 100644 index 0000000..6ea4703 --- /dev/null +++ b/package/crds/monitor.datadog.upbound.io_configpolicies.yaml @@ -0,0 +1,417 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: configpolicies.monitor.datadog.upbound.io +spec: + group: monitor.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ConfigPolicy + listKind: ConfigPolicyList + plural: configpolicies + singular: configpolicy + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: ConfigPolicy is the Schema for the ConfigPolicys 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: ConfigPolicySpec defines the desired state of ConfigPolicy + 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`. + 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: 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`. + 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: 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: ConfigPolicyStatus defines the observed state of ConfigPolicy. + 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`. + 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: 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/monitor.datadog.upbound.io_downtimes.yaml b/package/crds/monitor.datadog.upbound.io_downtimes.yaml new file mode 100644 index 0000000..97a8044 --- /dev/null +++ b/package/crds/monitor.datadog.upbound.io_downtimes.yaml @@ -0,0 +1,776 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: downtimes.monitor.datadog.upbound.io +spec: + group: monitor.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Downtime + listKind: DowntimeList + plural: downtimes + singular: downtime + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + monitorIdRef: + description: Reference to a Monitor in monitor to populate monitorId. + 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 + monitorIdSelector: + description: Selector for a Monitor in monitor to populate monitorId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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 + 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 + 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 + monitorIdRef: + description: Reference to a Monitor in monitor to populate monitorId. + 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 + monitorIdSelector: + description: Selector for a Monitor in monitor to populate monitorId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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 + 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 + 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 + 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 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/monitor.datadog.upbound.io_downtimeschedules.yaml b/package/crds/monitor.datadog.upbound.io_downtimeschedules.yaml new file mode 100644 index 0000000..1b4beb8 --- /dev/null +++ b/package/crds/monitor.datadog.upbound.io_downtimeschedules.yaml @@ -0,0 +1,628 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: downtimeschedules.monitor.datadog.upbound.io +spec: + group: monitor.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DowntimeSchedule + listKind: DowntimeScheduleList + plural: downtimeschedules + singular: downtimeschedule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/monitor.datadog.upbound.io_monitorjsons.yaml b/package/crds/monitor.datadog.upbound.io_monitorjsons.yaml new file mode 100644 index 0000000..c4400f4 --- /dev/null +++ b/package/crds/monitor.datadog.upbound.io_monitorjsons.yaml @@ -0,0 +1,363 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: monitorjsons.monitor.datadog.upbound.io +spec: + group: monitor.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: MonitorJSON + listKind: MonitorJSONList + plural: monitorjsons + singular: monitorjson + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/monitor.datadog.upbound.io_monitors.yaml b/package/crds/monitor.datadog.upbound.io_monitors.yaml new file mode 100644 index 0000000..8d16e36 --- /dev/null +++ b/package/crds/monitor.datadog.upbound.io_monitors.yaml @@ -0,0 +1,1568 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: monitors.monitor.datadog.upbound.io +spec: + group: monitor.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Monitor + listKind: MonitorList + plural: monitors + singular: monitor + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + 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. + + 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. + + 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. + 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 + monitorThresholds: + description: |- + (Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema) + Alert thresholds of the monitor. + 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 + 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. + + `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. + + 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 not available for Service Check, Composite, or SLO 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 not available for Service Check, Composite, or SLO monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`. + type: string + priority: + description: |- + (String) Integer from 1 (high) to 5 (low) indicating alert severity. + Integer from 1 (high) to 5 (low) indicating alert severity. + type: string + 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. + + **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. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource. + items: + type: string + type: array + x-kubernetes-list-type: set + schedulingOptions: + description: |- + (Block List, Max: 1) Configuration options for scheduling. (see below for nested schema) + Configuration options for scheduling. + properties: + customSchedule: + description: |- + (Block List, Max: 1) 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. + 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. + 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: object + evaluationWindow: + description: |- + (Block List, Max: 1) 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. + 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: object + 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, network-performance alert, cost 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`, `network-performance alert`, `cost 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)' + properties: + cloudCostQuery: + description: |- + (Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema) + The Cloud Cost query using formulas and functions. + items: + properties: + aggregator: + description: |- + (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`. + type: string + dataSource: + description: |- + (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`. + type: string + name: + description: |- + (String) Name of Datadog monitor. + The name of the query for use in formulas. + type: string + 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 cloud cost query definition. + type: string + type: object + type: array + 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: |- + (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`, `network`. + 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. + 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: 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. + 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: object + type: array + 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: + 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. + + 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. + + 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. + 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 + monitorThresholds: + description: |- + (Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema) + Alert thresholds of the monitor. + 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 + 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. + + `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. + + 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 not available for Service Check, Composite, or SLO 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 not available for Service Check, Composite, or SLO monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`. + type: string + priority: + description: |- + (String) Integer from 1 (high) to 5 (low) indicating alert severity. + Integer from 1 (high) to 5 (low) indicating alert severity. + type: string + 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. + + **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. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource. + items: + type: string + type: array + x-kubernetes-list-type: set + schedulingOptions: + description: |- + (Block List, Max: 1) Configuration options for scheduling. (see below for nested schema) + Configuration options for scheduling. + properties: + customSchedule: + description: |- + (Block List, Max: 1) 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. + 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. + 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: object + evaluationWindow: + description: |- + (Block List, Max: 1) 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. + 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: object + 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, network-performance alert, cost 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`, `network-performance alert`, `cost 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)' + properties: + cloudCostQuery: + description: |- + (Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema) + The Cloud Cost query using formulas and functions. + items: + properties: + aggregator: + description: |- + (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`. + type: string + dataSource: + description: |- + (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`. + type: string + name: + description: |- + (String) Name of Datadog monitor. + The name of the query for use in formulas. + type: string + 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 cloud cost query definition. + type: string + type: object + type: array + 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: |- + (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`, `network`. + 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. + 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: 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. + 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: object + type: array + type: object + 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. + + 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. + + 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. + 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 + monitorThresholds: + description: |- + (Block List, Max: 1) Alert thresholds of the monitor. (see below for nested schema) + Alert thresholds of the monitor. + 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 + 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. + + `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. + + 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 not available for Service Check, Composite, or SLO 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 not available for Service Check, Composite, or SLO monitors. Valid values are: `show_no_data`, `show_and_notify_no_data`, `resolve`, and `default`. + type: string + priority: + description: |- + (String) Integer from 1 (high) to 5 (low) indicating alert severity. + Integer from 1 (high) to 5 (low) indicating alert severity. + type: string + 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. + + **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. If `restricted_roles` is explicitly set in the configuration, that value always takes precedence over whatever is discovered during the read. This opt-in behaviour lets you migrate responsibility for monitor permissions to the `datadog_restriction_policy` resource. + items: + type: string + type: array + x-kubernetes-list-type: set + schedulingOptions: + description: |- + (Block List, Max: 1) Configuration options for scheduling. (see below for nested schema) + Configuration options for scheduling. + properties: + customSchedule: + description: |- + (Block List, Max: 1) 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. + 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. + 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: object + evaluationWindow: + description: |- + (Block List, Max: 1) 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. + 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: object + 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, network-performance alert, cost 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`, `network-performance alert`, `cost 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)' + properties: + cloudCostQuery: + description: |- + (Block List, Max: 5) The Cloud Cost query using formulas and functions. (see below for nested schema) + The Cloud Cost query using formulas and functions. + items: + properties: + aggregator: + description: |- + (String) The aggregation methods available for cloud cost queries. Valid values are avg, sum, max, min, last, area, l2norm, percentile, stddev. + The aggregation methods available for cloud cost queries. Valid values are `avg`, `sum`, `max`, `min`, `last`, `area`, `l2norm`, `percentile`, `stddev`. + type: string + dataSource: + description: |- + (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + The data source for cloud cost queries. Valid values are `metrics`, `cloud_cost`, `datadog_usage`. + type: string + name: + description: |- + (String) Name of Datadog monitor. + The name of the query for use in formulas. + type: string + 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 cloud cost query definition. + type: string + type: object + type: array + 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: |- + (String) The data source for cloud cost queries. Valid values are metrics, cloud_cost, datadog_usage. + The data source for event platform-based queries. Valid values are `rum`, `ci_pipelines`, `ci_tests`, `audit`, `events`, `logs`, `spans`, `database_queries`, `network`. + 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. + 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: 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. + 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: object + type: array + type: object + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/notification.datadog.upbound.io_webhookcustomvariables.yaml b/package/crds/notification.datadog.upbound.io_webhookcustomvariables.yaml new file mode 100644 index 0000000..6c8c6cc --- /dev/null +++ b/package/crds/notification.datadog.upbound.io_webhookcustomvariables.yaml @@ -0,0 +1,411 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: webhookcustomvariables.notification.datadog.upbound.io +spec: + group: notification.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: WebhookCustomVariable + listKind: WebhookCustomVariableList + plural: webhookcustomvariables + singular: webhookcustomvariable + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + 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 + required: + - valueSecretRef + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/notification.datadog.upbound.io_webhooks.yaml b/package/crds/notification.datadog.upbound.io_webhooks.yaml new file mode 100644 index 0000000..6a18527 --- /dev/null +++ b/package/crds/notification.datadog.upbound.io_webhooks.yaml @@ -0,0 +1,411 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: webhooks.notification.datadog.upbound.io +spec: + group: notification.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Webhook + listKind: WebhookList + plural: webhooks + singular: webhook + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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/organization.datadog.upbound.io_childorganizations.yaml similarity index 55% rename from package/crds/datadog.upbound.io_childorganizations.yaml rename to package/crds/organization.datadog.upbound.io_childorganizations.yaml index 61d01e6..6bcab07 100644 --- a/package/crds/datadog.upbound.io_childorganizations.yaml +++ b/package/crds/organization.datadog.upbound.io_childorganizations.yaml @@ -3,10 +3,10 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 - name: childorganizations.datadog.upbound.io + controller-gen.kubebuilder.io/version: v0.16.5 + name: childorganizations.organization.datadog.upbound.io spec: - group: datadog.upbound.io + group: organization.datadog.upbound.io names: categories: - crossplane @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: ChildOrganization is the Schema for the ChildOrganizations API. @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,43 +75,48 @@ spec: forProvider: properties: name: - description: (String) Name for Child Organization after creation. + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -118,9 +129,10 @@ spec: 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. + 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. @@ -130,21 +142,21 @@ spec: 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. + 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. + 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 @@ -154,17 +166,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -174,21 +188,21 @@ spec: 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. + 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. + 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 @@ -203,21 +217,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -228,14 +243,15 @@ spec: - 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. + 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. @@ -261,8 +277,9 @@ spec: atProvider: properties: apiKey: - description: (List of Object) Datadog API key. (see below for - nested schema) Datadog API key. + description: |- + (List of Object) Datadog API key. (see below for nested schema) + Datadog API key. items: properties: key: @@ -275,9 +292,9 @@ spec: 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. + 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: @@ -293,24 +310,27 @@ spec: type: object type: array description: - description: (String) Description of the organization. Description - of the organization. + 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. + 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. + 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 + description: |- + (List of Object) Organization settings (see below for nested schema) + Organization settings items: properties: privateWidgetShare: @@ -375,8 +395,9 @@ spec: type: object type: array user: - description: (List of Object) Information about a user (see below - for nested schema) Information about a user + description: |- + (List of Object) Information about a user (see below for nested schema) + Information about a user items: properties: accessRole: @@ -398,14 +419,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -415,8 +445,9 @@ spec: 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. + 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 @@ -428,6 +459,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/organization.datadog.upbound.io_settings.yaml b/package/crds/organization.datadog.upbound.io_settings.yaml new file mode 100644 index 0000000..3821e7d --- /dev/null +++ b/package/crds/organization.datadog.upbound.io_settings.yaml @@ -0,0 +1,595 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: settings.organization.datadog.upbound.io +spec: + group: organization.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Settings + listKind: SettingsList + plural: settings + singular: settings + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Settings is the Schema for the Settingss 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: SettingsSpec defines the desired state of Settings + 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 + securityContacts: + description: |- + (List of String) List of emails used for security event notifications from the organization. + List of emails used for security event notifications from the organization. + items: + type: string + type: array + settings: + description: |- + (Block List, Max: 1) Organization settings (see below for nested schema) + Organization settings + 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 + 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 + 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. + 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 + 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. + 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 + 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. + 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: 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: + name: + description: |- + (String) Name for Organization. + Name for Organization. + type: string + securityContacts: + description: |- + (List of String) List of emails used for security event notifications from the organization. + List of emails used for security event notifications from the organization. + items: + type: string + type: array + settings: + description: |- + (Block List, Max: 1) Organization settings (see below for nested schema) + Organization settings + 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 + 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 + 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. + 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 + 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. + 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 + 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. + 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: object + 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: SettingsStatus defines the observed state of Settings. + 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 + securityContacts: + description: |- + (List of String) List of emails used for security event notifications from the organization. + List of emails used for security event notifications from the organization. + items: + type: string + type: array + settings: + description: |- + (Block List, Max: 1) Organization settings (see below for nested schema) + Organization settings + 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 + 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 + 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. + 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 + 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. + 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 + 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. + 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: object + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/rum.datadog.upbound.io_applications.yaml b/package/crds/rum.datadog.upbound.io_applications.yaml new file mode 100644 index 0000000..96aed6e --- /dev/null +++ b/package/crds/rum.datadog.upbound.io_applications.yaml @@ -0,0 +1,368 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: applications.rum.datadog.upbound.io +spec: + group: rum.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Application + listKind: ApplicationList + plural: applications + singular: application + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Application is the Schema for the Applications 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: ApplicationSpec defines the desired state of Application + 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: ApplicationStatus defines the observed state of Application. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/security.datadog.upbound.io_ipallowlists.yaml b/package/crds/security.datadog.upbound.io_ipallowlists.yaml new file mode 100644 index 0000000..e5cc0bb --- /dev/null +++ b/package/crds/security.datadog.upbound.io_ipallowlists.yaml @@ -0,0 +1,402 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: ipallowlists.security.datadog.upbound.io +spec: + group: security.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: IPAllowList + listKind: IPAllowListList + plural: ipallowlists + singular: ipallowlist + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: IPAllowList is the Schema for the IPAllowLists API. Provides + the Datadog IP allowlist resource. This can be used to manage the Datadog + IP allowlist + 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: |- + (Boolean) Whether the IP Allowlist is enabled. + Whether the IP Allowlist is enabled. + type: boolean + entry: + description: |- + (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) + Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. + items: + properties: + cidrBlock: + description: |- + (String) IP address or range of addresses. String must be a valid CIDR block or IP address. + IP address or range of addresses. String must be a valid CIDR block or IP address. + type: string + note: + description: |- + (String) Note accompanying IP address. + 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: |- + (Boolean) Whether the IP Allowlist is enabled. + Whether the IP Allowlist is enabled. + type: boolean + entry: + description: |- + (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) + Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. + items: + properties: + cidrBlock: + description: |- + (String) IP address or range of addresses. String must be a valid CIDR block or IP address. + IP address or range of addresses. String must be a valid CIDR block or IP address. + type: string + note: + description: |- + (String) Note accompanying IP address. + 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: |- + (Boolean) Whether the IP Allowlist is enabled. + Whether the IP Allowlist is enabled. + type: boolean + entry: + description: |- + (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) + Set of objects containing an IP address or range of IP addresses in the allowlist and an accompanying note. + items: + properties: + cidrBlock: + description: |- + (String) IP address or range of addresses. String must be a valid CIDR block or IP address. + IP address or range of addresses. String must be a valid CIDR block or IP address. + type: string + note: + description: |- + (String) Note accompanying IP address. + Note accompanying IP address. + type: string + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 index c7d3a9c..1729f77 100644 --- a/package/crds/securitymonitoring.datadog.upbound.io_defaultrules.yaml +++ b/package/crds/securitymonitoring.datadog.upbound.io_defaultrules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: defaultrules.securitymonitoring.datadog.upbound.io spec: group: securitymonitoring.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: DefaultRule is the Schema for the DefaultRules API. Provides @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,169 +75,162 @@ spec: 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.' + 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. + 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`. + 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 + customTags: + description: |- + (Set of String) Custom tags for generated signals. + Custom tags for generated signals. + items: + type: string + type: array + x-kubernetes-list-type: set enabled: - description: (Boolean) Enable the rule. Defaults to true. Enable - the rule. Defaults to `true`. + 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. + 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`.' + 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. + 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 + 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. + 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: 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. + 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.' + 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. + 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`. + 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 + customTags: + description: |- + (Set of String) Custom tags for generated signals. + Custom tags for generated signals. + items: + type: string + type: array + x-kubernetes-list-type: set enabled: - description: (Boolean) Enable the rule. Defaults to true. Enable - the rule. Defaults to `true`. + 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. + 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`.' + 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. + 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 + 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. + 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: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -244,9 +243,10 @@ spec: 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. + 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. @@ -256,21 +256,21 @@ spec: 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. + 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. + 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 @@ -280,17 +280,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -300,21 +302,21 @@ spec: 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. + 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. + 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 @@ -329,21 +331,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -354,14 +357,15 @@ spec: - 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. + 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. @@ -382,46 +386,53 @@ spec: 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.' + 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. + 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`. + 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 + customTags: + description: |- + (Set of String) Custom tags for generated signals. + Custom tags for generated signals. + items: + type: string + type: array + x-kubernetes-list-type: set enabled: - description: (Boolean) Enable the rule. Defaults to true. Enable - the rule. Defaults to `true`. + 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. + 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`.' + 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. + 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 @@ -429,30 +440,20 @@ spec: 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 + 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. + 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: - description: (String) The rule type. The rule type. + description: |- + (String) The rule type. + The rule type. type: string type: object conditions: @@ -461,14 +462,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -478,8 +488,9 @@ spec: 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. + 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 @@ -491,6 +502,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml b/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml index 2902b7b..287f453 100644 --- a/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml +++ b/package/crds/securitymonitoring.datadog.upbound.io_filters.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: filters.securitymonitoring.datadog.upbound.io spec: group: securitymonitoring.datadog.upbound.io @@ -19,33 +19,38 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 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' + 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' + 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 @@ -54,13 +59,14 @@ spec: 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' + 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 @@ -68,103 +74,114 @@ spec: 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. + 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. + 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. + 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"`. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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"`. + 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. + 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. + 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. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -177,9 +194,10 @@ spec: 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. + 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. @@ -189,21 +207,21 @@ spec: 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. + 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. + 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 @@ -213,17 +231,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -233,21 +253,21 @@ spec: 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. + 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. + 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 @@ -262,21 +282,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -287,14 +308,15 @@ spec: - 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. + 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. @@ -328,45 +350,50 @@ spec: 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. + 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. + 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. + 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"`. + 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. + 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. + 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. + 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. + description: |- + (Number) The version of the security filter. + The version of the security filter. type: number type: object conditions: @@ -375,14 +402,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -392,8 +428,9 @@ spec: 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. + 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 @@ -405,6 +442,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml b/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml index 02cb47a..dba9fc6 100644 --- a/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml +++ b/package/crds/securitymonitoring.datadog.upbound.io_rules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: rules.securitymonitoring.datadog.upbound.io spec: group: securitymonitoring.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: Rule is the Schema for the Rules API. Provides a Datadog Security @@ -40,14 +40,19 @@ spec: 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' + 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' + 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 @@ -56,13 +61,14 @@ spec: 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' + 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 @@ -70,863 +76,844 @@ spec: forProvider: properties: case: - description: '(Block List, Max: 10) Cases for generating signals. - (see below for nested schema) Cases for generating signals.' + description: |- + (Block List, Max: 10) Cases for generating signals. (see below for nested schema) + Cases for generating signals. items: properties: + action: + description: |- + (Block List) Action to perform when the case trigger (see below for nested schema) + Action to perform when the case trigger + items: + properties: + options: + description: |- + (Block List, Max: 1) Options on rules. (see below for nested schema) + Options for the action. + properties: + duration: + description: |- + (Number) Duration of the action in seconds. + Duration of the action in seconds. + type: number + type: object + type: + description: |- + (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`. + type: string + type: object + type: array 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. + 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. + 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. + 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`. + 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`. + 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. + description: |- + (Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (see below for nested schema) + Additional queries to filter matched events before they are processed. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules. 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`. + description: |- + (Block List) Action to perform when the case trigger (see below for nested schema) + 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. + 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 + groupSignalsBy: + description: |- + (List of String) Additional grouping to perform on top of the query grouping. + Additional grouping to perform on top of the query grouping. + items: + type: string + 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`. + 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. + 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. + 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: + description: |- + (Block List, Max: 1) Options on rules. (see below for nested schema) + Options on rules. + 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, anomaly_threshold. Defaults to "threshold". + The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`, `anomaly_threshold`. 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, 10800, 21600, 43200, 86400. + 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`, `10800`, `21600`, `43200`, `86400`. + 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. + 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 + 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, 43200, 86400. + 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`, `43200`, `86400`. + 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. + 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 + thirdPartyRuleOptions: + description: |- + party detection method. (see below for nested schema) + Options for rules using the third-party detection method. + 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: 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 + 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: object 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. + 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. + 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. + 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. + 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"`. + 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 + dataSource: + description: |- + (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". + Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `"logs"`. 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. + 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. + 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. + 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. + 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. + 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. + 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 + referenceTables: + description: |- + (Block List) Reference tables for filtering query results. (see below for nested schema) + Reference tables for filtering query results. + items: + properties: + checkPresence: + description: |- + (Boolean) Whether to include or exclude logs that match the reference table. + Whether to include or exclude logs that match the reference table. + type: boolean + columnName: + description: |- + (String) The name of the column in the reference table. + The name of the column in the reference table. + type: string + logFieldPath: + description: |- + (String) The field in the log that should be matched against the reference table. + The field in the log that should be matched against the reference table. + type: string + ruleQueryName: + description: |- + (String) The name of the query to filter. + The name of the query to filter. + type: string + tableName: + description: |- + (String) The name of the reference table. + The name of the reference table. 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. + 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"`. + 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. + 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 `""`. + 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. + 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. + 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. + 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. + description: |- + (Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. + Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. 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 + 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. + 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. + 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. + 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`. + 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"`. + 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 + validate: + description: |- + (Boolean) Whether or not to validate the Rule. + Whether or not to validate the Rule. + 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. + 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.' + description: |- + (Block List, Max: 10) Cases for generating signals. (see below for nested schema) + Cases for generating signals. items: properties: + action: + description: |- + (Block List) Action to perform when the case trigger (see below for nested schema) + Action to perform when the case trigger + items: + properties: + options: + description: |- + (Block List, Max: 1) Options on rules. (see below for nested schema) + Options for the action. + properties: + duration: + description: |- + (Number) Duration of the action in seconds. + Duration of the action in seconds. + type: number + type: object + type: + description: |- + (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`. + type: string + type: object + type: array 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. + 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. + 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. + 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`. + 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`. + 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. + description: |- + (Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (see below for nested schema) + Additional queries to filter matched events before they are processed. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules. 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`. + description: |- + (Block List) Action to perform when the case trigger (see below for nested schema) + 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. + 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 + groupSignalsBy: + description: |- + (List of String) Additional grouping to perform on top of the query grouping. + Additional grouping to perform on top of the query grouping. + items: + type: string + 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`. + 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. + 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. + 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: + description: |- + (Block List, Max: 1) Options on rules. (see below for nested schema) + Options on rules. + 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, anomaly_threshold. Defaults to "threshold". + The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`, `anomaly_threshold`. 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, 10800, 21600, 43200, 86400. + 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`, `10800`, `21600`, `43200`, `86400`. + 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. + 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 + 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, 43200, 86400. + 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`, `43200`, `86400`. + 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. + 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 + thirdPartyRuleOptions: + description: |- + party detection method. (see below for nested schema) + Options for rules using the third-party detection method. + 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: 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 + 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: object 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. + 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. + 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. + 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. + 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"`. + 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 + dataSource: + description: |- + (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". + Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `"logs"`. 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. + 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. + 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. + 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. + 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. + 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. + 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 + referenceTables: + description: |- + (Block List) Reference tables for filtering query results. (see below for nested schema) + Reference tables for filtering query results. + items: + properties: + checkPresence: + description: |- + (Boolean) Whether to include or exclude logs that match the reference table. + Whether to include or exclude logs that match the reference table. + type: boolean + columnName: + description: |- + (String) The name of the column in the reference table. + The name of the column in the reference table. + type: string + logFieldPath: + description: |- + (String) The field in the log that should be matched against the reference table. + The field in the log that should be matched against the reference table. + type: string + ruleQueryName: + description: |- + (String) The name of the query to filter. + The name of the query to filter. + type: string + tableName: + description: |- + (String) The name of the reference table. + The name of the reference table. 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. + 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"`. + 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. + 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 `""`. + 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. + 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. + 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. + 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. + description: |- + (Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. + Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. 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 + 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. + 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. + 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. + 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`. + 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"`. + 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 + validate: + description: |- + (Boolean) Whether or not to validate the Rule. + Whether or not to validate the Rule. + 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -939,9 +926,10 @@ spec: 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. + 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. @@ -951,21 +939,21 @@ spec: 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. + 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. + 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 @@ -975,17 +963,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -995,21 +985,21 @@ spec: 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. + 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. + 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 @@ -1024,21 +1014,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -1049,14 +1040,15 @@ spec: - 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. + 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. @@ -1086,422 +1078,411 @@ spec: atProvider: properties: case: - description: '(Block List, Max: 10) Cases for generating signals. - (see below for nested schema) Cases for generating signals.' + description: |- + (Block List, Max: 10) Cases for generating signals. (see below for nested schema) + Cases for generating signals. items: properties: + action: + description: |- + (Block List) Action to perform when the case trigger (see below for nested schema) + Action to perform when the case trigger + items: + properties: + options: + description: |- + (Block List, Max: 1) Options on rules. (see below for nested schema) + Options for the action. + properties: + duration: + description: |- + (Number) Duration of the action in seconds. + Duration of the action in seconds. + type: number + type: object + type: + description: |- + (String) The rule type. Valid values are application_security, log_detection, workload_security, signal_correlation. Defaults to "log_detection". + Type of action to perform when the case triggers. Valid values are `block_ip`, `block_user`, `user_behavior`. + type: string + type: object + type: array 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. + 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. + 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. + 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`. + 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`. + 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. + description: |- + (Block List) Additional queries to filter matched events before they are processed. Note: This field is deprecated for log detection, signal correlation, and workload security rules. (see below for nested schema) + Additional queries to filter matched events before they are processed. **Note**: This field is deprecated for log detection, signal correlation, and workload security rules. 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`. + description: |- + (Block List) Action to perform when the case trigger (see below for nested schema) + 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. + 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 + groupSignalsBy: + description: |- + (List of String) Additional grouping to perform on top of the query grouping. + Additional grouping to perform on top of the query grouping. + items: + type: string + 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`. + 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. + 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. + 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: + description: |- + (Block List, Max: 1) Options on rules. (see below for nested schema) + Options on rules. + 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, anomaly_threshold. Defaults to "threshold". + The detection method. Valid values are `threshold`, `new_value`, `anomaly_detection`, `impossible_travel`, `hardcoded`, `third_party`, `anomaly_threshold`. 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, 10800, 21600, 43200, 86400. + 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`, `10800`, `21600`, `43200`, `86400`. + 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. + 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 + 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, 43200, 86400. + 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`, `43200`, `86400`. + 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. + 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 + thirdPartyRuleOptions: + description: |- + party detection method. (see below for nested schema) + Options for rules using the third-party detection method. + 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: 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 + 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: object 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. + 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. + 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. + 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. + 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"`. + 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 + dataSource: + description: |- + (String) Source of events. Valid values are logs, audit, app_sec_spans, spans, security_runtime, network, events. Defaults to "logs". + Source of events. Valid values are `logs`, `audit`, `app_sec_spans`, `spans`, `security_runtime`, `network`, `events`. Defaults to `"logs"`. 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. + 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. + 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. + 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. + 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. + 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. + 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 + referenceTables: + description: |- + (Block List) Reference tables for filtering query results. (see below for nested schema) + Reference tables for filtering query results. + items: + properties: + checkPresence: + description: |- + (Boolean) Whether to include or exclude logs that match the reference table. + Whether to include or exclude logs that match the reference table. + type: boolean + columnName: + description: |- + (String) The name of the column in the reference table. + The name of the column in the reference table. + type: string + logFieldPath: + description: |- + (String) The field in the log that should be matched against the reference table. + The field in the log that should be matched against the reference table. + type: string + ruleQueryName: + description: |- + (String) The name of the query to filter. + The name of the query to filter. + type: string + tableName: + description: |- + (String) The name of the reference table. + The name of the reference table. 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. + 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"`. + 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. + 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 `""`. + 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. + 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. + 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. + 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. + description: |- + (Set of String) Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. + Tags for generated signals. Note: if default tags are present at provider level, they will be added to this resource. 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 + 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. + 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. + 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. + 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`. + 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"`. + 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 + validate: + description: |- + (Boolean) Whether or not to validate the Rule. + Whether or not to validate the Rule. + type: boolean type: object conditions: description: Conditions of the resource. @@ -1509,14 +1490,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -1526,8 +1516,9 @@ spec: 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. + 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 @@ -1539,6 +1530,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/sensitivedata.datadog.upbound.io_scannergrouporders.yaml b/package/crds/sensitivedata.datadog.upbound.io_scannergrouporders.yaml new file mode 100644 index 0000000..e7879cd --- /dev/null +++ b/package/crds/sensitivedata.datadog.upbound.io_scannergrouporders.yaml @@ -0,0 +1,354 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: scannergrouporders.sensitivedata.datadog.upbound.io +spec: + group: sensitivedata.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ScannerGroupOrder + listKind: ScannerGroupOrderList + plural: scannergrouporders + singular: scannergrouporder + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: ScannerGroupOrder is the Schema for the ScannerGroupOrders 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: ScannerGroupOrderSpec defines the desired state of ScannerGroupOrder + 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: ScannerGroupOrderStatus defines the observed state of ScannerGroupOrder. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/sensitivedata.datadog.upbound.io_scannergroups.yaml b/package/crds/sensitivedata.datadog.upbound.io_scannergroups.yaml new file mode 100644 index 0000000..6327c46 --- /dev/null +++ b/package/crds/sensitivedata.datadog.upbound.io_scannergroups.yaml @@ -0,0 +1,446 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: scannergroups.sensitivedata.datadog.upbound.io +spec: + group: sensitivedata.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ScannerGroup + listKind: ScannerGroupList + plural: scannergroups + singular: scannergroup + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: ScannerGroup is the Schema for the ScannerGroups 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: ScannerGroupSpec defines the desired state of ScannerGroup + 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. + properties: + query: + description: |- + (String) Query to filter the events. + Query to filter the events. + type: string + type: object + 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. + properties: + query: + description: |- + (String) Query to filter the events. + Query to filter the events. + type: string + type: object + 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: ScannerGroupStatus defines the observed state of ScannerGroup. + 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. + properties: + query: + description: |- + (String) Query to filter the events. + Query to filter the events. + type: string + type: object + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/sensitivedata.datadog.upbound.io_scannerrules.yaml b/package/crds/sensitivedata.datadog.upbound.io_scannerrules.yaml new file mode 100644 index 0000000..35a8909 --- /dev/null +++ b/package/crds/sensitivedata.datadog.upbound.io_scannerrules.yaml @@ -0,0 +1,767 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: scannerrules.sensitivedata.datadog.upbound.io +spec: + group: sensitivedata.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ScannerRule + listKind: ScannerRuleList + plural: scannerrules + singular: scannerrule + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: ScannerRule is the Schema for the ScannerRules API. 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. + 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: ScannerRuleSpec defines the desired state of ScannerRule + 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 + groupIdRef: + description: Reference to a ScannerGroup in sensitivedata to populate + groupId. + 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 + groupIdSelector: + description: Selector for a ScannerGroup in sensitivedata to populate + groupId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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. + 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 + 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 + priority: + description: |- + (Number) Priority level of the rule . Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + type: number + 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` + 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: 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 + groupIdRef: + description: Reference to a ScannerGroup in sensitivedata to populate + groupId. + 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 + groupIdSelector: + description: Selector for a ScannerGroup in sensitivedata to populate + groupId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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. + 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 + 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 + priority: + description: |- + (Number) Priority level of the rule . Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + type: number + 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` + 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: 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: ScannerRuleStatus defines the observed state of ScannerRule. + 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. If the rule has the `standard_pattern_id` field, then discarding this field will apply the recommended keywords. 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. + 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 + 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 + priority: + description: |- + (Number) Priority level of the rule . Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + Priority level of the rule (optional). Used to order sensitive data discovered in the sds summary page. It must be between 1 and 5 (1 being the most important). + type: number + 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` + 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: 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 deleted file mode 100644 index 4e609f1..0000000 --- a/package/crds/sensitivedatascanner.datadog.upbound.io_grouporders.yaml +++ /dev/null @@ -1,332 +0,0 @@ ---- -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 deleted file mode 100644 index c3c36cf..0000000 --- a/package/crds/sensitivedatascanner.datadog.upbound.io_groups.yaml +++ /dev/null @@ -1,418 +0,0 @@ ---- -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 deleted file mode 100644 index bd79cdf..0000000 --- a/package/crds/sensitivedatascanner.datadog.upbound.io_rules.yaml +++ /dev/null @@ -1,661 +0,0 @@ ---- -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/service.datadog.upbound.io_definitionyamls.yaml b/package/crds/service.datadog.upbound.io_definitionyamls.yaml new file mode 100644 index 0000000..aaaae4a --- /dev/null +++ b/package/crds/service.datadog.upbound.io_definitionyamls.yaml @@ -0,0 +1,348 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: definitionyamls.service.datadog.upbound.io +spec: + group: service.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: DefinitionYaml + listKind: DefinitionYamlList + plural: definitionyamls + singular: definitionyaml + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: DefinitionYaml is the Schema for the DefinitionYamls 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: DefinitionYamlSpec defines the desired state of DefinitionYaml + 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: DefinitionYamlStatus defines the observed state of DefinitionYaml. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/slo.datadog.upbound.io_corrections.yaml b/package/crds/slo.datadog.upbound.io_corrections.yaml new file mode 100644 index 0000000..64cd9f4 --- /dev/null +++ b/package/crds/slo.datadog.upbound.io_corrections.yaml @@ -0,0 +1,608 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: corrections.slo.datadog.upbound.io +spec: + group: slo.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: Correction + listKind: CorrectionList + plural: corrections + singular: correction + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Correction is the Schema for the Corrections 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: CorrectionSpec defines the desired state of Correction + 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 + sloIdRef: + description: Reference to a ServiceLevelObjective in slo to populate + sloId. + 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 + sloIdSelector: + description: Selector for a ServiceLevelObjective in slo to populate + sloId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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 + sloIdRef: + description: Reference to a ServiceLevelObjective in slo to populate + sloId. + 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 + sloIdSelector: + description: Selector for a ServiceLevelObjective in slo to populate + sloId. + properties: + matchControllerRef: + description: |- + MatchControllerRef ensures an object with the same controller reference + as the selecting object is selected. + type: boolean + matchLabels: + additionalProperties: + type: string + description: MatchLabels ensures an object with matching labels + is selected. + type: object + policy: + description: Policies for selection. + 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 + type: object + 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.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: CorrectionStatus defines the observed state of Correction. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/package/crds/slo.datadog.upbound.io_servicelevelobjectives.yaml b/package/crds/slo.datadog.upbound.io_servicelevelobjectives.yaml new file mode 100644 index 0000000..105f06c --- /dev/null +++ b/package/crds/slo.datadog.upbound.io_servicelevelobjectives.yaml @@ -0,0 +1,880 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + name: servicelevelobjectives.slo.datadog.upbound.io +spec: + group: slo.datadog.upbound.io + names: + categories: + - crossplane + - managed + - datadog + kind: ServiceLevelObjective + listKind: ServiceLevelObjectiveList + plural: servicelevelobjectives + singular: servicelevelobjective + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Synced')].status + name: SYNCED + type: string + - jsonPath: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string + - jsonPath: .metadata.annotations.crossplane\.io/external-name + name: EXTERNAL-NAME + type: string + - jsonPath: .metadata.creationTimestamp + name: AGE + type: date + name: v1beta1 + 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 + 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 + 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. + 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. Optionally, a fourth part, the query interval, can be provided. (see below for nested schema) + The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. Optionally, a fourth part, the query interval, can be provided. + 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. + 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. + 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 + 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. + 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: object + type: array + type: object + queryIntervalSeconds: + description: |- + (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. + The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`. + type: number + 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: object + 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. If default tags are present at the provider level, they will be added to this resource. + 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. If default tags are present at the provider level, they will be added to this resource. + 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. It checks if monitors added to a monitor SLO already exist. + Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. + 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 + 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 + 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. + 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. Optionally, a fourth part, the query interval, can be provided. (see below for nested schema) + The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. Optionally, a fourth part, the query interval, can be provided. + 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. + 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. + 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 + 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. + 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: object + type: array + type: object + queryIntervalSeconds: + description: |- + (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. + The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`. + type: number + 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: object + 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. If default tags are present at the provider level, they will be added to this resource. + 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. If default tags are present at the provider level, they will be added to this resource. + 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. It checks if monitors added to a monitor SLO already exist. + Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. + 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 + 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 + 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. + 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. Optionally, a fourth part, the query interval, can be provided. (see below for nested schema) + The time slice condition, composed of 3 parts: 1. The timeseries query, 2. The comparator, and 3. The threshold. Optionally, a fourth part, the query interval, can be provided. + 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. + 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. + 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 + 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. + 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: object + type: array + type: object + queryIntervalSeconds: + description: |- + (Number) The interval used when querying data, which defines the size of a time slice. Valid values are 60, 300. Defaults to 300. + The interval used when querying data, which defines the size of a time slice. Valid values are `60`, `300`. Defaults to `300`. + type: number + 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: object + 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. If default tags are present at the provider level, they will be added to this resource. + 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. If default tags are present at the provider level, they will be added to this resource. + 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. It checks if monitors added to a monitor SLO already exist. + Whether or not to validate the SLO. It checks if monitors added to a monitor SLO already exist. + 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 + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer + 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 + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer + 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 index d794d0f..afeff74 100644 --- a/package/crds/synthetics.datadog.upbound.io_concurrencycaps.yaml +++ b/package/crds/synthetics.datadog.upbound.io_concurrencycaps.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: concurrencycaps.synthetics.datadog.upbound.io spec: group: synthetics.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: ConcurrencyCap is the Schema for the ConcurrencyCaps API. Provides @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,45 +75,48 @@ spec: 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. + description: |- + demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. + Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. 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. + 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. + description: |- + demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. + Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -120,9 +129,10 @@ spec: 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. + 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. @@ -132,21 +142,21 @@ spec: 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. + 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. + 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 @@ -156,17 +166,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -176,21 +188,21 @@ spec: 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. + 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. + 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 @@ -205,21 +217,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -230,14 +243,15 @@ spec: - 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. + 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. @@ -266,9 +280,9 @@ spec: 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. + description: |- + demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. + Value of the on-demand concurrency cap, customizing the number of Synthetic tests run in parallel. Value must be at least 1. type: number type: object conditions: @@ -277,14 +291,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -294,8 +317,9 @@ spec: 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. + 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 @@ -307,6 +331,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml b/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml index 9fa4bbd..a8713b8 100644 --- a/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml +++ b/package/crds/synthetics.datadog.upbound.io_globalvariables.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: globalvariables.synthetics.datadog.upbound.io spec: group: synthetics.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: GlobalVariable is the Schema for the GlobalVariables API. Provides @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,111 +75,119 @@ spec: forProvider: properties: description: - description: (String) Description of the global variable. Description - of the global variable. + description: |- + (String) Description of the global variable. Defaults to "". + Description of the global variable. Defaults to `""`. type: string + isFido: + description: |- + (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + If set to true, the global variable is a FIDO variable. Defaults to `false`. + type: boolean + isTotp: + description: |- + (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. + If set to true, the global variable is a TOTP variable. Defaults to `false`. + type: boolean name: - description: (String) Synthetics global variable name. Synthetics - global variable name. + description: |- + (String) Synthetics global variable name. Must be all uppercase with underscores. + Synthetics global variable name. Must be all uppercase with underscores. 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.' + description: |- + (Block List) 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.' + description: |- + (Block List) 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. + description: |- + (Number) Number of digits for the OTP. Value must be between 4 and 10. + Number of digits for the OTP. Value must be between 4 and 10. type: number refreshInterval: - description: (Number) Interval for which to refresh - the token (in seconds). Interval for which to refresh - the token (in seconds). + description: |- + (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + Interval for which to refresh the token (in seconds). Value must be between 0 and 999. 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. + 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.' + description: |- + (Block List) 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 + 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. + 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)' + description: (Block List) (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`. + description: |- + (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, 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`. + description: |- + (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. + 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`. + description: |- + (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, local_variable. + Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `http_status_code`, `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. + description: |- + (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers to associate with the Synthetics global variable. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. 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`. + description: |- + (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. Defaults to false. + If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. 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. + 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. + description: |- + (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. + The value of the global variable. Required unless `is_fido` is set to `true`. properties: key: description: The key to select. @@ -191,137 +205,166 @@ spec: 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. + 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. + description: |- + (String) Description of the global variable. Defaults to "". + Description of the global variable. Defaults to `""`. type: string + isFido: + description: |- + (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + If set to true, the global variable is a FIDO variable. Defaults to `false`. + type: boolean + isTotp: + description: |- + (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. + If set to true, the global variable is a TOTP variable. Defaults to `false`. + type: boolean name: - description: (String) Synthetics global variable name. Synthetics - global variable name. + description: |- + (String) Synthetics global variable name. Must be all uppercase with underscores. + Synthetics global variable name. Must be all uppercase with underscores. 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.' + description: |- + (Block List) 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.' + description: |- + (Block List) 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. + description: |- + (Number) Number of digits for the OTP. Value must be between 4 and 10. + Number of digits for the OTP. Value must be between 4 and 10. type: number refreshInterval: - description: (Number) Interval for which to refresh - the token (in seconds). Interval for which to refresh - the token (in seconds). + description: |- + (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + Interval for which to refresh the token (in seconds). Value must be between 0 and 999. 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. + 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.' + description: |- + (Block List) 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 + 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. + 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)' + description: (Block List) (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`. + description: |- + (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, 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`. + description: |- + (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. + 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`. + description: |- + (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, local_variable. + Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `http_status_code`, `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. + description: |- + (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers to associate with the Synthetics global variable. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. 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`. + description: |- + (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. Defaults to false. + If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. 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. + 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. Required unless is_fido is set to true. + The value of the global variable. Required unless `is_fido` is set to `true`. + 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 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -334,9 +377,10 @@ spec: 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. + 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. @@ -346,21 +390,21 @@ spec: 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. + 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. + 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 @@ -370,17 +414,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -390,21 +436,21 @@ spec: 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. + 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. + 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 @@ -419,21 +465,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -444,14 +491,15 @@ spec: - 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. + 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. @@ -471,117 +519,121 @@ spec: 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. + description: |- + (String) Description of the global variable. Defaults to "". + Description of the global variable. Defaults to `""`. type: string id: description: (String) The ID of this resource. type: string + isFido: + description: |- + (Boolean) If set to true, the global variable is a FIDO variable. Defaults to false. + If set to true, the global variable is a FIDO variable. Defaults to `false`. + type: boolean + isTotp: + description: |- + (Boolean) If set to true, the global variable is a TOTP variable. Defaults to false. + If set to true, the global variable is a TOTP variable. Defaults to `false`. + type: boolean name: - description: (String) Synthetics global variable name. Synthetics - global variable name. + description: |- + (String) Synthetics global variable name. Must be all uppercase with underscores. + Synthetics global variable name. Must be all uppercase with underscores. 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.' + description: |- + (Block List) 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.' + description: |- + (Block List) 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. + description: |- + (Number) Number of digits for the OTP. Value must be between 4 and 10. + Number of digits for the OTP. Value must be between 4 and 10. type: number refreshInterval: - description: (Number) Interval for which to refresh - the token (in seconds). Interval for which to refresh - the token (in seconds). + description: |- + (Number) Interval for which to refresh the token (in seconds). Value must be between 0 and 999. + Interval for which to refresh the token (in seconds). Value must be between 0 and 999. 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. + 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.' + description: |- + (Block List) 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 + 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. + 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)' + description: (Block List) (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`. + description: |- + (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, 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`. + description: |- + (String, Sensitive) The value of the global variable. Required unless is_fido is set to true. + 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`. + description: |- + (String) Defines the source to use to extract the value. Valid values are http_body, http_header, http_status_code, local_variable. + Defines the source to use to extract the value. Valid values are `http_body`, `http_header`, `http_status_code`, `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. + description: |- + (Set of String, Deprecated) A list of role identifiers to associate with the Synthetics global variable. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers to associate with the Synthetics global variable. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. 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`. + description: |- + (Boolean) If set to true, the value of the global variable is hidden. This setting is automatically set to true if is_totp or is_fido is set to true. Defaults to false. + If set to true, the value of the global variable is hidden. This setting is automatically set to `true` if `is_totp` or `is_fido` is set to `true`. 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. + 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 @@ -592,14 +644,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -609,8 +670,9 @@ spec: 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. + 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 @@ -622,6 +684,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml b/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml index af1cdb5..a22e0ee 100644 --- a/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml +++ b/package/crds/synthetics.datadog.upbound.io_privatelocations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: privatelocations.synthetics.datadog.upbound.io spec: group: synthetics.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: PrivateLocation is the Schema for the PrivateLocations API. Provides @@ -39,14 +39,19 @@ spec: 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' + 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' + 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 @@ -55,33 +60,54 @@ spec: 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' + 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) API key used to generate the private location configuration. + API key used to generate the private location configuration. + 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 description: - description: (String) Description of the private location. Description - of the private location. + description: |- + (String) Description of the private location. Defaults to "". + Description of the private location. Defaults to `""`. type: string metadata: - description: '(Block List, Max: 1) The private location metadata - (see below for nested schema) The private location metadata' + description: |- + (Block List) 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. + description: |- + (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. items: type: string type: array @@ -89,43 +115,65 @@ spec: type: object type: array name: - description: (String) Synthetics private location name. Synthetics - private location 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. + 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. + 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: + apiKeySecretRef: + description: |- + (String, Sensitive) API key used to generate the private location configuration. + API key used to generate the private location configuration. + 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 description: - description: (String) Description of the private location. Description - of the private location. + description: |- + (String) Description of the private location. Defaults to "". + Description of the private location. Defaults to `""`. type: string metadata: - description: '(Block List, Max: 1) The private location metadata - (see below for nested schema) The private location metadata' + description: |- + (Block List) 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. + description: |- + (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. items: type: string type: array @@ -133,13 +181,14 @@ spec: type: object type: array name: - description: (String) Synthetics private location name. Synthetics - private location 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. + 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 @@ -147,19 +196,21 @@ spec: 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -172,9 +223,10 @@ spec: 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. + 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. @@ -184,21 +236,21 @@ spec: 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. + 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. + 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 @@ -208,17 +260,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -228,21 +282,21 @@ spec: 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. + 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. + 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 @@ -257,21 +311,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -282,14 +337,15 @@ spec: - 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. + 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. @@ -315,22 +371,23 @@ spec: atProvider: properties: description: - description: (String) Description of the private location. Description - of the private location. + description: |- + (String) Description of the private location. Defaults to "". + Description of the private location. Defaults to `""`. 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' + description: |- + (Block List) 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. + description: |- + (Set of String, Deprecated) A set of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A set of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. items: type: string type: array @@ -338,13 +395,14 @@ spec: type: object type: array name: - description: (String) Synthetics private location name. Synthetics - private location 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. + 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 @@ -355,14 +413,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -372,8 +439,9 @@ spec: 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. + 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 @@ -385,6 +453,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec diff --git a/package/crds/synthetics.datadog.upbound.io_tests.yaml b/package/crds/synthetics.datadog.upbound.io_tests.yaml index dd5a53d..5dcba48 100644 --- a/package/crds/synthetics.datadog.upbound.io_tests.yaml +++ b/package/crds/synthetics.datadog.upbound.io_tests.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.16.5 name: tests.synthetics.datadog.upbound.io spec: group: synthetics.datadog.upbound.io @@ -19,19 +19,19 @@ spec: 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: .status.conditions[?(@.type=='Ready')].status + name: READY + type: string - jsonPath: .metadata.annotations.crossplane\.io/external-name name: EXTERNAL-NAME type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date - name: v1alpha1 + name: v1beta1 schema: openAPIV3Schema: description: Test is the Schema for the Tests API. Provides a Datadog synthetics @@ -39,14 +39,19 @@ spec: test. 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' + 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' + 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 @@ -55,13 +60,14 @@ spec: 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' + 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 @@ -69,124 +75,132 @@ spec: forProvider: properties: apiStep: - description: (Block List) Steps for multistep api tests (see below - for nested schema) Steps for multistep api tests + description: |- + step api tests (see below for nested schema) + Steps for multi-step api tests items: properties: allowFailure: - description: (Boolean) Determines whether or not to continue - with test if this step fails. Determines whether or not - to continue with test if this step fails. + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + Determines whether or not to continue with test if this step fails. type: boolean assertion: - description: (Block List) Assertions used for the test. - Multiple assertion blocks are allowed with the structure - below. (see below for nested schema) Assertions used for - the test. Multiple `assertion` blocks are allowed with - the structure below. + description: |- + (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. items: properties: + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + type: string operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). 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: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + 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)). type: string property: - description: (String) If assertion type is header, - this is the header name. If assertion type is `header`, - this is the header name. + description: |- + (String) If assertion type is header, this is the header name. + If assertion type is `header`, this is the header name. type: string target: - description: (String) Expected value. Depends on the - assertion type, refer to Datadog documentation for - details. Expected value. Depends on the assertion - type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) - for details. + description: |- + (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details. type: string targetjsonpath: - description: '(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) Expected structure if `operator` - is `validatesJSONPath`. Exactly one nested block - is allowed with the structure below.' - items: - properties: - jsonpath: - description: (String) The JSON path to assert. - The JSON path to assert. - type: string - operator: - description: (String) Assertion operator. Note - Only some combinations of type and operator - are valid (please refer to Datadog documentation). - The specific operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. - Expected matching value. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. + properties: + elementsoperator: + description: |- + (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + type: string + jsonpath: + description: |- + (String) The JSON path to assert. + The JSON path to assert. + type: string + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + type: object + targetjsonschema: + description: |- + (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + properties: + jsonschema: + description: |- + (String) The JSON Schema to validate the body against. + The JSON Schema to validate the body against. + type: string + metaschema: + description: |- + 07". + The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + type: string + type: object targetxpath: - description: '(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) Expected structure if `operator` - is `validatesXPath`. Exactly one nested block is - allowed with the structure below.' - items: - properties: - operator: - description: (String) Assertion operator. Note - Only some combinations of type and operator - are valid (please refer to Datadog documentation). - The specific operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. - Expected matching value. - type: string - xpath: - description: (String) The xpath to assert. The - xpath to assert. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. + properties: + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + xpath: + description: |- + (String) The xpath to assert. + The xpath to assert. + type: string + type: object timingsScope: - description: (String) Timings scope for response time - assertions. Valid values are all, withoutDNS. Timings - scope for response time assertions. Valid values - are `all`, `withoutDNS`. + description: |- + (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. type: string type: - description: (String) Synthetics test type. Valid - values are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + 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`, `bodyHash`, `javascript`. type: string type: object type: array + exitIfSucceed: + description: |- + (Boolean) Determines whether or not to exit the test if the step succeeds. + Determines whether or not to exit the test if the step succeeds. + type: boolean extractedValue: - description: (Block List) Values to parse and save as variables - from the response. (see below for nested schema) Values - to parse and save as variables from the response. + description: |- + (Block List) Values to parse and save as variables from the response. (see below for nested schema) + Values to parse and save as variables from the response. items: properties: field: - description: (String) When type is http_header, name - of the header to use to extract the value. When - type is `http_header`, name of the header to use - to extract the value. + description: |- + (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. + When type is `http_header` or `grpc_metadata`, name of the header or metadatum to extract. type: string name: description: (String) Name of Datadog synthetics test. @@ -194,1587 +208,2067 @@ spec: parser: description: '(Block List, Min: 1, Max: 1) (see below for nested schema)' - items: - properties: - type: - description: (String) Synthetics test type. - Valid values are api, browser. Type of parser - for a Synthetics global variable from a synthetics - test. Valid values are `raw`, `json_path`, - `regex`, `x_path`. - type: string - value: - description: (String) Regex or JSON path used - for the parser. Not used with type raw. Regex - or JSON path used for the parser. Not used - with type `raw`. - type: string - type: object - type: array + properties: + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Regex or JSON path used for the parser. Not used with type `raw`. + type: string + type: object secure: - description: (Boolean) Determines whether or not the - extracted value will be obfuscated. Determines whether - or not the extracted value will be obfuscated. + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Determines whether or not the extracted value will be obfuscated. type: boolean type: - description: (String) Synthetics test type. Valid - values are api, browser. Property of the Synthetics - Test Response to use for the variable. Valid values - are `http_body`, `http_header`, `local_variable`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Property of the Synthetics Test Response to use for the variable. Valid values are `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`. type: string type: object type: array + extractedValuesFromScript: + description: |- + (String) Generate variables using JavaScript. + Generate variables using JavaScript. + type: string isCritical: - description: (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. 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: |- + (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. + Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. type: boolean name: - description: (String) Name of Datadog synthetics test. The - name of the step. + description: |- + (String) Name of Datadog synthetics test. + The name of the step. type: string requestBasicauth: - description: '(Block List, Max: 1) The HTTP basic authentication - credentials. Exactly one nested block is allowed with - the structure below. (see below for nested schema) The - HTTP basic authentication credentials. Exactly one nested - block is allowed with the structure below.' - items: - properties: - accessKeySecretRef: - description: (String, Sensitive) Access key for SIGV4 - authentication. Access key for `SIGV4` authentication. - 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 - accessTokenUrl: - description: client or oauth-rop authentication. Access - token url for `oauth-client` or `oauth-rop` authentication. - type: string - audience: - description: client or oauth-rop authentication. Defaults - to "". Audience for `oauth-client` or `oauth-rop` - authentication. Defaults to `""`. - type: string - clientId: - description: client or oauth-rop authentication. Client - ID for `oauth-client` or `oauth-rop` authentication. - type: string - clientSecretSecretRef: - description: client or oauth-rop authentication. Client - secret for `oauth-client` or `oauth-rop` authentication. - 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 - domain: - description: (String) Domain for ntlm authentication. - Domain for `ntlm` authentication. - type: string - passwordSecretRef: - description: (String, Sensitive) Password for authentication. - Password for authentication. - 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) Region for SIGV4 authentication. - Region for `SIGV4` authentication. - type: string - resource: - description: client or oauth-rop authentication. Defaults - to "". Resource for `oauth-client` or `oauth-rop` - authentication. Defaults to `""`. - type: string - scope: - description: client or oauth-rop authentication. Defaults - to "". Scope for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - secretKeySecretRef: - description: (String, Sensitive) Secret key for SIGV4 - authentication. Secret key for `SIGV4` authentication. - 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) Service name for SIGV4 authentication. - Service name for `SIGV4` authentication. - type: string - sessionToken: - description: (String) Session token for SIGV4 authentication. - Session token for `SIGV4` authentication. - type: string - tokenApiAuthentication: - description: client or oauth-rop authentication. Valid - values are header, body. Token API Authentication - for `oauth-client` or `oauth-rop` authentication. - Valid values are `header`, `body`. - type: string - type: - description: (String) Synthetics test type. Valid - values are api, browser. Type of basic authentication - to use when performing the test. Defaults to `"web"`. - type: string - username: - description: (String) Username for authentication. - Username for authentication. - type: string - workstation: - description: (String) Workstation for ntlm authentication. - Workstation for `ntlm` authentication. - type: string - type: object - type: array + description: |- + (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) + The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. + properties: + accessKeySecretRef: + description: |- + (String, Sensitive) Access key for SIGV4 authentication. + Access key for `SIGV4` authentication. + 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 + accessTokenUrl: + description: |- + client or oauth-rop authentication. + Access token url for `oauth-client` or `oauth-rop` authentication. + type: string + audience: + description: |- + client or oauth-rop authentication. Defaults to "". + Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + clientId: + description: |- + client or oauth-rop authentication. + Client ID for `oauth-client` or `oauth-rop` authentication. + type: string + clientSecretSecretRef: + description: |- + client or oauth-rop authentication. + Client secret for `oauth-client` or `oauth-rop` authentication. + 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 + domain: + description: |- + (String) Domain for ntlm authentication. + Domain for `ntlm` authentication. + type: string + passwordSecretRef: + description: |- + (String, Sensitive) Password for authentication. + Password for authentication. + 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) Region for SIGV4 authentication. + Region for `SIGV4` authentication. + type: string + resource: + description: |- + client or oauth-rop authentication. Defaults to "". + Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + scope: + description: |- + client or oauth-rop authentication. Defaults to "". + Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + secretKeySecretRef: + description: |- + (String, Sensitive) Secret key for SIGV4 authentication. + Secret key for `SIGV4` authentication. + 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) Service name for SIGV4 authentication. + Service name for `SIGV4` authentication. + type: string + sessionToken: + description: |- + (String) Session token for SIGV4 authentication. + Session token for `SIGV4` authentication. + type: string + tokenApiAuthentication: + description: |- + client or oauth-rop authentication. Valid values are header, body. + Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. + type: string + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of basic authentication to use when performing the test. Defaults to `"web"`. + type: string + username: + description: |- + (String) Username for authentication. + Username for authentication. + type: string + workstation: + description: |- + (String) Workstation for ntlm authentication. + Workstation for `ntlm` authentication. + type: string + type: object requestClientCertificate: - description: '(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) Client certificate to use when performing - the test request. Exactly one nested block is allowed - with the structure below.' - items: - properties: - cert: - description: '(Block List, Min: 1, Max: 1) (see below - for nested schema)' - items: + description: |- + (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) + Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. + properties: + cert: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - contentSecretRef: - description: (String, Sensitive) Content of - the certificate. Content of the certificate. - 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 - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: - - contentSecretRef + - key + - name + - namespace type: object - type: array - key: - description: '(Block List, Min: 1, Max: 1) (see below - for nested schema)' - items: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + key: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - contentSecretRef: - description: (String, Sensitive) Content of - the certificate. Content of the certificate. - 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 - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: - - contentSecretRef + - key + - name + - namespace type: object - type: array - type: object - type: array + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + type: object requestDefinition: - description: '(Block List, Max: 1) Required if type = "api". - The synthetics test request. (see below for nested schema) - The request for the api step.' + description: |- + (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) + The request for the api step. + properties: + acceptSelfSigned: + description: |- + (Boolean) For SSL test, whether or not the test should allow self signed certificates. + For SSL test, whether or not the test should allow self signed certificates. + type: boolean + allowInsecure: + description: |- + (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + Allows loading insecure content for a request in an API test or in a multistep API test step. + type: boolean + body: + description: |- + (String) The request body. + The request body. + type: string + bodyType: + description: |- + www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. + type: string + callType: + description: |- + (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + The type of gRPC call to perform. Valid values are `healthcheck`, `unary`. + type: string + certificateDomains: + description: |- + (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. + 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`. + items: + type: string + type: array + checkCertificateRevocation: + description: |- + (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + type: boolean + dnsServer: + description: |- + (String) DNS server to use for DNS tests (subtype = "dns"). + DNS server to use for DNS tests (`subtype = "dns"`). + type: string + dnsServerPort: + description: |- + (String) DNS server port to use for DNS tests. + DNS server port to use for DNS tests. + type: string + followRedirects: + description: |- + (Boolean) Determines whether or not the API HTTP test should follow redirects. + Determines whether or not the API HTTP test should follow redirects. + type: boolean + form: + additionalProperties: + type: string + description: |- + data. + Form data to be sent when `body_type` is `multipart/form-data`. + type: object + x-kubernetes-map-type: granular + host: + description: |- + (String) Host name to perform the test with. + Host name to perform the test with. + type: string + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + type: string + isMessageBase64Encoded: + description: |- + encoded. + Whether the message is base64-encoded. + type: boolean + message: + description: |- + (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 "". + For UDP and websocket tests, message to send with the request. + type: string + method: + description: |- + (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. + 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`. + type: string + noSavingResponseBody: + description: |- + (Boolean) Determines whether or not to save the response body. + Determines whether or not to save the response body. + type: boolean + numberOfPackets: + description: |- + (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + Number of pings to use per test for ICMP tests (`subtype = "icmp"`) between 0 and 10. + type: number + persistCookies: + description: |- + (Boolean) Persist cookies across redirects. + Persist cookies across redirects. + type: boolean + plainProtoFile: + description: |- + (String) The content of a proto file as a string. + The content of a proto file as a string. + type: string + port: + description: |- + (String) Port to use when performing the test. + Port to use when performing the test. + type: string + protoJsonDescriptor: + description: |- + (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. + type: string + servername: + description: |- + (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. + 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. + type: string + service: + description: |- + (String) The gRPC service on which you want to perform the gRPC call. + The gRPC service on which you want to perform the gRPC call. + type: string + shouldTrackHops: + description: |- + (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). + type: boolean + timeout: + description: |- + (Number) Timeout in seconds for the test. + Timeout in seconds for the test. + type: number + url: + description: |- + (String) The URL to send the request to. + The URL to send the request to. + type: string + type: object + requestFile: + description: |- + (Block List) Files to be used as part of the request in the test. (see below for nested schema) + Files to be used as part of the request in the test. items: properties: - allowInsecure: - description: (Boolean) Allows loading insecure content - for an HTTP request in an API test or in a multistep - API test step. Allows loading insecure content for - an HTTP request in an API test or in a multistep - API test step. - type: boolean - body: - description: (String) The request body. The request - body. - type: string - bodyType: - description: www-form-urlencoded, graphql. Type of - the request body. Valid values are `text/plain`, - `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, - `graphql`. - type: string - callType: - description: (String) The type of gRPC call to perform. - Valid values are healthcheck, unary. The type of - gRPC call to perform. Valid values are `healthcheck`, - `unary`. - type: string - certificateDomains: - description: (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. 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`. - items: - type: string - type: array - dnsServer: - description: (String) DNS server to use for DNS tests - (subtype = "dns"). DNS server to use for DNS tests - (`subtype = "dns"`). - type: string - dnsServerPort: - description: (Number) DNS server port to use for DNS - tests. DNS server port to use for DNS tests. - type: number - followRedirects: - description: (Boolean) Determines whether or not the - API HTTP test should follow redirects. Determines - whether or not the API HTTP test should follow redirects. - type: boolean - host: - description: (String) Host name to perform the test - with. Host name to perform the test with. - type: string - message: - description: (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 "". For UDP and - websocket tests, message to send with the request. - type: string - method: - description: (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. - 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`. - type: string - noSavingResponseBody: - description: (Boolean) Determines whether or not to - save the response body. Determines whether or not - to save the response body. - type: boolean - numberOfPackets: - description: (Number) Number of pings to use per test - for ICMP tests (subtype = "icmp") between 0 and - 10. Number of pings to use per test for ICMP tests - (`subtype = "icmp"`) between 0 and 10. - type: number - persistCookies: - description: (Boolean) Persist cookies across redirects. - Persist cookies across redirects. - type: boolean - plainProtoFile: - description: (String) The content of a proto file - as a string. The content of a proto file as a string. - type: string - port: - description: (Number) Port to use when performing - the test. Port to use when performing the test. - type: number - protoJsonDescriptor: - description: (String, Deprecated) A protobuf JSON - descriptor. Deprecated. Use plain_proto_file instead. - A protobuf JSON descriptor. **Deprecated.** Use - `plain_proto_file` instead. - type: string - servername: - description: (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. 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. + content: + description: |- + (String, Sensitive) Content of the certificate. + Content of the file. type: string - service: - description: (String) The gRPC service on which you - want to perform the gRPC call. The gRPC service - on which you want to perform the gRPC call. - type: string - shouldTrackHops: - description: (Boolean) This will turn on a traceroute - probe to discover all gateways along the path to - the host destination. For ICMP tests (subtype = - "icmp"). This will turn on a traceroute probe to - discover all gateways along the path to the host - destination. For ICMP tests (`subtype = "icmp"`). - type: boolean - timeout: - description: (Number) Timeout in seconds for the test. - Defaults to 60. Timeout in seconds for the test. - Defaults to `60`. + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the file. + type: string + originalFileName: + description: |- + (String) Original name of the file. + Original name of the file. + type: string + size: + description: |- + (Number) Size of the file. + Size of the file. type: number - url: - description: (String) The URL to send the request - to. The URL to send the request to. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the file. type: string type: object type: array requestHeaders: additionalProperties: type: string - description: (Map of String) Header name and value map. + description: |- + (Map of String) Header name and value map. Header name and value map. type: object x-kubernetes-map-type: granular + requestMetadata: + additionalProperties: + type: string + description: |- + (Map of String) Metadata to include when performing the gRPC request. + Metadata to include when performing the gRPC request. + type: object + x-kubernetes-map-type: granular requestProxy: - description: '(Block List, Max: 1) The proxy to perform - the test. (see below for nested schema) The proxy to perform - the test.' - items: - properties: - headers: - additionalProperties: - type: string - description: (Map of String) Header name and value - map. Header name and value map. - type: object - x-kubernetes-map-type: granular - url: - description: (String) The URL to send the request - to. URL of the proxy to perform the test. - type: string - type: object - type: array + description: |- + (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) + The proxy to perform the test. + properties: + headers: + additionalProperties: + type: string + description: |- + (Map of String) Header name and value map. + Header name and value map. + type: object + x-kubernetes-map-type: granular + url: + description: |- + (String) The URL to send the request to. + URL of the proxy to perform the test. + type: string + type: object requestQuery: additionalProperties: type: string - description: (Map of String) Query arguments name and value - map. Query arguments name and value map. + description: |- + (Map of String) Query arguments name and value map. + Query arguments name and value map. type: object x-kubernetes-map-type: granular retry: description: '(Block List, Max: 1) (see below for nested schema)' - items: - properties: - count: - description: (Number) Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to 0. Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to `0`. - type: number - interval: - description: (Number) Interval between a failed test - and the next retry in milliseconds. Defaults to - 300. Interval between a failed test and the next - retry in milliseconds. Defaults to `300`. - type: number - type: object - type: array + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object subtype: - description: (String) The subtype of the Synthetic API test. - Defaults to http. Valid values are http, ssl, tcp, dns, - multi, icmp, udp, websocket, grpc. The subtype of the - Synthetic multistep API test step. Valid values are `http`, - `grpc`. Defaults to `"http"`. - type: string + description: |- + (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + The subtype of the Synthetic multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `"http"`. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + The time to wait in seconds. Minimum value: 0. Maximum value: 180. + type: number type: object type: array assertion: - description: (Block List) Assertions used for the test. Multiple - assertion blocks are allowed with the structure below. (see - below for nested schema) Assertions used for the test. Multiple - `assertion` blocks are allowed with the structure below. + description: |- + (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. items: properties: + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + type: string operator: - description: (String) Assertion operator. Note Only some - combinations of type and operator are valid (please refer - to Datadog documentation). 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: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + 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)). type: string property: - description: (String) If assertion type is header, this - is the header name. If assertion type is `header`, this - is the header name. + description: |- + (String) If assertion type is header, this is the header name. + If assertion type is `header`, this is the header name. type: string target: - description: (String) Expected value. Depends on the assertion - type, refer to Datadog documentation for details. Expected - value. Depends on the assertion type, refer to [Datadog - documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) - for details. + description: |- + (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details. type: string targetjsonpath: - description: '(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) Expected structure if `operator` is `validatesJSONPath`. - Exactly one nested block is allowed with the structure - below.' - items: - properties: - jsonpath: - description: (String) The JSON path to assert. The - JSON path to assert. - type: string - operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). The specific - operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. Expected - matching value. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. + properties: + elementsoperator: + description: |- + (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + type: string + jsonpath: + description: |- + (String) The JSON path to assert. + The JSON path to assert. + type: string + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + type: object + targetjsonschema: + description: |- + (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + properties: + jsonschema: + description: |- + (String) The JSON Schema to validate the body against. + The JSON Schema to validate the body against. + type: string + metaschema: + description: |- + 07". + The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + type: string + type: object targetxpath: - description: '(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) Expected structure if `operator` is `validatesXPath`. - Exactly one nested block is allowed with the structure - below.' - items: - properties: - operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). The specific - operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. Expected - matching value. - type: string - xpath: - description: (String) The xpath to assert. The xpath - to assert. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. + properties: + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + xpath: + description: |- + (String) The xpath to assert. + The xpath to assert. + type: string + type: object timingsScope: - description: (String) Timings scope for response time assertions. - Valid values are all, withoutDNS. Timings scope for response - time assertions. Valid values are `all`, `withoutDNS`. + description: |- + (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. type: string type: - description: (String) Synthetics test type. Valid values - are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + 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`, `bodyHash`, `javascript`. type: string type: object type: array browserStep: - description: (Block List) Steps for browser tests. (see below - for nested schema) Steps for browser tests. + description: |- + (Block List) Steps for browser tests. (see below for nested schema) + Steps for browser tests. items: properties: allowFailure: - description: (Boolean) Determines whether or not to continue - with test if this step fails. Determines if the step should - be allowed to fail. + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + Determines if the step should be allowed to fail. + type: boolean + alwaysExecute: + description: |- + (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + Determines whether or not to always execute this step even if the previous step failed or was skipped. + type: boolean + exitIfSucceed: + description: |- + (Boolean) Determines whether or not to exit the test if the step succeeds. + Determines whether or not to exit the test if the step succeeds. type: boolean forceElementUpdate: - description: (Boolean) Force update of the "element" parameter - for the step Force update of the "element" parameter for - the step + description: |- + (Boolean) Force update of the "element" parameter for the step + Force update of the "element" parameter for the step type: boolean isCritical: - description: (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. 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: |- + (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. + Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. type: boolean + localKey: + description: |- + (String) A unique identifier used to track steps after reordering. + A unique identifier used to track steps after reordering. + type: string name: - description: (String) Name of Datadog synthetics test. Name - of the step. + description: |- + (String) Name of Datadog synthetics test. + Name of the step. type: string noScreenshot: - description: (Boolean) Prevents saving screenshots of the - step. Prevents saving screenshots of the step. + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the step. type: boolean params: - description: '(Block List, Min: 1, Max: 1) Parameters for - the step. (see below for nested schema) Parameters for - the step.' - items: - properties: - attribute: - description: (String) Name of the attribute to use - for an "assert attribute" step. Name of the attribute - to use for an "assert attribute" step. - type: string - check: - description: (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 type to use for an assertion - step. Valid values are `equals`, `notEquals`, `contains`, - `notContains`, `startsWith`, `notStartsWith`, `greater`, - `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, - `between`, `isEmpty`, `notIsEmpty`. - type: string - clickType: - description: (String) Type of click to use for a "click" - step. Type of click to use for a "click" step. - type: string - code: - description: (String) Javascript code to use for the - step. Javascript code to use for the step. - type: string - delay: - description: (Number) Delay between each key stroke - for a "type test" step. Delay between each key stroke - for a "type test" step. - type: number - element: - description: (String) Element to use for the step, - json encoded string. Element to use for the step, - json encoded string. - type: string - elementUserLocator: - description: '(Block List, Max: 1) Custom user selector - to use for the step. (see below for nested schema) - Custom user selector to use for the step.' - items: + description: |- + (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + Parameters for the step. + properties: + attribute: + description: |- + (String) Name of the attribute to use for an "assert attribute" step. + Name of the attribute to use for an "assert attribute" step. + type: string + check: + description: |- + (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. + type: string + clickType: + description: |- + (String) Type of click to use for a "click" step. + Type of click to use for a "click" step. + type: string + clickWithJavascript: + description: |- + (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + Whether to use `element.click()` for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + type: boolean + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + Javascript code to use for the step. + type: string + delay: + description: |- + (Number) Delay between each key stroke for a "type test" step. + Delay between each key stroke for a "type test" step. + type: number + element: + description: |- + (String) Element to use for the step, JSON encoded string. + Element to use for the step, JSON encoded string. + type: string + elementUserLocator: + description: |- + (Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema) + Custom user selector to use for the step. + properties: + failTestOnCannotLocate: + description: |- + (Boolean) Defaults to false. + Defaults to `false`. + type: boolean + value: + description: '(Number) The time to wait in seconds. + Minimum value: 0. Maximum value: 180.' properties: - failTestOnCannotLocate: - description: (Boolean) Defaults to false. Defaults - to `false`. - type: boolean + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Defaults to `"css"`. + type: string value: - description: (String) Regex or JSON path used - for the parser. Not used with type raw. - items: - properties: - type: - description: (String) Synthetics test - type. Valid values are api, browser. - Defaults to `"css"`. - type: string - value: - description: (String) Regex or JSON path - used for the parser. Not used with type - raw. - type: string - type: object - type: array + description: '(Number) The time to wait in seconds. + Minimum value: 0. Maximum value: 180.' + type: string type: object - type: array - email: - description: (String) Details of the email for an - "assert email" step. Details of the email for an - "assert email" step. - type: string - file: - description: (String) JSON encoded string used for - an "assert download" step. Refer to the examples - for a usage example showing the schema. JSON encoded - string used for an "assert download" step. Refer - to the examples for a usage example showing the - schema. - type: string - files: - description: (String) Details of the files for an - "upload files" step, json encoded string. Details - of the files for an "upload files" step, json encoded - string. - type: string - modifiers: - description: (List of String) Modifier to use for - a "press key" step. Modifier to use for a "press - key" step. - items: + type: object + email: + description: |- + (String) Details of the email for an "assert email" step, JSON encoded string. + Details of the email for an "assert email" step, JSON encoded string. + type: string + file: + description: |- + (String) JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + type: string + files: + description: |- + (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + type: string + modifiers: + description: |- + (List of String) Modifier to use for a "press key" step. + Modifier to use for a "press key" step. + items: + type: string + type: array + playingTabId: + description: |- + (String) ID of the tab to play the subtest. + ID of the tab to play the subtest. + type: string + request: + description: |- + (String) Request for an API step. + Request for an API step. + type: string + requests: + description: |- + (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + type: string + subtestPublicId: + description: |- + (String) ID of the Synthetics test to use as subtest. + ID of the Synthetics test to use as subtest. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value of the step. + type: string + variable: + description: |- + (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + Details of the variable to extract. + properties: + example: + description: |- + (String) Example of the extracted variable. Defaults to "". + Example of the extracted variable. Defaults to `""`. type: string - type: array - playingTabId: - description: (String) ID of the tab to play the subtest. - ID of the tab to play the subtest. - type: string - request: - description: (String) Request for an API step. Request - for an API step. - type: string - subtestPublicId: - description: (String) ID of the Synthetics test to - use as subtest. ID of the Synthetics test to use - as subtest. - type: string - value: - description: (String) Regex or JSON path used for - the parser. Not used with type raw. Value of the - step. - type: string - variable: - description: '(Block List, Max: 1) Details of the - variable to extract. (see below for nested schema) - Details of the variable to extract.' - items: - properties: - example: - description: (String) Example of the extracted - variable. Defaults to "". Example of the extracted - variable. Defaults to `""`. - type: string - name: - description: (String) Name of Datadog synthetics - test. Name of the extracted variable. - type: string - type: object - type: array - withClick: - description: (Boolean) For "file upload" steps. For - "file upload" steps. - type: boolean - x: - description: (Number) X coordinates for a "scroll - step". X coordinates for a "scroll step". - type: number - "y": - description: (Number) Y coordinates for a "scroll - step". Y coordinates for a "scroll step". - type: number - type: object - type: array + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the extracted variable. + type: string + secure: + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Whether the value of this variable will be obfuscated in test results. Defaults to `false`. + type: boolean + type: object + withClick: + description: |- + (Boolean) For "file upload" steps. + For "file upload" steps. + type: boolean + x: + description: |- + (Number) X coordinates for a "scroll step". + X coordinates for a "scroll step". + type: number + "y": + description: |- + (Number) Y coordinates for a "scroll step". + Y coordinates for a "scroll step". + type: number + type: object timeout: - description: (Number) Timeout in seconds for the test. Defaults - to 60. Used to override the default timeout of a step. + description: |- + (Number) Timeout in seconds for the test. + Used to override the default timeout of a step. type: number type: - description: (String) Synthetics test type. Valid values - are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `assertRequests`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`. type: string type: object type: array browserVariable: - description: (Block List) Variables used for a browser test steps. - Multiple variable blocks are allowed with the structure below. - (see below for nested schema) Variables used for a browser test - steps. Multiple `variable` blocks are allowed with the structure - below. + description: |- + (Block List) Variables used for a browser test steps. Multiple variable blocks are allowed with the structure below. (see below for nested schema) + Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below. items: properties: example: - description: (String) Example of the extracted variable. - Defaults to "". Example for the variable. Defaults to - `""`. + description: |- + (String) Example of the extracted variable. Defaults to "". + Example for the variable. Defaults to `""`. type: string id: - description: (String) The ID of this resource. 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: |- + (String) The ID of this resource. + ID of the global variable to use. This is actually only used (and required) in the case of using a variable of type `global`. type: string name: - description: (String) Name of Datadog synthetics test. Name - of the variable. + description: |- + (String) Name of Datadog synthetics test. + Name of the variable. type: string pattern: - description: (String) Pattern of the variable. Defaults - to "". Pattern of the variable. Defaults to `""`. + description: |- + (String) Pattern of the variable. Defaults to "". + Pattern of the variable. Defaults to `""`. type: string secure: - description: (Boolean) Determines whether or not the extracted - value will be obfuscated. Determines whether or not the - browser test variable is obfuscated. Can only be used - with a browser variable of type `text` + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text` type: boolean type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of browser test variable. Valid - values are `element`, `email`, `global`, `javascript`, - `text`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of browser test variable. Valid values are `element`, `email`, `global`, `text`. type: string type: object type: array + configInitialApplicationArguments: + additionalProperties: + type: string + description: |- + (Map of String) Initial application arguments for the mobile test. + Initial application arguments for the mobile test. + type: object + x-kubernetes-map-type: granular configVariable: - description: (Block List) Variables used for the test configuration. - Multiple config_variable blocks are allowed with the structure - below. (see below for nested schema) Variables used for the - test configuration. Multiple `config_variable` blocks are allowed - with the structure below. + description: |- + (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) + Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below. items: properties: example: - description: (String) Example of the extracted variable. - Defaults to "". Example for the variable. This value is - not returned by the api when `secure = true`. + description: |- + (String) Example of the extracted variable. Defaults to "". + Example for the variable. This value is not returned by the api when `secure = true`. type: string id: - description: (String) The ID of this resource. When type - = `global`, ID of the global variable to use. + description: |- + (String) The ID of this resource. + When type = `global`, ID of the global variable to use. type: string name: - description: (String) Name of Datadog synthetics test. Name - of the variable. + description: |- + (String) Name of Datadog synthetics test. + Name of the variable. type: string pattern: - description: (String) Pattern of the variable. Defaults - to "". Pattern of the variable. This value is not returned - by the api when `secure = true`. + description: |- + (String) Pattern of the variable. Defaults to "". + Pattern of the variable. This value is not returned by the api when `secure = true`. type: string secure: - description: (Boolean) Determines whether or not the extracted - value will be obfuscated. Whether the value of this variable - will be obfuscated in test results. Defaults to `false`. + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Whether the value of this variable will be obfuscated in test results. Defaults to `false`. type: boolean type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of test configuration variable. - Valid values are `global`, `text`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of test configuration variable. Valid values are `global`, `text`, `email`. type: string type: object type: array deviceIds: - description: (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. - 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: |- + (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + Required if `type = "browser"`. Array with the different device IDs used to run the test. items: type: string type: array + forceDeleteDependencies: + description: |- + (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + type: boolean locations: - description: (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. Array of locations used to run - the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) - to retrieve the list of locations. + description: |- + (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 or find the possible values listed in this API response. + Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true). items: type: string type: array x-kubernetes-list-type: set message: - description: (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 "". 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 `""`. - type: string - name: - description: (String) Name of Datadog synthetics test. Name of - Datadog synthetics test. + description: |- + (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 "". + 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 `""`. type: string - optionsList: + mobileOptionsList: description: '(Block List, Max: 1) (see below for nested schema)' + properties: + allowApplicationCrash: + description: (Boolean) + type: boolean + bindings: + description: |- + (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) + Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource + items: + properties: + principals: + description: (List of String) + items: + type: string + type: array + relation: + description: |- + (String) Valid values are editor, viewer. + Valid values are `editor`, `viewer`. + type: string + type: object + type: array + ci: + description: |- + (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + CI/CD options for a Synthetic test. + properties: + executionRule: + description: |- + (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + type: string + type: object + defaultStepTimeout: + description: (Number) + type: number + deviceIds: + description: (List of String) Required if type = "browser". + Array with the different device IDs used to run the test. + items: + type: string + type: array + disableAutoAcceptAlert: + description: (Boolean) + type: boolean + minFailureDuration: + description: |- + (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + type: number + mobileApplication: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + applicationId: + description: (String) + type: string + referenceId: + description: (String) + type: string + referenceType: + description: |- + (String) Valid values are latest, version. + Valid values are `latest`, `version`. + type: string + type: object + monitorName: + description: |- + (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + type: string + monitorOptions: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + escalationMessage: + description: |- + notification. + A message to include with a re-notification. + type: string + notificationPresetName: + description: |- + (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + type: string + renotifyInterval: + description: |- + (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. + 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`. + type: number + renotifyOccurrences: + description: |- + (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + type: number + type: object + monitorPriority: + description: (Number) + type: number + noScreenshot: + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the steps. + type: boolean + restrictedRoles: + description: |- + (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + items: + type: string + type: array + x-kubernetes-list-type: set + retry: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object + scheduling: + description: |- + (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + Object containing timeframes and timezone used for advanced scheduling. + properties: + timeframes: + description: |- + (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + Array containing objects describing the scheduling pattern to apply to each day. + items: + properties: + day: + description: |- + (Number) Number representing the day of the week + Number representing the day of the week + type: number + from: + description: |- + (String) The hour of the day on which scheduling starts. + The hour of the day on which scheduling starts. + type: string + to: + description: |- + (String) The hour of the day on which scheduling ends. + The hour of the day on which scheduling ends. + type: string + type: object + type: array + timezone: + description: |- + (String) Timezone in which the timeframe is based. + Timezone in which the timeframe is based. + type: string + type: object + tickEvery: + description: |- + 604800 for mobile tests. + How often the test should run (in seconds). Valid range is `300-604800` for mobile tests. + type: number + verbosity: + description: (Number) + type: number + type: object + mobileStep: + description: |- + (Block List) Steps for mobile tests (see below for nested schema) + Steps for mobile tests items: properties: - acceptSelfSigned: - description: (Boolean) For SSL test, whether or not the - test should allow self signed certificates. For SSL test, - whether or not the test should allow self signed certificates. - type: boolean - allowInsecure: - description: (Boolean) Allows loading insecure content for - an HTTP request in an API test or in a multistep API test - step. Allows loading insecure content for an HTTP request - in an API test or in a multistep API test step. - type: boolean - checkCertificateRevocation: - description: (Boolean) For SSL test, whether or not the - test should fail on revoked certificate in stapled OCSP. - For SSL test, whether or not the test should fail on revoked - certificate in stapled OCSP. - type: boolean - ci: - description: '(Block List, Max: 1) CI/CD options for a Synthetic - test. (see below for nested schema) CI/CD options for - a Synthetic test.' - items: - properties: - executionRule: - description: (String) Execution rule for a Synthetics - test. Valid values are blocking, non_blocking, skipped. - Execution rule for a Synthetics test. Valid values - are `blocking`, `non_blocking`, `skipped`. - type: string - type: object - type: array - disableCors: - description: Origin Resource Sharing for browser tests. - Disable Cross-Origin Resource Sharing for browser tests. - type: boolean - disableCsp: - description: (Boolean) Disable Content Security Policy for - browser tests. Disable Content Security Policy for browser - tests. + allowFailure: + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + A boolean set to allow this step to fail. type: boolean - followRedirects: - description: (Boolean) Determines whether or not the API - HTTP test should follow redirects. Determines whether - or not the API HTTP test should follow redirects. + hasNewStepElement: + description: |- + (Boolean) A boolean set to determine if the step has a new step element. + A boolean set to determine if the step has a new step element. type: boolean - httpVersion: - description: (String) HTTP version to use for a Synthetics - API test. Valid values are http1, http2, any. HTTP version - to use for a Synthetics API test. Valid values are `http1`, - `http2`, `any`. - type: string - ignoreServerCertificateError: - description: (Boolean) Ignore server certificate error for - browser tests. Ignore server certificate error for browser - tests. + isCritical: + description: |- + (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. + A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails. type: boolean - initialNavigationTimeout: - description: (Number) Timeout before declaring the initial - step as failed (in seconds) for browser tests. Timeout - before declaring the initial step as failed (in seconds) - for browser tests. - type: number - minFailureDuration: - description: (Number) Minimum amount of time in failure - required to trigger an alert (in seconds). Default is - 0. Minimum amount of time in failure required to trigger - an alert (in seconds). Default is `0`. - type: number - minLocationFailed: - description: (Number) Minimum number of locations in failure - required to trigger an alert. Defaults to 1. Minimum number - of locations in failure required to trigger an alert. - Defaults to `1`. - type: number - monitorName: - description: (String) The monitor name is used for the alert - title as well as for all monitor dashboard widgets and - SLOs. The monitor name is used for the alert title as - well as for all monitor dashboard widgets and SLOs. + name: + description: |- + (String) Name of Datadog synthetics test. + The name of the step. type: string - monitorOptions: - description: '(Block List, Max: 1) (see below for nested - schema)' - items: - properties: - renotifyInterval: - description: (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. 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`. - type: number - type: object - type: array - monitorPriority: - description: (Number) - type: number noScreenshot: - description: (Boolean) Prevents saving screenshots of the - step. Prevents saving screenshots of the steps. + description: |- + (Boolean) Prevents saving screenshots of the step. + A boolean set to not take a screenshot for the step. type: boolean - 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 - retry: - description: '(Block List, Max: 1) (see below for nested - schema)' - items: - properties: - count: - description: (Number) Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to 0. Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to `0`. - type: number - interval: - description: (Number) Interval between a failed test - and the next retry in milliseconds. Defaults to - 300. Interval between a failed test and the next - retry in milliseconds. Defaults to `300`. - type: number - type: object - type: array - rumSettings: - description: '(Block List, Max: 1) The RUM data collection - settings for the Synthetic browser test. (see below for - nested schema) The RUM data collection settings for the - Synthetic browser test.' - items: - type: string - type: array - scheduling: - description: '(Block List, Max: 1) Object containing timeframes - and timezone used for advanced scheduling. (see below - for nested schema) Object containing timeframes and timezone - used for advanced scheduling.' - items: - properties: - timeframes: - description: '(Block Set, Min: 1) Array containing - objects describing the scheduling pattern to apply - to each day. (see below for nested schema) Array - containing objects describing the scheduling pattern - to apply to each day.' - items: - properties: - day: - description: (Number) Number representing the - day of the week Number representing the day - of the week - type: number - from: - description: (String) The hour of the day on - which scheduling starts. The hour of the day - on which scheduling starts. - type: string - to: - description: (String) The hour of the day on - which scheduling ends. The hour of the day - on which scheduling ends. - type: string - type: object - type: array - timezone: - description: (String) Timezone in which the timeframe - is based. Timezone in which the timeframe is based. - type: string - type: object - type: array - tickEvery: - description: (Number) How often the test should run (in - seconds). How often the test should run (in seconds). - type: number - type: object - type: array - requestBasicauth: - description: '(Block List, Max: 1) The HTTP basic authentication - credentials. Exactly one nested block is allowed with the structure - below. (see below for nested schema) The HTTP basic authentication - credentials. Exactly one nested block is allowed with the structure - below.' - items: - properties: - accessKeySecretRef: - description: (String, Sensitive) Access key for SIGV4 authentication. - Access key for `SIGV4` authentication. - 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 - accessTokenUrl: - description: client or oauth-rop authentication. Access - token url for `oauth-client` or `oauth-rop` authentication. - type: string - audience: - description: client or oauth-rop authentication. Defaults - to "". Audience for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - clientId: - description: client or oauth-rop authentication. Client - ID for `oauth-client` or `oauth-rop` authentication. - type: string - clientSecretSecretRef: - description: client or oauth-rop authentication. Client - secret for `oauth-client` or `oauth-rop` authentication. - 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 - domain: - description: (String) Domain for ntlm authentication. Domain - for `ntlm` authentication. - type: string - passwordSecretRef: - description: (String, Sensitive) Password for authentication. - Password for authentication. + params: + description: |- + (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + Parameters for the step. properties: - key: - description: The key to select. - type: string - name: - description: Name of the secret. + check: + description: |- + (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. type: string - namespace: - description: Namespace of the secret. - type: string - required: - - key - - name - - namespace - type: object - region: - description: (String) Region for SIGV4 authentication. Region - for `SIGV4` authentication. - type: string - resource: - description: client or oauth-rop authentication. Defaults - to "". Resource for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - scope: - description: client or oauth-rop authentication. Defaults - to "". Scope for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - secretKeySecretRef: - description: (String, Sensitive) Secret key for SIGV4 authentication. - Secret key for `SIGV4` authentication. - properties: - key: - description: The key to select. + delay: + description: |- + (Number) Delay between each key stroke for a "type test" step. + Delay between each key stroke for a "type test" step. + type: number + direction: + description: |- + (String) Valid values are up, down, left, right. + Valid values are `up`, `down`, `left`, `right`. type: string - name: - description: Name of the secret. + element: + description: |- + (String) Element to use for the step, JSON encoded string. + Element to use for the step, JSON encoded string. + properties: + context: + description: (String) + type: string + contextType: + description: |- + (String) Valid values are native, web. + Valid values are `native`, `web`. + type: string + elementDescription: + description: (String) + type: string + multiLocator: + additionalProperties: + type: string + description: (Map of String) + type: object + x-kubernetes-map-type: granular + relativePosition: + description: '(Block List, Max: 1) (see below for + nested schema)' + properties: + x: + description: (Number) X coordinates for a "scroll + step". + type: number + "y": + description: (Number) Y coordinates for a "scroll + step". + type: number + type: object + textContent: + description: (String) + type: string + userLocator: + description: '(Block List, Max: 1) (see below for + nested schema)' + properties: + failTestOnCannotLocate: + description: (Boolean) Defaults to false. + type: boolean + values: + description: '(Block List, Max: 5) (see below + for nested schema)' + items: + properties: + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`. + type: string + value: + description: '(Number) The time to wait + in seconds. Minimum value: 0. Maximum + value: 180.' + type: string + type: object + type: array + type: object + viewName: + description: (String) + type: string + type: object + enable: + description: (Boolean) + type: boolean + maxScrolls: + description: (Number) + type: number + positions: + description: (Block List) (see below for nested schema) + items: + properties: + x: + description: (Number) X coordinates for a "scroll + step". + type: number + "y": + description: (Number) Y coordinates for a "scroll + step". + type: number + type: object + type: array + subtestPublicId: + description: |- + (String) ID of the Synthetics test to use as subtest. + ID of the Synthetics test to use as subtest. type: string - namespace: - description: Namespace of the secret. + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value of the step. type: string - required: - - key - - name - - namespace + variable: + description: |- + (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + Details of the variable to extract. + properties: + example: + description: |- + (String) Example of the extracted variable. Defaults to "". + Example of the extracted variable. Defaults to `""`. + type: string + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the extracted variable. + type: string + type: object + withEnter: + description: (Boolean) + type: boolean + x: + description: |- + (Number) X coordinates for a "scroll step". + X coordinates for a "scroll step". + type: number + "y": + description: |- + (Number) Y coordinates for a "scroll step". + Y coordinates for a "scroll step". + type: number type: object - serviceName: - description: (String) Service name for SIGV4 authentication. - Service name for `SIGV4` authentication. - type: string - sessionToken: - description: (String) Session token for SIGV4 authentication. - Session token for `SIGV4` authentication. - type: string - tokenApiAuthentication: - description: client or oauth-rop authentication. Valid values - are header, body. Token API Authentication for `oauth-client` - or `oauth-rop` authentication. Valid values are `header`, - `body`. + publicId: + description: |- + (String) The identifier of the step on the backend. + The public ID of the step. type: string + timeout: + description: |- + (Number) Timeout in seconds for the test. + The time before declaring a step failed. + type: number type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of basic authentication to use - when performing the test. Defaults to `"web"`. - type: string - username: - description: (String) Username for authentication. Username - for authentication. - type: string - workstation: - description: (String) Workstation for ntlm authentication. - Workstation for `ntlm` authentication. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`. type: string type: object type: array + name: + description: |- + (String) Name of Datadog synthetics test. + Name of Datadog synthetics test. + type: string + optionsList: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + acceptSelfSigned: + description: |- + (Boolean) For SSL test, whether or not the test should allow self signed certificates. + For SSL test, whether or not the test should allow self signed certificates. + type: boolean + allowInsecure: + description: |- + (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + Allows loading insecure content for a request in an API test or in a multistep API test step. + type: boolean + checkCertificateRevocation: + description: |- + (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + type: boolean + ci: + description: |- + (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + CI/CD options for a Synthetic test. + properties: + executionRule: + description: |- + (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + type: string + type: object + disableCors: + description: |- + Origin Resource Sharing for browser tests. + Disable Cross-Origin Resource Sharing for browser tests. + type: boolean + disableCsp: + description: |- + (Boolean) Disable Content Security Policy for browser tests. + Disable Content Security Policy for browser tests. + type: boolean + followRedirects: + description: |- + (Boolean) Determines whether or not the API HTTP test should follow redirects. + Determines whether or not the API HTTP test should follow redirects. + type: boolean + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + type: string + ignoreServerCertificateError: + description: |- + (Boolean) Ignore server certificate error for browser tests. + Ignore server certificate error for browser tests. + type: boolean + initialNavigationTimeout: + description: |- + (Number) Timeout before declaring the initial step as failed (in seconds) for browser tests. + Timeout before declaring the initial step as failed (in seconds) for browser tests. + type: number + minFailureDuration: + description: |- + (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + type: number + minLocationFailed: + description: |- + (Number) Minimum number of locations in failure required to trigger an alert. Defaults to 1. + Minimum number of locations in failure required to trigger an alert. Defaults to `1`. + type: number + monitorName: + description: |- + (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + type: string + monitorOptions: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + escalationMessage: + description: |- + notification. + A message to include with a re-notification. + type: string + notificationPresetName: + description: |- + (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + type: string + renotifyInterval: + description: |- + (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. + 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`. + type: number + renotifyOccurrences: + description: |- + (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + type: number + type: object + monitorPriority: + description: (Number) + type: number + noScreenshot: + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the steps. + type: boolean + restrictedRoles: + description: |- + (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + items: + type: string + type: array + x-kubernetes-list-type: set + retry: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object + rumSettings: + description: |- + (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) + The RUM data collection settings for the Synthetic browser test. + properties: + applicationId: + description: |- + (String) + RUM application ID used to collect RUM data for the browser test. + type: string + clientTokenId: + description: |- + (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + RUM application API key ID used to collect RUM data for the browser test. + type: number + isEnabled: + description: |- + (Boolean) Determines whether RUM data is collected during test runs. + Determines whether RUM data is collected during test runs. + type: boolean + type: object + scheduling: + description: |- + (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + Object containing timeframes and timezone used for advanced scheduling. + properties: + timeframes: + description: |- + (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + Array containing objects describing the scheduling pattern to apply to each day. + items: + properties: + day: + description: |- + (Number) Number representing the day of the week + Number representing the day of the week + type: number + from: + description: |- + (String) The hour of the day on which scheduling starts. + The hour of the day on which scheduling starts. + type: string + to: + description: |- + (String) The hour of the day on which scheduling ends. + The hour of the day on which scheduling ends. + type: string + type: object + type: array + timezone: + description: |- + (String) Timezone in which the timeframe is based. + Timezone in which the timeframe is based. + type: string + type: object + tickEvery: + description: |- + 604800 for mobile tests. + How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests. + type: number + type: object + requestBasicauth: + description: |- + (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) + The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. + properties: + accessKeySecretRef: + description: |- + (String, Sensitive) Access key for SIGV4 authentication. + Access key for `SIGV4` authentication. + 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 + accessTokenUrl: + description: |- + client or oauth-rop authentication. + Access token url for `oauth-client` or `oauth-rop` authentication. + type: string + audience: + description: |- + client or oauth-rop authentication. Defaults to "". + Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + clientId: + description: |- + client or oauth-rop authentication. + Client ID for `oauth-client` or `oauth-rop` authentication. + type: string + clientSecretSecretRef: + description: |- + client or oauth-rop authentication. + Client secret for `oauth-client` or `oauth-rop` authentication. + 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 + domain: + description: |- + (String) Domain for ntlm authentication. + Domain for `ntlm` authentication. + type: string + passwordSecretRef: + description: |- + (String, Sensitive) Password for authentication. + Password for authentication. + 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) Region for SIGV4 authentication. + Region for `SIGV4` authentication. + type: string + resource: + description: |- + client or oauth-rop authentication. Defaults to "". + Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + scope: + description: |- + client or oauth-rop authentication. Defaults to "". + Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + secretKeySecretRef: + description: |- + (String, Sensitive) Secret key for SIGV4 authentication. + Secret key for `SIGV4` authentication. + 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) Service name for SIGV4 authentication. + Service name for `SIGV4` authentication. + type: string + sessionToken: + description: |- + (String) Session token for SIGV4 authentication. + Session token for `SIGV4` authentication. + type: string + tokenApiAuthentication: + description: |- + client or oauth-rop authentication. Valid values are header, body. + Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. + type: string + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of basic authentication to use when performing the test. Defaults to `"web"`. + type: string + username: + description: |- + (String) Username for authentication. + Username for authentication. + type: string + workstation: + description: |- + (String) Workstation for ntlm authentication. + Workstation for `ntlm` authentication. + type: string + type: object requestClientCertificate: - description: '(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) Client - certificate to use when performing the test request. Exactly - one nested block is allowed with the structure below.' - items: - properties: - cert: - description: '(Block List, Min: 1, Max: 1) (see below for - nested schema)' - items: + description: |- + (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) + Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. + properties: + cert: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - contentSecretRef: - description: (String, Sensitive) Content of the certificate. - Content of the certificate. - 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 - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: - - contentSecretRef + - key + - name + - namespace type: object - type: array - key: - description: '(Block List, Min: 1, Max: 1) (see below for - nested schema)' - items: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + key: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - contentSecretRef: - description: (String, Sensitive) Content of the certificate. - Content of the certificate. - 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 - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: - - contentSecretRef + - key + - name + - namespace type: object - type: array - type: object - type: array + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + type: object requestDefinition: - description: '(Block List, Max: 1) Required if type = "api". The - synthetics test request. (see below for nested schema) Required - if `type = "api"`. The synthetics test request.' + description: |- + (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) + Required if `type = "api"`. The synthetics test request. + properties: + body: + description: |- + (String) The request body. + The request body. + type: string + bodyType: + description: |- + www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. + type: string + callType: + description: |- + (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + The type of gRPC call to perform. Valid values are `healthcheck`, `unary`. + type: string + certificateDomains: + description: |- + (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. + 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`. + items: + type: string + type: array + dnsServer: + description: |- + (String) DNS server to use for DNS tests (subtype = "dns"). + DNS server to use for DNS tests (`subtype = "dns"`). + type: string + dnsServerPort: + description: |- + (String) DNS server port to use for DNS tests. + DNS server port to use for DNS tests. + type: string + form: + additionalProperties: + type: string + description: |- + data. + Form data to be sent when `body_type` is `multipart/form-data`. + type: object + x-kubernetes-map-type: granular + host: + description: |- + (String) Host name to perform the test with. + Host name to perform the test with. + type: string + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead. + type: string + isMessageBase64Encoded: + description: |- + encoded. + Whether the message is base64-encoded. + type: boolean + message: + description: |- + (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 "". + For UDP and websocket tests, message to send with the request. + type: string + method: + description: |- + (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. + 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`. + type: string + noSavingResponseBody: + description: |- + (Boolean) Determines whether or not to save the response body. + Determines whether or not to save the response body. + type: boolean + numberOfPackets: + description: |- + (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + Number of pings to use per test for ICMP tests (`subtype = "icmp"`) between 0 and 10. + type: number + persistCookies: + description: |- + (Boolean) Persist cookies across redirects. + Persist cookies across redirects. + type: boolean + plainProtoFile: + description: |- + (String) The content of a proto file as a string. + The content of a proto file as a string. + type: string + port: + description: |- + (String) Port to use when performing the test. + Port to use when performing the test. + type: string + protoJsonDescriptor: + description: |- + (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. + type: string + servername: + description: |- + (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. + 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. + type: string + service: + description: |- + (String) The gRPC service on which you want to perform the gRPC call. + The gRPC service on which you want to perform the gRPC call. + type: string + shouldTrackHops: + description: |- + (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). + type: boolean + timeout: + description: |- + (Number) Timeout in seconds for the test. + Timeout in seconds for the test. + type: number + url: + description: |- + (String) The URL to send the request to. + The URL to send the request to. + type: string + type: object + requestFile: + description: |- + (Block List) Files to be used as part of the request in the test. (see below for nested schema) + Files to be used as part of the request in the test. items: properties: - body: - description: (String) The request body. The request body. + content: + description: |- + (String, Sensitive) Content of the certificate. + Content of the file. type: string - bodyType: - description: www-form-urlencoded, graphql. Type of the request - body. Valid values are `text/plain`, `application/json`, - `text/xml`, `text/html`, `application/x-www-form-urlencoded`, - `graphql`. - type: string - callType: - description: (String) The type of gRPC call to perform. - Valid values are healthcheck, unary. The type of gRPC - call to perform. Valid values are `healthcheck`, `unary`. - type: string - certificateDomains: - description: (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. - 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`. - items: - type: string - type: array - dnsServer: - description: (String) DNS server to use for DNS tests (subtype - = "dns"). DNS server to use for DNS tests (`subtype = - "dns"`). - type: string - dnsServerPort: - description: (Number) DNS server port to use for DNS tests. - DNS server port to use for DNS tests. - type: number - host: - description: (String) Host name to perform the test with. - Host name to perform the test with. - type: string - message: - description: (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 "". For UDP and websocket tests, - message to send with the request. - type: string - method: - description: (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. 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`. - type: string - noSavingResponseBody: - description: (Boolean) Determines whether or not to save - the response body. Determines whether or not to save the - response body. - type: boolean - numberOfPackets: - description: (Number) Number of pings to use per test for - ICMP tests (subtype = "icmp") between 0 and 10. Number - of pings to use per test for ICMP tests (`subtype = "icmp"`) - between 0 and 10. - type: number - persistCookies: - description: (Boolean) Persist cookies across redirects. - Persist cookies across redirects. - type: boolean - plainProtoFile: - description: (String) The content of a proto file as a string. - The content of a proto file as a string. - type: string - port: - description: (Number) Port to use when performing the test. - Port to use when performing the test. - type: number - protoJsonDescriptor: - description: (String, Deprecated) A protobuf JSON descriptor. - Deprecated. Use plain_proto_file instead. A protobuf JSON - descriptor. **Deprecated.** Use `plain_proto_file` instead. - type: string - servername: - description: (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. 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. - type: string - service: - description: (String) The gRPC service on which you want - to perform the gRPC call. The gRPC service on which you - want to perform the gRPC call. - type: string - shouldTrackHops: - description: (Boolean) This will turn on a traceroute probe - to discover all gateways along the path to the host destination. - For ICMP tests (subtype = "icmp"). This will turn on a - traceroute probe to discover all gateways along the path - to the host destination. For ICMP tests (`subtype = "icmp"`). - type: boolean - timeout: - description: (Number) Timeout in seconds for the test. Defaults - to 60. Timeout in seconds for the test. Defaults to `60`. + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the file. + type: string + originalFileName: + description: |- + (String) Original name of the file. + Original name of the file. + type: string + size: + description: |- + (Number) Size of the file. + Size of the file. type: number - url: - description: (String) The URL to send the request to. The - URL to send the request to. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the file. type: string type: object type: array requestHeaders: additionalProperties: type: string - description: (Map of String) Header name and value map. Header - name and value map. + description: |- + (Map of String) Header name and value map. + Header name and value map. type: object x-kubernetes-map-type: granular requestMetadata: additionalProperties: type: string - description: (Map of String) Metadata to include when performing - the gRPC test. Metadata to include when performing the gRPC - test. + description: |- + (Map of String) Metadata to include when performing the gRPC request. + Metadata to include when performing the gRPC request. type: object x-kubernetes-map-type: granular requestProxy: - description: '(Block List, Max: 1) The proxy to perform the test. - (see below for nested schema) The proxy to perform the test.' - items: - properties: - headers: - additionalProperties: - type: string - description: (Map of String) Header name and value map. - Header name and value map. - type: object - x-kubernetes-map-type: granular - url: - description: (String) The URL to send the request to. URL - of the proxy to perform the test. + description: |- + (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) + The proxy to perform the test. + properties: + headers: + additionalProperties: type: string - type: object - type: array + description: |- + (Map of String) Header name and value map. + Header name and value map. + type: object + x-kubernetes-map-type: granular + url: + description: |- + (String) The URL to send the request to. + URL of the proxy to perform the test. + type: string + type: object requestQuery: additionalProperties: type: string - description: (Map of String) Query arguments name and value map. + description: |- + (Map of String) Query arguments name and value map. Query arguments name and value map. type: object x-kubernetes-map-type: granular setCookie: - description: Cookie syntax. 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: |- + Cookie syntax. + 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. type: string status: - description: (String) Define whether you want to start (live) - or pause (paused) a Synthetic test. Valid values are live, paused. - Define whether you want to start (`live`) or pause (`paused`) - a Synthetic test. Valid values are `live`, `paused`. + description: |- + (String) Define whether you want to start (live) or pause (paused) a Synthetic test. Valid values are live, paused. + Define whether you want to start (`live`) or pause (`paused`) a Synthetic test. Valid values are `live`, `paused`. type: string subtype: - description: (String) The subtype of the Synthetic API test. Defaults - to http. Valid values are http, ssl, tcp, dns, multi, icmp, - udp, websocket, grpc. The subtype of the Synthetic API test. - Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, - `multi`, `icmp`, `udp`, `websocket`, `grpc`. + description: |- + (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + The subtype of the Synthetic API test. Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, `multi`, `icmp`, `udp`, `websocket`, `grpc`. type: string tags: - description: (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 ([]). 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: |- + (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 ([]). + 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 (`[]`). items: type: string type: array type: - description: (String) Synthetics test type. Valid values are api, - browser. Synthetics test type. Valid values are `api`, `browser`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Synthetics test type. Valid values are `api`, `browser`, `mobile`. + type: string + variablesFromScript: + description: |- + (String) Variables defined from JavaScript code for API HTTP tests. + Variables defined from JavaScript code for API HTTP tests. 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. + 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: apiStep: - description: (Block List) Steps for multistep api tests (see below - for nested schema) Steps for multistep api tests + description: |- + step api tests (see below for nested schema) + Steps for multi-step api tests items: properties: allowFailure: - description: (Boolean) Determines whether or not to continue - with test if this step fails. Determines whether or not - to continue with test if this step fails. + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + Determines whether or not to continue with test if this step fails. type: boolean assertion: - description: (Block List) Assertions used for the test. - Multiple assertion blocks are allowed with the structure - below. (see below for nested schema) Assertions used for - the test. Multiple `assertion` blocks are allowed with - the structure below. + description: |- + (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. items: properties: + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + type: string operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). 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: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + 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)). type: string property: - description: (String) If assertion type is header, - this is the header name. If assertion type is `header`, - this is the header name. + description: |- + (String) If assertion type is header, this is the header name. + If assertion type is `header`, this is the header name. type: string target: - description: (String) Expected value. Depends on the - assertion type, refer to Datadog documentation for - details. Expected value. Depends on the assertion - type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) - for details. + description: |- + (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details. type: string targetjsonpath: - description: '(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) Expected structure if `operator` - is `validatesJSONPath`. Exactly one nested block - is allowed with the structure below.' - items: - properties: - jsonpath: - description: (String) The JSON path to assert. - The JSON path to assert. - type: string - operator: - description: (String) Assertion operator. Note - Only some combinations of type and operator - are valid (please refer to Datadog documentation). - The specific operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. - Expected matching value. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. + properties: + elementsoperator: + description: |- + (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + type: string + jsonpath: + description: |- + (String) The JSON path to assert. + The JSON path to assert. + type: string + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + type: object + targetjsonschema: + description: |- + (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + properties: + jsonschema: + description: |- + (String) The JSON Schema to validate the body against. + The JSON Schema to validate the body against. + type: string + metaschema: + description: |- + 07". + The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + type: string + type: object targetxpath: - description: '(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) Expected structure if `operator` - is `validatesXPath`. Exactly one nested block is - allowed with the structure below.' - items: - properties: - operator: - description: (String) Assertion operator. Note - Only some combinations of type and operator - are valid (please refer to Datadog documentation). - The specific operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. - Expected matching value. - type: string - xpath: - description: (String) The xpath to assert. The - xpath to assert. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. + properties: + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + xpath: + description: |- + (String) The xpath to assert. + The xpath to assert. + type: string + type: object timingsScope: - description: (String) Timings scope for response time - assertions. Valid values are all, withoutDNS. Timings - scope for response time assertions. Valid values - are `all`, `withoutDNS`. + description: |- + (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. type: string type: - description: (String) Synthetics test type. Valid - values are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + 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`, `bodyHash`, `javascript`. type: string type: object type: array + exitIfSucceed: + description: |- + (Boolean) Determines whether or not to exit the test if the step succeeds. + Determines whether or not to exit the test if the step succeeds. + type: boolean extractedValue: - description: (Block List) Values to parse and save as variables - from the response. (see below for nested schema) Values - to parse and save as variables from the response. + description: |- + (Block List) Values to parse and save as variables from the response. (see below for nested schema) + Values to parse and save as variables from the response. items: properties: field: - description: (String) When type is http_header, name - of the header to use to extract the value. When - type is `http_header`, name of the header to use - to extract the value. + description: |- + (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. + When type is `http_header` or `grpc_metadata`, name of the header or metadatum to extract. type: string name: description: (String) Name of Datadog synthetics test. @@ -1782,1248 +2276,1953 @@ spec: parser: description: '(Block List, Min: 1, Max: 1) (see below for nested schema)' - items: - properties: - type: - description: (String) Synthetics test type. - Valid values are api, browser. Type of parser - for a Synthetics global variable from a synthetics - test. Valid values are `raw`, `json_path`, - `regex`, `x_path`. - type: string - value: - description: (String) Regex or JSON path used - for the parser. Not used with type raw. Regex - or JSON path used for the parser. Not used - with type `raw`. - type: string - type: object - type: array + properties: + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Regex or JSON path used for the parser. Not used with type `raw`. + type: string + type: object secure: - description: (Boolean) Determines whether or not the - extracted value will be obfuscated. Determines whether - or not the extracted value will be obfuscated. + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Determines whether or not the extracted value will be obfuscated. type: boolean type: - description: (String) Synthetics test type. Valid - values are api, browser. Property of the Synthetics - Test Response to use for the variable. Valid values - are `http_body`, `http_header`, `local_variable`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Property of the Synthetics Test Response to use for the variable. Valid values are `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`. type: string type: object type: array + extractedValuesFromScript: + description: |- + (String) Generate variables using JavaScript. + Generate variables using JavaScript. + type: string isCritical: - description: (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. 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: |- + (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. + Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. type: boolean name: - description: (String) Name of Datadog synthetics test. The - name of the step. + description: |- + (String) Name of Datadog synthetics test. + The name of the step. type: string requestBasicauth: - description: '(Block List, Max: 1) The HTTP basic authentication - credentials. Exactly one nested block is allowed with - the structure below. (see below for nested schema) The - HTTP basic authentication credentials. Exactly one nested - block is allowed with the structure below.' - items: - properties: - accessTokenUrl: - description: client or oauth-rop authentication. Access - token url for `oauth-client` or `oauth-rop` authentication. - type: string - audience: - description: client or oauth-rop authentication. Defaults - to "". Audience for `oauth-client` or `oauth-rop` - authentication. Defaults to `""`. - type: string - clientId: - description: client or oauth-rop authentication. Client - ID for `oauth-client` or `oauth-rop` authentication. - type: string - domain: - description: (String) Domain for ntlm authentication. - Domain for `ntlm` authentication. - type: string - region: - description: (String) Region for SIGV4 authentication. - Region for `SIGV4` authentication. - type: string - resource: - description: client or oauth-rop authentication. Defaults - to "". Resource for `oauth-client` or `oauth-rop` - authentication. Defaults to `""`. - type: string - scope: - description: client or oauth-rop authentication. Defaults - to "". Scope for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - serviceName: - description: (String) Service name for SIGV4 authentication. - Service name for `SIGV4` authentication. - type: string - sessionToken: - description: (String) Session token for SIGV4 authentication. - Session token for `SIGV4` authentication. - type: string - tokenApiAuthentication: - description: client or oauth-rop authentication. Valid - values are header, body. Token API Authentication - for `oauth-client` or `oauth-rop` authentication. - Valid values are `header`, `body`. - type: string - type: - description: (String) Synthetics test type. Valid - values are api, browser. Type of basic authentication - to use when performing the test. Defaults to `"web"`. - type: string - username: - description: (String) Username for authentication. - Username for authentication. - type: string - workstation: - description: (String) Workstation for ntlm authentication. - Workstation for `ntlm` authentication. - type: string - type: object - type: array + description: |- + (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) + The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. + properties: + accessKeySecretRef: + description: |- + (String, Sensitive) Access key for SIGV4 authentication. + Access key for `SIGV4` authentication. + 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 + accessTokenUrl: + description: |- + client or oauth-rop authentication. + Access token url for `oauth-client` or `oauth-rop` authentication. + type: string + audience: + description: |- + client or oauth-rop authentication. Defaults to "". + Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + clientId: + description: |- + client or oauth-rop authentication. + Client ID for `oauth-client` or `oauth-rop` authentication. + type: string + clientSecretSecretRef: + description: |- + client or oauth-rop authentication. + Client secret for `oauth-client` or `oauth-rop` authentication. + 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 + domain: + description: |- + (String) Domain for ntlm authentication. + Domain for `ntlm` authentication. + type: string + passwordSecretRef: + description: |- + (String, Sensitive) Password for authentication. + Password for authentication. + 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) Region for SIGV4 authentication. + Region for `SIGV4` authentication. + type: string + resource: + description: |- + client or oauth-rop authentication. Defaults to "". + Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + scope: + description: |- + client or oauth-rop authentication. Defaults to "". + Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + secretKeySecretRef: + description: |- + (String, Sensitive) Secret key for SIGV4 authentication. + Secret key for `SIGV4` authentication. + 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) Service name for SIGV4 authentication. + Service name for `SIGV4` authentication. + type: string + sessionToken: + description: |- + (String) Session token for SIGV4 authentication. + Session token for `SIGV4` authentication. + type: string + tokenApiAuthentication: + description: |- + client or oauth-rop authentication. Valid values are header, body. + Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. + type: string + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of basic authentication to use when performing the test. Defaults to `"web"`. + type: string + username: + description: |- + (String) Username for authentication. + Username for authentication. + type: string + workstation: + description: |- + (String) Workstation for ntlm authentication. + Workstation for `ntlm` authentication. + type: string + type: object requestClientCertificate: - description: '(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) Client certificate to use when performing - the test request. Exactly one nested block is allowed - with the structure below.' - items: - properties: - cert: - description: '(Block List, Min: 1, Max: 1) (see below - for nested schema)' - items: + description: |- + (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) + Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. + properties: + cert: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: array - key: - description: '(Block List, Min: 1, Max: 1) (see below - for nested schema)' - items: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + required: + - contentSecretRef + type: object + key: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: array - type: object - type: array + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + required: + - contentSecretRef + type: object + type: object requestDefinition: - description: '(Block List, Max: 1) Required if type = "api". - The synthetics test request. (see below for nested schema) - The request for the api step.' + description: |- + (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) + The request for the api step. + properties: + acceptSelfSigned: + description: |- + (Boolean) For SSL test, whether or not the test should allow self signed certificates. + For SSL test, whether or not the test should allow self signed certificates. + type: boolean + allowInsecure: + description: |- + (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + Allows loading insecure content for a request in an API test or in a multistep API test step. + type: boolean + body: + description: |- + (String) The request body. + The request body. + type: string + bodyType: + description: |- + www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. + type: string + callType: + description: |- + (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + The type of gRPC call to perform. Valid values are `healthcheck`, `unary`. + type: string + certificateDomains: + description: |- + (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. + 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`. + items: + type: string + type: array + checkCertificateRevocation: + description: |- + (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + type: boolean + dnsServer: + description: |- + (String) DNS server to use for DNS tests (subtype = "dns"). + DNS server to use for DNS tests (`subtype = "dns"`). + type: string + dnsServerPort: + description: |- + (String) DNS server port to use for DNS tests. + DNS server port to use for DNS tests. + type: string + followRedirects: + description: |- + (Boolean) Determines whether or not the API HTTP test should follow redirects. + Determines whether or not the API HTTP test should follow redirects. + type: boolean + form: + additionalProperties: + type: string + description: |- + data. + Form data to be sent when `body_type` is `multipart/form-data`. + type: object + x-kubernetes-map-type: granular + host: + description: |- + (String) Host name to perform the test with. + Host name to perform the test with. + type: string + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + type: string + isMessageBase64Encoded: + description: |- + encoded. + Whether the message is base64-encoded. + type: boolean + message: + description: |- + (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 "". + For UDP and websocket tests, message to send with the request. + type: string + method: + description: |- + (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. + 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`. + type: string + noSavingResponseBody: + description: |- + (Boolean) Determines whether or not to save the response body. + Determines whether or not to save the response body. + type: boolean + numberOfPackets: + description: |- + (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + Number of pings to use per test for ICMP tests (`subtype = "icmp"`) between 0 and 10. + type: number + persistCookies: + description: |- + (Boolean) Persist cookies across redirects. + Persist cookies across redirects. + type: boolean + plainProtoFile: + description: |- + (String) The content of a proto file as a string. + The content of a proto file as a string. + type: string + port: + description: |- + (String) Port to use when performing the test. + Port to use when performing the test. + type: string + protoJsonDescriptor: + description: |- + (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. + type: string + servername: + description: |- + (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. + 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. + type: string + service: + description: |- + (String) The gRPC service on which you want to perform the gRPC call. + The gRPC service on which you want to perform the gRPC call. + type: string + shouldTrackHops: + description: |- + (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). + type: boolean + timeout: + description: |- + (Number) Timeout in seconds for the test. + Timeout in seconds for the test. + type: number + url: + description: |- + (String) The URL to send the request to. + The URL to send the request to. + type: string + type: object + requestFile: + description: |- + (Block List) Files to be used as part of the request in the test. (see below for nested schema) + Files to be used as part of the request in the test. items: properties: - allowInsecure: - description: (Boolean) Allows loading insecure content - for an HTTP request in an API test or in a multistep - API test step. Allows loading insecure content for - an HTTP request in an API test or in a multistep - API test step. - type: boolean - body: - description: (String) The request body. The request - body. - type: string - bodyType: - description: www-form-urlencoded, graphql. Type of - the request body. Valid values are `text/plain`, - `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, - `graphql`. - type: string - callType: - description: (String) The type of gRPC call to perform. - Valid values are healthcheck, unary. The type of - gRPC call to perform. Valid values are `healthcheck`, - `unary`. - type: string - certificateDomains: - description: (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. 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`. - items: - type: string - type: array - dnsServer: - description: (String) DNS server to use for DNS tests - (subtype = "dns"). DNS server to use for DNS tests - (`subtype = "dns"`). - type: string - dnsServerPort: - description: (Number) DNS server port to use for DNS - tests. DNS server port to use for DNS tests. - type: number - followRedirects: - description: (Boolean) Determines whether or not the - API HTTP test should follow redirects. Determines - whether or not the API HTTP test should follow redirects. - type: boolean - host: - description: (String) Host name to perform the test - with. Host name to perform the test with. - type: string - message: - description: (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 "". For UDP and - websocket tests, message to send with the request. - type: string - method: - description: (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. - 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`. - type: string - noSavingResponseBody: - description: (Boolean) Determines whether or not to - save the response body. Determines whether or not - to save the response body. - type: boolean - numberOfPackets: - description: (Number) Number of pings to use per test - for ICMP tests (subtype = "icmp") between 0 and - 10. Number of pings to use per test for ICMP tests - (`subtype = "icmp"`) between 0 and 10. - type: number - persistCookies: - description: (Boolean) Persist cookies across redirects. - Persist cookies across redirects. - type: boolean - plainProtoFile: - description: (String) The content of a proto file - as a string. The content of a proto file as a string. - type: string - port: - description: (Number) Port to use when performing - the test. Port to use when performing the test. - type: number - protoJsonDescriptor: - description: (String, Deprecated) A protobuf JSON - descriptor. Deprecated. Use plain_proto_file instead. - A protobuf JSON descriptor. **Deprecated.** Use - `plain_proto_file` instead. + content: + description: |- + (String, Sensitive) Content of the certificate. + Content of the file. type: string - servername: - description: (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. 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. - type: string - service: - description: (String) The gRPC service on which you - want to perform the gRPC call. The gRPC service - on which you want to perform the gRPC call. - type: string - shouldTrackHops: - description: (Boolean) This will turn on a traceroute - probe to discover all gateways along the path to - the host destination. For ICMP tests (subtype = - "icmp"). This will turn on a traceroute probe to - discover all gateways along the path to the host - destination. For ICMP tests (`subtype = "icmp"`). - type: boolean - timeout: - description: (Number) Timeout in seconds for the test. - Defaults to 60. Timeout in seconds for the test. - Defaults to `60`. + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the file. + type: string + originalFileName: + description: |- + (String) Original name of the file. + Original name of the file. + type: string + size: + description: |- + (Number) Size of the file. + Size of the file. type: number - url: - description: (String) The URL to send the request - to. The URL to send the request to. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the file. type: string type: object type: array requestHeaders: additionalProperties: type: string - description: (Map of String) Header name and value map. + description: |- + (Map of String) Header name and value map. Header name and value map. type: object x-kubernetes-map-type: granular + requestMetadata: + additionalProperties: + type: string + description: |- + (Map of String) Metadata to include when performing the gRPC request. + Metadata to include when performing the gRPC request. + type: object + x-kubernetes-map-type: granular requestProxy: - description: '(Block List, Max: 1) The proxy to perform - the test. (see below for nested schema) The proxy to perform - the test.' - items: - properties: - headers: - additionalProperties: - type: string - description: (Map of String) Header name and value - map. Header name and value map. - type: object - x-kubernetes-map-type: granular - url: - description: (String) The URL to send the request - to. URL of the proxy to perform the test. - type: string - type: object - type: array + description: |- + (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) + The proxy to perform the test. + properties: + headers: + additionalProperties: + type: string + description: |- + (Map of String) Header name and value map. + Header name and value map. + type: object + x-kubernetes-map-type: granular + url: + description: |- + (String) The URL to send the request to. + URL of the proxy to perform the test. + type: string + type: object requestQuery: additionalProperties: type: string - description: (Map of String) Query arguments name and value - map. Query arguments name and value map. + description: |- + (Map of String) Query arguments name and value map. + Query arguments name and value map. type: object x-kubernetes-map-type: granular retry: description: '(Block List, Max: 1) (see below for nested schema)' - items: - properties: - count: - description: (Number) Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to 0. Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to `0`. - type: number - interval: - description: (Number) Interval between a failed test - and the next retry in milliseconds. Defaults to - 300. Interval between a failed test and the next - retry in milliseconds. Defaults to `300`. - type: number - type: object - type: array + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object subtype: - description: (String) The subtype of the Synthetic API test. - Defaults to http. Valid values are http, ssl, tcp, dns, - multi, icmp, udp, websocket, grpc. The subtype of the - Synthetic multistep API test step. Valid values are `http`, - `grpc`. Defaults to `"http"`. - type: string + description: |- + (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + The subtype of the Synthetic multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `"http"`. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + The time to wait in seconds. Minimum value: 0. Maximum value: 180. + type: number type: object type: array assertion: - description: (Block List) Assertions used for the test. Multiple - assertion blocks are allowed with the structure below. (see - below for nested schema) Assertions used for the test. Multiple - `assertion` blocks are allowed with the structure below. + description: |- + (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. items: properties: + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + type: string operator: - description: (String) Assertion operator. Note Only some - combinations of type and operator are valid (please refer - to Datadog documentation). 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: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + 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)). type: string property: - description: (String) If assertion type is header, this - is the header name. If assertion type is `header`, this - is the header name. + description: |- + (String) If assertion type is header, this is the header name. + If assertion type is `header`, this is the header name. type: string target: - description: (String) Expected value. Depends on the assertion - type, refer to Datadog documentation for details. Expected - value. Depends on the assertion type, refer to [Datadog - documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) - for details. + description: |- + (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details. type: string targetjsonpath: - description: '(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) Expected structure if `operator` is `validatesJSONPath`. - Exactly one nested block is allowed with the structure - below.' - items: - properties: - jsonpath: - description: (String) The JSON path to assert. The - JSON path to assert. - type: string - operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). The specific - operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. Expected - matching value. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. + properties: + elementsoperator: + description: |- + (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + type: string + jsonpath: + description: |- + (String) The JSON path to assert. + The JSON path to assert. + type: string + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + type: object + targetjsonschema: + description: |- + (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + properties: + jsonschema: + description: |- + (String) The JSON Schema to validate the body against. + The JSON Schema to validate the body against. + type: string + metaschema: + description: |- + 07". + The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + type: string + type: object targetxpath: - description: '(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) Expected structure if `operator` is `validatesXPath`. - Exactly one nested block is allowed with the structure - below.' - items: - properties: - operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). The specific - operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. Expected - matching value. - type: string - xpath: - description: (String) The xpath to assert. The xpath - to assert. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. + properties: + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + xpath: + description: |- + (String) The xpath to assert. + The xpath to assert. + type: string + type: object timingsScope: - description: (String) Timings scope for response time assertions. - Valid values are all, withoutDNS. Timings scope for response - time assertions. Valid values are `all`, `withoutDNS`. + description: |- + (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. type: string type: - description: (String) Synthetics test type. Valid values - are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + 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`, `bodyHash`, `javascript`. type: string type: object type: array browserStep: - description: (Block List) Steps for browser tests. (see below - for nested schema) Steps for browser tests. + description: |- + (Block List) Steps for browser tests. (see below for nested schema) + Steps for browser tests. items: properties: allowFailure: - description: (Boolean) Determines whether or not to continue - with test if this step fails. Determines if the step should - be allowed to fail. + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + Determines if the step should be allowed to fail. + type: boolean + alwaysExecute: + description: |- + (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + Determines whether or not to always execute this step even if the previous step failed or was skipped. + type: boolean + exitIfSucceed: + description: |- + (Boolean) Determines whether or not to exit the test if the step succeeds. + Determines whether or not to exit the test if the step succeeds. type: boolean forceElementUpdate: - description: (Boolean) Force update of the "element" parameter - for the step Force update of the "element" parameter for - the step + description: |- + (Boolean) Force update of the "element" parameter for the step + Force update of the "element" parameter for the step type: boolean isCritical: - description: (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. 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: |- + (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. + Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. type: boolean + localKey: + description: |- + (String) A unique identifier used to track steps after reordering. + A unique identifier used to track steps after reordering. + type: string name: - description: (String) Name of Datadog synthetics test. Name - of the step. + description: |- + (String) Name of Datadog synthetics test. + Name of the step. type: string noScreenshot: - description: (Boolean) Prevents saving screenshots of the - step. Prevents saving screenshots of the step. + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the step. type: boolean params: - description: '(Block List, Min: 1, Max: 1) Parameters for - the step. (see below for nested schema) Parameters for - the step.' - items: - properties: - attribute: - description: (String) Name of the attribute to use - for an "assert attribute" step. Name of the attribute - to use for an "assert attribute" step. - type: string - check: - description: (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 type to use for an assertion - step. Valid values are `equals`, `notEquals`, `contains`, - `notContains`, `startsWith`, `notStartsWith`, `greater`, - `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, - `between`, `isEmpty`, `notIsEmpty`. - type: string - clickType: - description: (String) Type of click to use for a "click" - step. Type of click to use for a "click" step. - type: string - code: - description: (String) Javascript code to use for the - step. Javascript code to use for the step. - type: string - delay: - description: (Number) Delay between each key stroke - for a "type test" step. Delay between each key stroke - for a "type test" step. - type: number - element: - description: (String) Element to use for the step, - json encoded string. Element to use for the step, - json encoded string. - type: string - elementUserLocator: - description: '(Block List, Max: 1) Custom user selector - to use for the step. (see below for nested schema) - Custom user selector to use for the step.' - items: - properties: - failTestOnCannotLocate: - description: (Boolean) Defaults to false. Defaults - to `false`. - type: boolean - value: - description: (String) Regex or JSON path used - for the parser. Not used with type raw. - items: - properties: - type: - description: (String) Synthetics test - type. Valid values are api, browser. - Defaults to `"css"`. - type: string - value: - description: (String) Regex or JSON path - used for the parser. Not used with type - raw. - type: string - type: object - type: array - type: object - type: array - email: - description: (String) Details of the email for an - "assert email" step. Details of the email for an - "assert email" step. - type: string - file: - description: (String) JSON encoded string used for - an "assert download" step. Refer to the examples - for a usage example showing the schema. JSON encoded - string used for an "assert download" step. Refer - to the examples for a usage example showing the - schema. - type: string - files: - description: (String) Details of the files for an - "upload files" step, json encoded string. Details - of the files for an "upload files" step, json encoded - string. - type: string - modifiers: - description: (List of String) Modifier to use for - a "press key" step. Modifier to use for a "press - key" step. - items: - type: string - type: array - playingTabId: - description: (String) ID of the tab to play the subtest. - ID of the tab to play the subtest. - type: string - request: - description: (String) Request for an API step. Request - for an API step. - type: string - subtestPublicId: - description: (String) ID of the Synthetics test to - use as subtest. ID of the Synthetics test to use - as subtest. - type: string - value: - description: (String) Regex or JSON path used for - the parser. Not used with type raw. Value of the - step. - type: string - variable: - description: '(Block List, Max: 1) Details of the - variable to extract. (see below for nested schema) - Details of the variable to extract.' - items: + description: |- + (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + Parameters for the step. + properties: + attribute: + description: |- + (String) Name of the attribute to use for an "assert attribute" step. + Name of the attribute to use for an "assert attribute" step. + type: string + check: + description: |- + (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. + type: string + clickType: + description: |- + (String) Type of click to use for a "click" step. + Type of click to use for a "click" step. + type: string + clickWithJavascript: + description: |- + (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + Whether to use `element.click()` for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + type: boolean + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + Javascript code to use for the step. + type: string + delay: + description: |- + (Number) Delay between each key stroke for a "type test" step. + Delay between each key stroke for a "type test" step. + type: number + element: + description: |- + (String) Element to use for the step, JSON encoded string. + Element to use for the step, JSON encoded string. + type: string + elementUserLocator: + description: |- + (Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema) + Custom user selector to use for the step. + properties: + failTestOnCannotLocate: + description: |- + (Boolean) Defaults to false. + Defaults to `false`. + type: boolean + value: + description: '(Number) The time to wait in seconds. + Minimum value: 0. Maximum value: 180.' properties: - example: - description: (String) Example of the extracted - variable. Defaults to "". Example of the extracted - variable. Defaults to `""`. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Defaults to `"css"`. type: string - name: - description: (String) Name of Datadog synthetics - test. Name of the extracted variable. + value: + description: '(Number) The time to wait in seconds. + Minimum value: 0. Maximum value: 180.' type: string type: object - type: array - withClick: - description: (Boolean) For "file upload" steps. For - "file upload" steps. - type: boolean - x: - description: (Number) X coordinates for a "scroll - step". X coordinates for a "scroll step". - type: number - "y": - description: (Number) Y coordinates for a "scroll - step". Y coordinates for a "scroll step". - type: number - type: object - type: array + type: object + email: + description: |- + (String) Details of the email for an "assert email" step, JSON encoded string. + Details of the email for an "assert email" step, JSON encoded string. + type: string + file: + description: |- + (String) JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + type: string + files: + description: |- + (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + type: string + modifiers: + description: |- + (List of String) Modifier to use for a "press key" step. + Modifier to use for a "press key" step. + items: + type: string + type: array + playingTabId: + description: |- + (String) ID of the tab to play the subtest. + ID of the tab to play the subtest. + type: string + request: + description: |- + (String) Request for an API step. + Request for an API step. + type: string + requests: + description: |- + (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + type: string + subtestPublicId: + description: |- + (String) ID of the Synthetics test to use as subtest. + ID of the Synthetics test to use as subtest. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value of the step. + type: string + variable: + description: |- + (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + Details of the variable to extract. + properties: + example: + description: |- + (String) Example of the extracted variable. Defaults to "". + Example of the extracted variable. Defaults to `""`. + type: string + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the extracted variable. + type: string + secure: + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Whether the value of this variable will be obfuscated in test results. Defaults to `false`. + type: boolean + type: object + withClick: + description: |- + (Boolean) For "file upload" steps. + For "file upload" steps. + type: boolean + x: + description: |- + (Number) X coordinates for a "scroll step". + X coordinates for a "scroll step". + type: number + "y": + description: |- + (Number) Y coordinates for a "scroll step". + Y coordinates for a "scroll step". + type: number + type: object timeout: - description: (Number) Timeout in seconds for the test. Defaults - to 60. Used to override the default timeout of a step. + description: |- + (Number) Timeout in seconds for the test. + Used to override the default timeout of a step. type: number type: - description: (String) Synthetics test type. Valid values - are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `assertRequests`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`. type: string type: object type: array browserVariable: - description: (Block List) Variables used for a browser test steps. - Multiple variable blocks are allowed with the structure below. - (see below for nested schema) Variables used for a browser test - steps. Multiple `variable` blocks are allowed with the structure - below. + description: |- + (Block List) Variables used for a browser test steps. Multiple variable blocks are allowed with the structure below. (see below for nested schema) + Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below. items: properties: example: - description: (String) Example of the extracted variable. - Defaults to "". Example for the variable. Defaults to - `""`. + description: |- + (String) Example of the extracted variable. Defaults to "". + Example for the variable. Defaults to `""`. type: string id: - description: (String) The ID of this resource. 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: |- + (String) The ID of this resource. + ID of the global variable to use. This is actually only used (and required) in the case of using a variable of type `global`. type: string name: - description: (String) Name of Datadog synthetics test. Name - of the variable. + description: |- + (String) Name of Datadog synthetics test. + Name of the variable. type: string pattern: - description: (String) Pattern of the variable. Defaults - to "". Pattern of the variable. Defaults to `""`. + description: |- + (String) Pattern of the variable. Defaults to "". + Pattern of the variable. Defaults to `""`. type: string secure: - description: (Boolean) Determines whether or not the extracted - value will be obfuscated. Determines whether or not the - browser test variable is obfuscated. Can only be used - with a browser variable of type `text` + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text` type: boolean type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of browser test variable. Valid - values are `element`, `email`, `global`, `javascript`, - `text`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of browser test variable. Valid values are `element`, `email`, `global`, `text`. type: string type: object type: array + configInitialApplicationArguments: + additionalProperties: + type: string + description: |- + (Map of String) Initial application arguments for the mobile test. + Initial application arguments for the mobile test. + type: object + x-kubernetes-map-type: granular configVariable: - description: (Block List) Variables used for the test configuration. - Multiple config_variable blocks are allowed with the structure - below. (see below for nested schema) Variables used for the - test configuration. Multiple `config_variable` blocks are allowed - with the structure below. + description: |- + (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) + Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below. items: properties: example: - description: (String) Example of the extracted variable. - Defaults to "". Example for the variable. This value is - not returned by the api when `secure = true`. + description: |- + (String) Example of the extracted variable. Defaults to "". + Example for the variable. This value is not returned by the api when `secure = true`. type: string id: - description: (String) The ID of this resource. When type - = `global`, ID of the global variable to use. + description: |- + (String) The ID of this resource. + When type = `global`, ID of the global variable to use. type: string name: - description: (String) Name of Datadog synthetics test. Name - of the variable. + description: |- + (String) Name of Datadog synthetics test. + Name of the variable. type: string pattern: - description: (String) Pattern of the variable. Defaults - to "". Pattern of the variable. This value is not returned - by the api when `secure = true`. + description: |- + (String) Pattern of the variable. Defaults to "". + Pattern of the variable. This value is not returned by the api when `secure = true`. type: string secure: - description: (Boolean) Determines whether or not the extracted - value will be obfuscated. Whether the value of this variable - will be obfuscated in test results. Defaults to `false`. + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Whether the value of this variable will be obfuscated in test results. Defaults to `false`. type: boolean type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of test configuration variable. - Valid values are `global`, `text`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of test configuration variable. Valid values are `global`, `text`, `email`. type: string type: object type: array deviceIds: - description: (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. - 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: |- + (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + Required if `type = "browser"`. Array with the different device IDs used to run the test. items: type: string type: array + forceDeleteDependencies: + description: |- + (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + type: boolean locations: - description: (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. Array of locations used to run - the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) - to retrieve the list of locations. + description: |- + (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 or find the possible values listed in this API response. + Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true). items: type: string type: array x-kubernetes-list-type: set message: - description: (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 "". 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 `""`. - type: string - name: - description: (String) Name of Datadog synthetics test. Name of - Datadog synthetics test. + description: |- + (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 "". + 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 `""`. type: string - optionsList: + mobileOptionsList: description: '(Block List, Max: 1) (see below for nested schema)' + properties: + allowApplicationCrash: + description: (Boolean) + type: boolean + bindings: + description: |- + (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) + Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource + items: + properties: + principals: + description: (List of String) + items: + type: string + type: array + relation: + description: |- + (String) Valid values are editor, viewer. + Valid values are `editor`, `viewer`. + type: string + type: object + type: array + ci: + description: |- + (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + CI/CD options for a Synthetic test. + properties: + executionRule: + description: |- + (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + type: string + type: object + defaultStepTimeout: + description: (Number) + type: number + deviceIds: + description: (List of String) Required if type = "browser". + Array with the different device IDs used to run the test. + items: + type: string + type: array + disableAutoAcceptAlert: + description: (Boolean) + type: boolean + minFailureDuration: + description: |- + (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + type: number + mobileApplication: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + applicationId: + description: (String) + type: string + referenceId: + description: (String) + type: string + referenceType: + description: |- + (String) Valid values are latest, version. + Valid values are `latest`, `version`. + type: string + type: object + monitorName: + description: |- + (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + type: string + monitorOptions: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + escalationMessage: + description: |- + notification. + A message to include with a re-notification. + type: string + notificationPresetName: + description: |- + (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + type: string + renotifyInterval: + description: |- + (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. + 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`. + type: number + renotifyOccurrences: + description: |- + (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + type: number + type: object + monitorPriority: + description: (Number) + type: number + noScreenshot: + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the steps. + type: boolean + restrictedRoles: + description: |- + (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + items: + type: string + type: array + x-kubernetes-list-type: set + retry: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object + scheduling: + description: |- + (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + Object containing timeframes and timezone used for advanced scheduling. + properties: + timeframes: + description: |- + (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + Array containing objects describing the scheduling pattern to apply to each day. + items: + properties: + day: + description: |- + (Number) Number representing the day of the week + Number representing the day of the week + type: number + from: + description: |- + (String) The hour of the day on which scheduling starts. + The hour of the day on which scheduling starts. + type: string + to: + description: |- + (String) The hour of the day on which scheduling ends. + The hour of the day on which scheduling ends. + type: string + type: object + type: array + timezone: + description: |- + (String) Timezone in which the timeframe is based. + Timezone in which the timeframe is based. + type: string + type: object + tickEvery: + description: |- + 604800 for mobile tests. + How often the test should run (in seconds). Valid range is `300-604800` for mobile tests. + type: number + verbosity: + description: (Number) + type: number + type: object + mobileStep: + description: |- + (Block List) Steps for mobile tests (see below for nested schema) + Steps for mobile tests items: properties: - acceptSelfSigned: - description: (Boolean) For SSL test, whether or not the - test should allow self signed certificates. For SSL test, - whether or not the test should allow self signed certificates. - type: boolean - allowInsecure: - description: (Boolean) Allows loading insecure content for - an HTTP request in an API test or in a multistep API test - step. Allows loading insecure content for an HTTP request - in an API test or in a multistep API test step. - type: boolean - checkCertificateRevocation: - description: (Boolean) For SSL test, whether or not the - test should fail on revoked certificate in stapled OCSP. - For SSL test, whether or not the test should fail on revoked - certificate in stapled OCSP. - type: boolean - ci: - description: '(Block List, Max: 1) CI/CD options for a Synthetic - test. (see below for nested schema) CI/CD options for - a Synthetic test.' - items: - properties: - executionRule: - description: (String) Execution rule for a Synthetics - test. Valid values are blocking, non_blocking, skipped. - Execution rule for a Synthetics test. Valid values - are `blocking`, `non_blocking`, `skipped`. - type: string - type: object - type: array - disableCors: - description: Origin Resource Sharing for browser tests. - Disable Cross-Origin Resource Sharing for browser tests. - type: boolean - disableCsp: - description: (Boolean) Disable Content Security Policy for - browser tests. Disable Content Security Policy for browser - tests. + allowFailure: + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + A boolean set to allow this step to fail. type: boolean - followRedirects: - description: (Boolean) Determines whether or not the API - HTTP test should follow redirects. Determines whether - or not the API HTTP test should follow redirects. + hasNewStepElement: + description: |- + (Boolean) A boolean set to determine if the step has a new step element. + A boolean set to determine if the step has a new step element. type: boolean - httpVersion: - description: (String) HTTP version to use for a Synthetics - API test. Valid values are http1, http2, any. HTTP version - to use for a Synthetics API test. Valid values are `http1`, - `http2`, `any`. - type: string - ignoreServerCertificateError: - description: (Boolean) Ignore server certificate error for - browser tests. Ignore server certificate error for browser - tests. + isCritical: + description: |- + (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. + A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails. type: boolean - initialNavigationTimeout: - description: (Number) Timeout before declaring the initial - step as failed (in seconds) for browser tests. Timeout - before declaring the initial step as failed (in seconds) - for browser tests. - type: number - minFailureDuration: - description: (Number) Minimum amount of time in failure - required to trigger an alert (in seconds). Default is - 0. Minimum amount of time in failure required to trigger - an alert (in seconds). Default is `0`. - type: number - minLocationFailed: - description: (Number) Minimum number of locations in failure - required to trigger an alert. Defaults to 1. Minimum number - of locations in failure required to trigger an alert. - Defaults to `1`. - type: number - monitorName: - description: (String) The monitor name is used for the alert - title as well as for all monitor dashboard widgets and - SLOs. The monitor name is used for the alert title as - well as for all monitor dashboard widgets and SLOs. + name: + description: |- + (String) Name of Datadog synthetics test. + The name of the step. type: string - monitorOptions: - description: '(Block List, Max: 1) (see below for nested - schema)' - items: - properties: - renotifyInterval: - description: (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. 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`. - type: number - type: object - type: array - monitorPriority: - description: (Number) - type: number noScreenshot: - description: (Boolean) Prevents saving screenshots of the - step. Prevents saving screenshots of the steps. + description: |- + (Boolean) Prevents saving screenshots of the step. + A boolean set to not take a screenshot for the step. type: boolean - 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 - retry: - description: '(Block List, Max: 1) (see below for nested - schema)' - items: - properties: - count: - description: (Number) Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to 0. Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to `0`. - type: number - interval: - description: (Number) Interval between a failed test - and the next retry in milliseconds. Defaults to - 300. Interval between a failed test and the next - retry in milliseconds. Defaults to `300`. - type: number - type: object - type: array - rumSettings: - description: '(Block List, Max: 1) The RUM data collection - settings for the Synthetic browser test. (see below for - nested schema) The RUM data collection settings for the - Synthetic browser test.' - items: - type: string - type: array - scheduling: - description: '(Block List, Max: 1) Object containing timeframes - and timezone used for advanced scheduling. (see below - for nested schema) Object containing timeframes and timezone - used for advanced scheduling.' - items: - properties: - timeframes: - description: '(Block Set, Min: 1) Array containing - objects describing the scheduling pattern to apply - to each day. (see below for nested schema) Array - containing objects describing the scheduling pattern - to apply to each day.' - items: + params: + description: |- + (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + Parameters for the step. + properties: + check: + description: |- + (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. + type: string + delay: + description: |- + (Number) Delay between each key stroke for a "type test" step. + Delay between each key stroke for a "type test" step. + type: number + direction: + description: |- + (String) Valid values are up, down, left, right. + Valid values are `up`, `down`, `left`, `right`. + type: string + element: + description: |- + (String) Element to use for the step, JSON encoded string. + Element to use for the step, JSON encoded string. + properties: + context: + description: (String) + type: string + contextType: + description: |- + (String) Valid values are native, web. + Valid values are `native`, `web`. + type: string + elementDescription: + description: (String) + type: string + multiLocator: + additionalProperties: + type: string + description: (Map of String) + type: object + x-kubernetes-map-type: granular + relativePosition: + description: '(Block List, Max: 1) (see below for + nested schema)' properties: - day: - description: (Number) Number representing the - day of the week Number representing the day - of the week + x: + description: (Number) X coordinates for a "scroll + step". + type: number + "y": + description: (Number) Y coordinates for a "scroll + step". type: number - from: - description: (String) The hour of the day on - which scheduling starts. The hour of the day - on which scheduling starts. - type: string - to: - description: (String) The hour of the day on - which scheduling ends. The hour of the day - on which scheduling ends. - type: string type: object - type: array - timezone: - description: (String) Timezone in which the timeframe - is based. Timezone in which the timeframe is based. - type: string - type: object - type: array - tickEvery: - description: (Number) How often the test should run (in - seconds). How often the test should run (in seconds). - type: number - type: object - type: array - requestBasicauth: - description: '(Block List, Max: 1) The HTTP basic authentication - credentials. Exactly one nested block is allowed with the structure - below. (see below for nested schema) The HTTP basic authentication - credentials. Exactly one nested block is allowed with the structure - below.' - items: - properties: - accessTokenUrl: - description: client or oauth-rop authentication. Access - token url for `oauth-client` or `oauth-rop` authentication. - type: string - audience: - description: client or oauth-rop authentication. Defaults - to "". Audience for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - clientId: - description: client or oauth-rop authentication. Client - ID for `oauth-client` or `oauth-rop` authentication. - type: string - domain: - description: (String) Domain for ntlm authentication. Domain - for `ntlm` authentication. - type: string - region: - description: (String) Region for SIGV4 authentication. Region - for `SIGV4` authentication. - type: string - resource: - description: client or oauth-rop authentication. Defaults - to "". Resource for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - scope: - description: client or oauth-rop authentication. Defaults - to "". Scope for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - serviceName: - description: (String) Service name for SIGV4 authentication. - Service name for `SIGV4` authentication. - type: string - sessionToken: - description: (String) Session token for SIGV4 authentication. - Session token for `SIGV4` authentication. - type: string - tokenApiAuthentication: - description: client or oauth-rop authentication. Valid values - are header, body. Token API Authentication for `oauth-client` - or `oauth-rop` authentication. Valid values are `header`, - `body`. + textContent: + description: (String) + type: string + userLocator: + description: '(Block List, Max: 1) (see below for + nested schema)' + properties: + failTestOnCannotLocate: + description: (Boolean) Defaults to false. + type: boolean + values: + description: '(Block List, Max: 5) (see below + for nested schema)' + items: + properties: + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`. + type: string + value: + description: '(Number) The time to wait + in seconds. Minimum value: 0. Maximum + value: 180.' + type: string + type: object + type: array + type: object + viewName: + description: (String) + type: string + type: object + enable: + description: (Boolean) + type: boolean + maxScrolls: + description: (Number) + type: number + positions: + description: (Block List) (see below for nested schema) + items: + properties: + x: + description: (Number) X coordinates for a "scroll + step". + type: number + "y": + description: (Number) Y coordinates for a "scroll + step". + type: number + type: object + type: array + subtestPublicId: + description: |- + (String) ID of the Synthetics test to use as subtest. + ID of the Synthetics test to use as subtest. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value of the step. + type: string + variable: + description: |- + (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + Details of the variable to extract. + properties: + example: + description: |- + (String) Example of the extracted variable. Defaults to "". + Example of the extracted variable. Defaults to `""`. + type: string + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the extracted variable. + type: string + type: object + withEnter: + description: (Boolean) + type: boolean + x: + description: |- + (Number) X coordinates for a "scroll step". + X coordinates for a "scroll step". + type: number + "y": + description: |- + (Number) Y coordinates for a "scroll step". + Y coordinates for a "scroll step". + type: number + type: object + publicId: + description: |- + (String) The identifier of the step on the backend. + The public ID of the step. type: string + timeout: + description: |- + (Number) Timeout in seconds for the test. + The time before declaring a step failed. + type: number type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of basic authentication to use - when performing the test. Defaults to `"web"`. - type: string - username: - description: (String) Username for authentication. Username - for authentication. - type: string - workstation: - description: (String) Workstation for ntlm authentication. - Workstation for `ntlm` authentication. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`. type: string type: object type: array + name: + description: |- + (String) Name of Datadog synthetics test. + Name of Datadog synthetics test. + type: string + optionsList: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + acceptSelfSigned: + description: |- + (Boolean) For SSL test, whether or not the test should allow self signed certificates. + For SSL test, whether or not the test should allow self signed certificates. + type: boolean + allowInsecure: + description: |- + (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + Allows loading insecure content for a request in an API test or in a multistep API test step. + type: boolean + checkCertificateRevocation: + description: |- + (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + type: boolean + ci: + description: |- + (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + CI/CD options for a Synthetic test. + properties: + executionRule: + description: |- + (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + type: string + type: object + disableCors: + description: |- + Origin Resource Sharing for browser tests. + Disable Cross-Origin Resource Sharing for browser tests. + type: boolean + disableCsp: + description: |- + (Boolean) Disable Content Security Policy for browser tests. + Disable Content Security Policy for browser tests. + type: boolean + followRedirects: + description: |- + (Boolean) Determines whether or not the API HTTP test should follow redirects. + Determines whether or not the API HTTP test should follow redirects. + type: boolean + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + type: string + ignoreServerCertificateError: + description: |- + (Boolean) Ignore server certificate error for browser tests. + Ignore server certificate error for browser tests. + type: boolean + initialNavigationTimeout: + description: |- + (Number) Timeout before declaring the initial step as failed (in seconds) for browser tests. + Timeout before declaring the initial step as failed (in seconds) for browser tests. + type: number + minFailureDuration: + description: |- + (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + type: number + minLocationFailed: + description: |- + (Number) Minimum number of locations in failure required to trigger an alert. Defaults to 1. + Minimum number of locations in failure required to trigger an alert. Defaults to `1`. + type: number + monitorName: + description: |- + (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + type: string + monitorOptions: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + escalationMessage: + description: |- + notification. + A message to include with a re-notification. + type: string + notificationPresetName: + description: |- + (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + type: string + renotifyInterval: + description: |- + (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. + 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`. + type: number + renotifyOccurrences: + description: |- + (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + type: number + type: object + monitorPriority: + description: (Number) + type: number + noScreenshot: + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the steps. + type: boolean + restrictedRoles: + description: |- + (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + items: + type: string + type: array + x-kubernetes-list-type: set + retry: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object + rumSettings: + description: |- + (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) + The RUM data collection settings for the Synthetic browser test. + properties: + applicationId: + description: |- + (String) + RUM application ID used to collect RUM data for the browser test. + type: string + clientTokenId: + description: |- + (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + RUM application API key ID used to collect RUM data for the browser test. + type: number + isEnabled: + description: |- + (Boolean) Determines whether RUM data is collected during test runs. + Determines whether RUM data is collected during test runs. + type: boolean + type: object + scheduling: + description: |- + (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + Object containing timeframes and timezone used for advanced scheduling. + properties: + timeframes: + description: |- + (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + Array containing objects describing the scheduling pattern to apply to each day. + items: + properties: + day: + description: |- + (Number) Number representing the day of the week + Number representing the day of the week + type: number + from: + description: |- + (String) The hour of the day on which scheduling starts. + The hour of the day on which scheduling starts. + type: string + to: + description: |- + (String) The hour of the day on which scheduling ends. + The hour of the day on which scheduling ends. + type: string + type: object + type: array + timezone: + description: |- + (String) Timezone in which the timeframe is based. + Timezone in which the timeframe is based. + type: string + type: object + tickEvery: + description: |- + 604800 for mobile tests. + How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests. + type: number + type: object + requestBasicauth: + description: |- + (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) + The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. + properties: + accessKeySecretRef: + description: |- + (String, Sensitive) Access key for SIGV4 authentication. + Access key for `SIGV4` authentication. + 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 + accessTokenUrl: + description: |- + client or oauth-rop authentication. + Access token url for `oauth-client` or `oauth-rop` authentication. + type: string + audience: + description: |- + client or oauth-rop authentication. Defaults to "". + Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + clientId: + description: |- + client or oauth-rop authentication. + Client ID for `oauth-client` or `oauth-rop` authentication. + type: string + clientSecretSecretRef: + description: |- + client or oauth-rop authentication. + Client secret for `oauth-client` or `oauth-rop` authentication. + 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 + domain: + description: |- + (String) Domain for ntlm authentication. + Domain for `ntlm` authentication. + type: string + passwordSecretRef: + description: |- + (String, Sensitive) Password for authentication. + Password for authentication. + 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) Region for SIGV4 authentication. + Region for `SIGV4` authentication. + type: string + resource: + description: |- + client or oauth-rop authentication. Defaults to "". + Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + scope: + description: |- + client or oauth-rop authentication. Defaults to "". + Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + secretKeySecretRef: + description: |- + (String, Sensitive) Secret key for SIGV4 authentication. + Secret key for `SIGV4` authentication. + 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) Service name for SIGV4 authentication. + Service name for `SIGV4` authentication. + type: string + sessionToken: + description: |- + (String) Session token for SIGV4 authentication. + Session token for `SIGV4` authentication. + type: string + tokenApiAuthentication: + description: |- + client or oauth-rop authentication. Valid values are header, body. + Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. + type: string + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of basic authentication to use when performing the test. Defaults to `"web"`. + type: string + username: + description: |- + (String) Username for authentication. + Username for authentication. + type: string + workstation: + description: |- + (String) Workstation for ntlm authentication. + Workstation for `ntlm` authentication. + type: string + type: object requestClientCertificate: - description: '(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) Client - certificate to use when performing the test request. Exactly - one nested block is allowed with the structure below.' - items: - properties: - cert: - description: '(Block List, Min: 1, Max: 1) (see below for - nested schema)' - items: + description: |- + (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) + Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. + properties: + cert: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: array - key: - description: '(Block List, Min: 1, Max: 1) (see below for - nested schema)' - items: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + required: + - contentSecretRef + type: object + key: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + contentSecretRef: + description: |- + (String, Sensitive) Content of the certificate. + Content of the certificate. properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. + 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: array - type: object - type: array + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + required: + - contentSecretRef + type: object + type: object requestDefinition: - description: '(Block List, Max: 1) Required if type = "api". The - synthetics test request. (see below for nested schema) Required - if `type = "api"`. The synthetics test request.' + description: |- + (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) + Required if `type = "api"`. The synthetics test request. + properties: + body: + description: |- + (String) The request body. + The request body. + type: string + bodyType: + description: |- + www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. + type: string + callType: + description: |- + (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + The type of gRPC call to perform. Valid values are `healthcheck`, `unary`. + type: string + certificateDomains: + description: |- + (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. + 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`. + items: + type: string + type: array + dnsServer: + description: |- + (String) DNS server to use for DNS tests (subtype = "dns"). + DNS server to use for DNS tests (`subtype = "dns"`). + type: string + dnsServerPort: + description: |- + (String) DNS server port to use for DNS tests. + DNS server port to use for DNS tests. + type: string + form: + additionalProperties: + type: string + description: |- + data. + Form data to be sent when `body_type` is `multipart/form-data`. + type: object + x-kubernetes-map-type: granular + host: + description: |- + (String) Host name to perform the test with. + Host name to perform the test with. + type: string + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead. + type: string + isMessageBase64Encoded: + description: |- + encoded. + Whether the message is base64-encoded. + type: boolean + message: + description: |- + (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 "". + For UDP and websocket tests, message to send with the request. + type: string + method: + description: |- + (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. + 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`. + type: string + noSavingResponseBody: + description: |- + (Boolean) Determines whether or not to save the response body. + Determines whether or not to save the response body. + type: boolean + numberOfPackets: + description: |- + (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + Number of pings to use per test for ICMP tests (`subtype = "icmp"`) between 0 and 10. + type: number + persistCookies: + description: |- + (Boolean) Persist cookies across redirects. + Persist cookies across redirects. + type: boolean + plainProtoFile: + description: |- + (String) The content of a proto file as a string. + The content of a proto file as a string. + type: string + port: + description: |- + (String) Port to use when performing the test. + Port to use when performing the test. + type: string + protoJsonDescriptor: + description: |- + (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. + type: string + servername: + description: |- + (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. + 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. + type: string + service: + description: |- + (String) The gRPC service on which you want to perform the gRPC call. + The gRPC service on which you want to perform the gRPC call. + type: string + shouldTrackHops: + description: |- + (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). + type: boolean + timeout: + description: |- + (Number) Timeout in seconds for the test. + Timeout in seconds for the test. + type: number + url: + description: |- + (String) The URL to send the request to. + The URL to send the request to. + type: string + type: object + requestFile: + description: |- + (Block List) Files to be used as part of the request in the test. (see below for nested schema) + Files to be used as part of the request in the test. items: properties: - body: - description: (String) The request body. The request body. - type: string - bodyType: - description: www-form-urlencoded, graphql. Type of the request - body. Valid values are `text/plain`, `application/json`, - `text/xml`, `text/html`, `application/x-www-form-urlencoded`, - `graphql`. + content: + description: |- + (String, Sensitive) Content of the certificate. + Content of the file. type: string - callType: - description: (String) The type of gRPC call to perform. - Valid values are healthcheck, unary. The type of gRPC - call to perform. Valid values are `healthcheck`, `unary`. - type: string - certificateDomains: - description: (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. - 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`. - items: - type: string - type: array - dnsServer: - description: (String) DNS server to use for DNS tests (subtype - = "dns"). DNS server to use for DNS tests (`subtype = - "dns"`). - type: string - dnsServerPort: - description: (Number) DNS server port to use for DNS tests. - DNS server port to use for DNS tests. - type: number - host: - description: (String) Host name to perform the test with. - Host name to perform the test with. - type: string - message: - description: (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 "". For UDP and websocket tests, - message to send with the request. - type: string - method: - description: (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. 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`. - type: string - noSavingResponseBody: - description: (Boolean) Determines whether or not to save - the response body. Determines whether or not to save the - response body. - type: boolean - numberOfPackets: - description: (Number) Number of pings to use per test for - ICMP tests (subtype = "icmp") between 0 and 10. Number - of pings to use per test for ICMP tests (`subtype = "icmp"`) - between 0 and 10. - type: number - persistCookies: - description: (Boolean) Persist cookies across redirects. - Persist cookies across redirects. - type: boolean - plainProtoFile: - description: (String) The content of a proto file as a string. - The content of a proto file as a string. - type: string - port: - description: (Number) Port to use when performing the test. - Port to use when performing the test. - type: number - protoJsonDescriptor: - description: (String, Deprecated) A protobuf JSON descriptor. - Deprecated. Use plain_proto_file instead. A protobuf JSON - descriptor. **Deprecated.** Use `plain_proto_file` instead. - type: string - servername: - description: (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. 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. - type: string - service: - description: (String) The gRPC service on which you want - to perform the gRPC call. The gRPC service on which you - want to perform the gRPC call. - type: string - shouldTrackHops: - description: (Boolean) This will turn on a traceroute probe - to discover all gateways along the path to the host destination. - For ICMP tests (subtype = "icmp"). This will turn on a - traceroute probe to discover all gateways along the path - to the host destination. For ICMP tests (`subtype = "icmp"`). - type: boolean - timeout: - description: (Number) Timeout in seconds for the test. Defaults - to 60. Timeout in seconds for the test. Defaults to `60`. + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the file. + type: string + originalFileName: + description: |- + (String) Original name of the file. + Original name of the file. + type: string + size: + description: |- + (Number) Size of the file. + Size of the file. type: number - url: - description: (String) The URL to send the request to. The - URL to send the request to. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the file. type: string type: object type: array requestHeaders: additionalProperties: type: string - description: (Map of String) Header name and value map. Header - name and value map. + description: |- + (Map of String) Header name and value map. + Header name and value map. type: object x-kubernetes-map-type: granular requestMetadata: additionalProperties: type: string - description: (Map of String) Metadata to include when performing - the gRPC test. Metadata to include when performing the gRPC - test. + description: |- + (Map of String) Metadata to include when performing the gRPC request. + Metadata to include when performing the gRPC request. type: object x-kubernetes-map-type: granular requestProxy: - description: '(Block List, Max: 1) The proxy to perform the test. - (see below for nested schema) The proxy to perform the test.' - items: - properties: - headers: - additionalProperties: - type: string - description: (Map of String) Header name and value map. - Header name and value map. - type: object - x-kubernetes-map-type: granular - url: - description: (String) The URL to send the request to. URL - of the proxy to perform the test. + description: |- + (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) + The proxy to perform the test. + properties: + headers: + additionalProperties: type: string - type: object - type: array + description: |- + (Map of String) Header name and value map. + Header name and value map. + type: object + x-kubernetes-map-type: granular + url: + description: |- + (String) The URL to send the request to. + URL of the proxy to perform the test. + type: string + type: object requestQuery: additionalProperties: type: string - description: (Map of String) Query arguments name and value map. + description: |- + (Map of String) Query arguments name and value map. Query arguments name and value map. type: object x-kubernetes-map-type: granular setCookie: - description: Cookie syntax. 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: |- + Cookie syntax. + 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. type: string status: - description: (String) Define whether you want to start (live) - or pause (paused) a Synthetic test. Valid values are live, paused. - Define whether you want to start (`live`) or pause (`paused`) - a Synthetic test. Valid values are `live`, `paused`. + description: |- + (String) Define whether you want to start (live) or pause (paused) a Synthetic test. Valid values are live, paused. + Define whether you want to start (`live`) or pause (`paused`) a Synthetic test. Valid values are `live`, `paused`. type: string subtype: - description: (String) The subtype of the Synthetic API test. Defaults - to http. Valid values are http, ssl, tcp, dns, multi, icmp, - udp, websocket, grpc. The subtype of the Synthetic API test. - Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, - `multi`, `icmp`, `udp`, `websocket`, `grpc`. + description: |- + (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + The subtype of the Synthetic API test. Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, `multi`, `icmp`, `udp`, `websocket`, `grpc`. type: string tags: - description: (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 ([]). 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: |- + (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 ([]). + 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 (`[]`). items: type: string type: array type: - description: (String) Synthetics test type. Valid values are api, - browser. Synthetics test type. Valid values are `api`, `browser`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Synthetics test type. Valid values are `api`, `browser`, `mobile`. + type: string + variablesFromScript: + description: |- + (String) Variables defined from JavaScript code for API HTTP tests. + Variables defined from JavaScript code for API HTTP tests. 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' + 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. + description: |- + A ManagementAction represents an action that the Crossplane controllers + can take on an external resource. enum: - Observe - Create @@ -3036,9 +4235,10 @@ spec: 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. + 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. @@ -3048,21 +4248,21 @@ spec: 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. + 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. + 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 @@ -3072,17 +4272,19 @@ spec: - 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. + 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. + description: |- + SecretStoreConfigRef specifies which secret store config should be used + for this ConnectionSecret. properties: name: description: Name of the referenced object. @@ -3092,21 +4294,21 @@ spec: 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. + 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. + 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 @@ -3121,21 +4323,22 @@ spec: 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. + 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. + 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. + description: |- + Type is the SecretType for the connection secret. - Only valid for Kubernetes Secret Stores. type: string type: object @@ -3146,14 +4349,15 @@ spec: - 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. + 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. @@ -3191,124 +4395,132 @@ spec: atProvider: properties: apiStep: - description: (Block List) Steps for multistep api tests (see below - for nested schema) Steps for multistep api tests + description: |- + step api tests (see below for nested schema) + Steps for multi-step api tests items: properties: allowFailure: - description: (Boolean) Determines whether or not to continue - with test if this step fails. Determines whether or not - to continue with test if this step fails. + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + Determines whether or not to continue with test if this step fails. type: boolean assertion: - description: (Block List) Assertions used for the test. - Multiple assertion blocks are allowed with the structure - below. (see below for nested schema) Assertions used for - the test. Multiple `assertion` blocks are allowed with - the structure below. + description: |- + (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. items: properties: + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + type: string operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). 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: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + 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)). type: string property: - description: (String) If assertion type is header, - this is the header name. If assertion type is `header`, - this is the header name. + description: |- + (String) If assertion type is header, this is the header name. + If assertion type is `header`, this is the header name. type: string target: - description: (String) Expected value. Depends on the - assertion type, refer to Datadog documentation for - details. Expected value. Depends on the assertion - type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) - for details. + description: |- + (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details. type: string targetjsonpath: - description: '(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) Expected structure if `operator` - is `validatesJSONPath`. Exactly one nested block - is allowed with the structure below.' - items: - properties: - jsonpath: - description: (String) The JSON path to assert. - The JSON path to assert. - type: string - operator: - description: (String) Assertion operator. Note - Only some combinations of type and operator - are valid (please refer to Datadog documentation). - The specific operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. - Expected matching value. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. + properties: + elementsoperator: + description: |- + (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + type: string + jsonpath: + description: |- + (String) The JSON path to assert. + The JSON path to assert. + type: string + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + type: object + targetjsonschema: + description: |- + (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + properties: + jsonschema: + description: |- + (String) The JSON Schema to validate the body against. + The JSON Schema to validate the body against. + type: string + metaschema: + description: |- + 07". + The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + type: string + type: object targetxpath: - description: '(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) Expected structure if `operator` - is `validatesXPath`. Exactly one nested block is - allowed with the structure below.' - items: - properties: - operator: - description: (String) Assertion operator. Note - Only some combinations of type and operator - are valid (please refer to Datadog documentation). - The specific operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. - Expected matching value. - type: string - xpath: - description: (String) The xpath to assert. The - xpath to assert. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. + properties: + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + xpath: + description: |- + (String) The xpath to assert. + The xpath to assert. + type: string + type: object timingsScope: - description: (String) Timings scope for response time - assertions. Valid values are all, withoutDNS. Timings - scope for response time assertions. Valid values - are `all`, `withoutDNS`. + description: |- + (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. type: string type: - description: (String) Synthetics test type. Valid - values are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + 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`, `bodyHash`, `javascript`. type: string type: object type: array + exitIfSucceed: + description: |- + (Boolean) Determines whether or not to exit the test if the step succeeds. + Determines whether or not to exit the test if the step succeeds. + type: boolean extractedValue: - description: (Block List) Values to parse and save as variables - from the response. (see below for nested schema) Values - to parse and save as variables from the response. + description: |- + (Block List) Values to parse and save as variables from the response. (see below for nested schema) + Values to parse and save as variables from the response. items: properties: field: - description: (String) When type is http_header, name - of the header to use to extract the value. When - type is `http_header`, name of the header to use - to extract the value. + description: |- + (String) When type is http_header or grpc_metadata, name of the header or metadatum to extract. + When type is `http_header` or `grpc_metadata`, name of the header or metadatum to extract. type: string name: description: (String) Name of Datadog synthetics test. @@ -3316,1238 +4528,1720 @@ spec: parser: description: '(Block List, Min: 1, Max: 1) (see below for nested schema)' - items: - properties: - type: - description: (String) Synthetics test type. - Valid values are api, browser. Type of parser - for a Synthetics global variable from a synthetics - test. Valid values are `raw`, `json_path`, - `regex`, `x_path`. - type: string - value: - description: (String) Regex or JSON path used - for the parser. Not used with type raw. Regex - or JSON path used for the parser. Not used - with type `raw`. - type: string - type: object - type: array + properties: + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of parser for a Synthetics global variable from a synthetics test. Valid values are `raw`, `json_path`, `regex`, `x_path`. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Regex or JSON path used for the parser. Not used with type `raw`. + type: string + type: object secure: - description: (Boolean) Determines whether or not the - extracted value will be obfuscated. Determines whether - or not the extracted value will be obfuscated. + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Determines whether or not the extracted value will be obfuscated. type: boolean type: - description: (String) Synthetics test type. Valid - values are api, browser. Property of the Synthetics - Test Response to use for the variable. Valid values - are `http_body`, `http_header`, `local_variable`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Property of the Synthetics Test Response to use for the variable. Valid values are `grpc_message`, `grpc_metadata`, `http_body`, `http_header`, `http_status_code`. type: string type: object type: array + extractedValuesFromScript: + description: |- + (String) Generate variables using JavaScript. + Generate variables using JavaScript. + type: string isCritical: - description: (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. 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: |- + (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. + Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. type: boolean name: - description: (String) Name of Datadog synthetics test. The - name of the step. + description: |- + (String) Name of Datadog synthetics test. + The name of the step. type: string requestBasicauth: - description: '(Block List, Max: 1) The HTTP basic authentication - credentials. Exactly one nested block is allowed with - the structure below. (see below for nested schema) The - HTTP basic authentication credentials. Exactly one nested - block is allowed with the structure below.' - items: - properties: - accessTokenUrl: - description: client or oauth-rop authentication. Access - token url for `oauth-client` or `oauth-rop` authentication. - type: string - audience: - description: client or oauth-rop authentication. Defaults - to "". Audience for `oauth-client` or `oauth-rop` - authentication. Defaults to `""`. - type: string - clientId: - description: client or oauth-rop authentication. Client - ID for `oauth-client` or `oauth-rop` authentication. - type: string - domain: - description: (String) Domain for ntlm authentication. - Domain for `ntlm` authentication. - type: string - region: - description: (String) Region for SIGV4 authentication. - Region for `SIGV4` authentication. - type: string - resource: - description: client or oauth-rop authentication. Defaults - to "". Resource for `oauth-client` or `oauth-rop` - authentication. Defaults to `""`. - type: string - scope: - description: client or oauth-rop authentication. Defaults - to "". Scope for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - serviceName: - description: (String) Service name for SIGV4 authentication. - Service name for `SIGV4` authentication. - type: string - sessionToken: - description: (String) Session token for SIGV4 authentication. - Session token for `SIGV4` authentication. - type: string - tokenApiAuthentication: - description: client or oauth-rop authentication. Valid - values are header, body. Token API Authentication - for `oauth-client` or `oauth-rop` authentication. - Valid values are `header`, `body`. - type: string - type: - description: (String) Synthetics test type. Valid - values are api, browser. Type of basic authentication - to use when performing the test. Defaults to `"web"`. - type: string - username: - description: (String) Username for authentication. - Username for authentication. - type: string - workstation: - description: (String) Workstation for ntlm authentication. - Workstation for `ntlm` authentication. - type: string - type: object - type: array + description: |- + (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) + The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. + properties: + accessTokenUrl: + description: |- + client or oauth-rop authentication. + Access token url for `oauth-client` or `oauth-rop` authentication. + type: string + audience: + description: |- + client or oauth-rop authentication. Defaults to "". + Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + clientId: + description: |- + client or oauth-rop authentication. + Client ID for `oauth-client` or `oauth-rop` authentication. + type: string + domain: + description: |- + (String) Domain for ntlm authentication. + Domain for `ntlm` authentication. + type: string + region: + description: |- + (String) Region for SIGV4 authentication. + Region for `SIGV4` authentication. + type: string + resource: + description: |- + client or oauth-rop authentication. Defaults to "". + Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + scope: + description: |- + client or oauth-rop authentication. Defaults to "". + Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + serviceName: + description: |- + (String) Service name for SIGV4 authentication. + Service name for `SIGV4` authentication. + type: string + sessionToken: + description: |- + (String) Session token for SIGV4 authentication. + Session token for `SIGV4` authentication. + type: string + tokenApiAuthentication: + description: |- + client or oauth-rop authentication. Valid values are header, body. + Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. + type: string + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of basic authentication to use when performing the test. Defaults to `"web"`. + type: string + username: + description: |- + (String) Username for authentication. + Username for authentication. + type: string + workstation: + description: |- + (String) Workstation for ntlm authentication. + Workstation for `ntlm` authentication. + type: string + type: object requestClientCertificate: - description: '(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) Client certificate to use when performing - the test request. Exactly one nested block is allowed - with the structure below.' - items: - properties: - cert: - description: '(Block List, Min: 1, Max: 1) (see below - for nested schema)' - items: - properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. - type: string - type: object - type: array - key: - description: '(Block List, Min: 1, Max: 1) (see below - for nested schema)' - items: - properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. - type: string - type: object - type: array - type: object - type: array + description: |- + (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) + Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. + properties: + cert: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + key: + description: '(Block List, Min: 1, Max: 1) (see below + for nested schema)' + properties: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + type: object requestDefinition: - description: '(Block List, Max: 1) Required if type = "api". - The synthetics test request. (see below for nested schema) - The request for the api step.' + description: |- + (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) + The request for the api step. + properties: + acceptSelfSigned: + description: |- + (Boolean) For SSL test, whether or not the test should allow self signed certificates. + For SSL test, whether or not the test should allow self signed certificates. + type: boolean + allowInsecure: + description: |- + (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + Allows loading insecure content for a request in an API test or in a multistep API test step. + type: boolean + body: + description: |- + (String) The request body. + The request body. + type: string + bodyType: + description: |- + www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. + type: string + callType: + description: |- + (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + The type of gRPC call to perform. Valid values are `healthcheck`, `unary`. + type: string + certificateDomains: + description: |- + (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. + 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`. + items: + type: string + type: array + checkCertificateRevocation: + description: |- + (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + type: boolean + dnsServer: + description: |- + (String) DNS server to use for DNS tests (subtype = "dns"). + DNS server to use for DNS tests (`subtype = "dns"`). + type: string + dnsServerPort: + description: |- + (String) DNS server port to use for DNS tests. + DNS server port to use for DNS tests. + type: string + followRedirects: + description: |- + (Boolean) Determines whether or not the API HTTP test should follow redirects. + Determines whether or not the API HTTP test should follow redirects. + type: boolean + form: + additionalProperties: + type: string + description: |- + data. + Form data to be sent when `body_type` is `multipart/form-data`. + type: object + x-kubernetes-map-type: granular + host: + description: |- + (String) Host name to perform the test with. + Host name to perform the test with. + type: string + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + type: string + isMessageBase64Encoded: + description: |- + encoded. + Whether the message is base64-encoded. + type: boolean + message: + description: |- + (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 "". + For UDP and websocket tests, message to send with the request. + type: string + method: + description: |- + (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. + 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`. + type: string + noSavingResponseBody: + description: |- + (Boolean) Determines whether or not to save the response body. + Determines whether or not to save the response body. + type: boolean + numberOfPackets: + description: |- + (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + Number of pings to use per test for ICMP tests (`subtype = "icmp"`) between 0 and 10. + type: number + persistCookies: + description: |- + (Boolean) Persist cookies across redirects. + Persist cookies across redirects. + type: boolean + plainProtoFile: + description: |- + (String) The content of a proto file as a string. + The content of a proto file as a string. + type: string + port: + description: |- + (String) Port to use when performing the test. + Port to use when performing the test. + type: string + protoJsonDescriptor: + description: |- + (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. + type: string + servername: + description: |- + (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. + 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. + type: string + service: + description: |- + (String) The gRPC service on which you want to perform the gRPC call. + The gRPC service on which you want to perform the gRPC call. + type: string + shouldTrackHops: + description: |- + (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). + type: boolean + timeout: + description: |- + (Number) Timeout in seconds for the test. + Timeout in seconds for the test. + type: number + url: + description: |- + (String) The URL to send the request to. + The URL to send the request to. + type: string + type: object + requestFile: + description: |- + (Block List) Files to be used as part of the request in the test. (see below for nested schema) + Files to be used as part of the request in the test. items: properties: - allowInsecure: - description: (Boolean) Allows loading insecure content - for an HTTP request in an API test or in a multistep - API test step. Allows loading insecure content for - an HTTP request in an API test or in a multistep - API test step. - type: boolean - body: - description: (String) The request body. The request - body. - type: string - bodyType: - description: www-form-urlencoded, graphql. Type of - the request body. Valid values are `text/plain`, - `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, - `graphql`. - type: string - callType: - description: (String) The type of gRPC call to perform. - Valid values are healthcheck, unary. The type of - gRPC call to perform. Valid values are `healthcheck`, - `unary`. + bucketKey: + description: |- + (String) Bucket key of the file. + Bucket key of the file. type: string - certificateDomains: - description: (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. 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`. - items: - type: string - type: array - dnsServer: - description: (String) DNS server to use for DNS tests - (subtype = "dns"). DNS server to use for DNS tests - (`subtype = "dns"`). - type: string - dnsServerPort: - description: (Number) DNS server port to use for DNS - tests. DNS server port to use for DNS tests. - type: number - followRedirects: - description: (Boolean) Determines whether or not the - API HTTP test should follow redirects. Determines - whether or not the API HTTP test should follow redirects. - type: boolean - host: - description: (String) Host name to perform the test - with. Host name to perform the test with. - type: string - message: - description: (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 "". For UDP and - websocket tests, message to send with the request. - type: string - method: - description: (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. - 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`. - type: string - noSavingResponseBody: - description: (Boolean) Determines whether or not to - save the response body. Determines whether or not - to save the response body. - type: boolean - numberOfPackets: - description: (Number) Number of pings to use per test - for ICMP tests (subtype = "icmp") between 0 and - 10. Number of pings to use per test for ICMP tests - (`subtype = "icmp"`) between 0 and 10. - type: number - persistCookies: - description: (Boolean) Persist cookies across redirects. - Persist cookies across redirects. - type: boolean - plainProtoFile: - description: (String) The content of a proto file - as a string. The content of a proto file as a string. - type: string - port: - description: (Number) Port to use when performing - the test. Port to use when performing the test. - type: number - protoJsonDescriptor: - description: (String, Deprecated) A protobuf JSON - descriptor. Deprecated. Use plain_proto_file instead. - A protobuf JSON descriptor. **Deprecated.** Use - `plain_proto_file` instead. + content: + description: |- + (String, Sensitive) Content of the certificate. + Content of the file. type: string - servername: - description: (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. 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. - type: string - service: - description: (String) The gRPC service on which you - want to perform the gRPC call. The gRPC service - on which you want to perform the gRPC call. - type: string - shouldTrackHops: - description: (Boolean) This will turn on a traceroute - probe to discover all gateways along the path to - the host destination. For ICMP tests (subtype = - "icmp"). This will turn on a traceroute probe to - discover all gateways along the path to the host - destination. For ICMP tests (`subtype = "icmp"`). - type: boolean - timeout: - description: (Number) Timeout in seconds for the test. - Defaults to 60. Timeout in seconds for the test. - Defaults to `60`. + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the file. + type: string + originalFileName: + description: |- + (String) Original name of the file. + Original name of the file. + type: string + size: + description: |- + (Number) Size of the file. + Size of the file. type: number - url: - description: (String) The URL to send the request - to. The URL to send the request to. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the file. type: string type: object type: array requestHeaders: additionalProperties: type: string - description: (Map of String) Header name and value map. + description: |- + (Map of String) Header name and value map. Header name and value map. type: object x-kubernetes-map-type: granular + requestMetadata: + additionalProperties: + type: string + description: |- + (Map of String) Metadata to include when performing the gRPC request. + Metadata to include when performing the gRPC request. + type: object + x-kubernetes-map-type: granular requestProxy: - description: '(Block List, Max: 1) The proxy to perform - the test. (see below for nested schema) The proxy to perform - the test.' - items: - properties: - headers: - additionalProperties: - type: string - description: (Map of String) Header name and value - map. Header name and value map. - type: object - x-kubernetes-map-type: granular - url: - description: (String) The URL to send the request - to. URL of the proxy to perform the test. - type: string - type: object - type: array + description: |- + (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) + The proxy to perform the test. + properties: + headers: + additionalProperties: + type: string + description: |- + (Map of String) Header name and value map. + Header name and value map. + type: object + x-kubernetes-map-type: granular + url: + description: |- + (String) The URL to send the request to. + URL of the proxy to perform the test. + type: string + type: object requestQuery: additionalProperties: type: string - description: (Map of String) Query arguments name and value - map. Query arguments name and value map. + description: |- + (Map of String) Query arguments name and value map. + Query arguments name and value map. type: object x-kubernetes-map-type: granular retry: description: '(Block List, Max: 1) (see below for nested schema)' - items: - properties: - count: - description: (Number) Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to 0. Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to `0`. - type: number - interval: - description: (Number) Interval between a failed test - and the next retry in milliseconds. Defaults to - 300. Interval between a failed test and the next - retry in milliseconds. Defaults to `300`. - type: number - type: object - type: array + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object subtype: - description: (String) The subtype of the Synthetic API test. - Defaults to http. Valid values are http, ssl, tcp, dns, - multi, icmp, udp, websocket, grpc. The subtype of the - Synthetic multistep API test step. Valid values are `http`, - `grpc`. Defaults to `"http"`. - type: string + description: |- + (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + The subtype of the Synthetic multi-step API test step. Valid values are `http`, `grpc`, `ssl`, `dns`, `tcp`, `udp`, `icmp`, `websocket`, `wait`. Defaults to `"http"`. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + The time to wait in seconds. Minimum value: 0. Maximum value: 180. + type: number type: object type: array assertion: - description: (Block List) Assertions used for the test. Multiple - assertion blocks are allowed with the structure below. (see - below for nested schema) Assertions used for the test. Multiple - `assertion` blocks are allowed with the structure below. + description: |- + (Block List) Assertions used for the test. Multiple assertion blocks are allowed with the structure below. (see below for nested schema) + Assertions used for the test. Multiple `assertion` blocks are allowed with the structure below. items: properties: + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + If assertion type is `javascript`, this is the JavaScript code that performs the assertions. + type: string operator: - description: (String) Assertion operator. Note Only some - combinations of type and operator are valid (please refer - to Datadog documentation). 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: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + 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)). type: string property: - description: (String) If assertion type is header, this - is the header name. If assertion type is `header`, this - is the header name. + description: |- + (String) If assertion type is header, this is the header name. + If assertion type is `header`, this is the header name. type: string target: - description: (String) Expected value. Depends on the assertion - type, refer to Datadog documentation for details. Expected - value. Depends on the assertion type, refer to [Datadog - documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) - for details. + description: |- + (String) Expected value. Depends on the assertion type, refer to Datadog documentation for details. + Expected value. Depends on the assertion type, refer to [Datadog documentation](https://docs.datadoghq.com/api/latest/synthetics/#create-a-test) for details. type: string targetjsonpath: - description: '(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) Expected structure if `operator` is `validatesJSONPath`. - Exactly one nested block is allowed with the structure - below.' - items: - properties: - jsonpath: - description: (String) The JSON path to assert. The - JSON path to assert. - type: string - operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). The specific - operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. Expected - matching value. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesJSONPath`. Exactly one nested block is allowed with the structure below. + properties: + elementsoperator: + description: |- + (String) The element from the list of results to assert on. Select from firstElementMatches (the first element in the list), everyElementMatches (every element in the list), atLeastOneElementMatches (at least one element in the list), or serializationMatches (the serialized value of the list). Defaults to "firstElementMatches". + The element from the list of results to assert on. Select from `firstElementMatches` (the first element in the list), `everyElementMatches` (every element in the list), `atLeastOneElementMatches` (at least one element in the list), or `serializationMatches` (the serialized value of the list). Defaults to `"firstElementMatches"`. + type: string + jsonpath: + description: |- + (String) The JSON path to assert. + The JSON path to assert. + type: string + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + type: object + targetjsonschema: + description: |- + (Block List, Max: 1) Expected structure if operator is validatesJSONSchema. Exactly one nested block is allowed with the structure below. (see below for nested schema) + Expected structure if `operator` is `validatesJSONSchema`. Exactly one nested block is allowed with the structure below. + properties: + jsonschema: + description: |- + (String) The JSON Schema to validate the body against. + The JSON Schema to validate the body against. + type: string + metaschema: + description: |- + 07". + The meta schema to use for the JSON Schema. Defaults to `"draft-07"`. + type: string + type: object targetxpath: - description: '(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) Expected structure if `operator` is `validatesXPath`. - Exactly one nested block is allowed with the structure - below.' - items: - properties: - operator: - description: (String) Assertion operator. Note Only - some combinations of type and operator are valid - (please refer to Datadog documentation). The specific - operator to use on the path. - type: string - targetvalue: - description: (String) Expected matching value. Expected - matching value. - type: string - xpath: - description: (String) The xpath to assert. The xpath - to assert. - type: string - type: object - type: array + description: |- + (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) + Expected structure if `operator` is `validatesXPath`. Exactly one nested block is allowed with the structure below. + properties: + operator: + description: |- + (String) Assertion operator. Note Only some combinations of type and operator are valid (please refer to Datadog documentation). + The specific operator to use on the path. + type: string + targetvalue: + description: |- + (String) Expected matching value. + Expected matching value. + type: string + xpath: + description: |- + (String) The xpath to assert. + The xpath to assert. + type: string + type: object timingsScope: - description: (String) Timings scope for response time assertions. - Valid values are all, withoutDNS. Timings scope for response - time assertions. Valid values are `all`, `withoutDNS`. + description: |- + (String) Timings scope for response time assertions. Valid values are all, withoutDNS. + Timings scope for response time assertions. Valid values are `all`, `withoutDNS`. type: string type: - description: (String) Synthetics test type. Valid values - are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + 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`, `bodyHash`, `javascript`. type: string type: object type: array browserStep: - description: (Block List) Steps for browser tests. (see below - for nested schema) Steps for browser tests. + description: |- + (Block List) Steps for browser tests. (see below for nested schema) + Steps for browser tests. items: properties: allowFailure: - description: (Boolean) Determines whether or not to continue - with test if this step fails. Determines if the step should - be allowed to fail. + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + Determines if the step should be allowed to fail. + type: boolean + alwaysExecute: + description: |- + (Boolean) Determines whether or not to always execute this step even if the previous step failed or was skipped. + Determines whether or not to always execute this step even if the previous step failed or was skipped. + type: boolean + exitIfSucceed: + description: |- + (Boolean) Determines whether or not to exit the test if the step succeeds. + Determines whether or not to exit the test if the step succeeds. type: boolean forceElementUpdate: - description: (Boolean) Force update of the "element" parameter - for the step Force update of the "element" parameter for - the step + description: |- + (Boolean) Force update of the "element" parameter for the step + Force update of the "element" parameter for the step type: boolean isCritical: - description: (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. 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: |- + (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. + Determines whether or not to consider the entire test as failed if this step fails. Can be used only if `allow_failure` is `true`. type: boolean + localKey: + description: |- + (String) A unique identifier used to track steps after reordering. + A unique identifier used to track steps after reordering. + type: string name: - description: (String) Name of Datadog synthetics test. Name - of the step. + description: |- + (String) Name of Datadog synthetics test. + Name of the step. type: string noScreenshot: - description: (Boolean) Prevents saving screenshots of the - step. Prevents saving screenshots of the step. + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the step. type: boolean params: - description: '(Block List, Min: 1, Max: 1) Parameters for - the step. (see below for nested schema) Parameters for - the step.' - items: - properties: - attribute: - description: (String) Name of the attribute to use - for an "assert attribute" step. Name of the attribute - to use for an "assert attribute" step. - type: string - check: - description: (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 type to use for an assertion - step. Valid values are `equals`, `notEquals`, `contains`, - `notContains`, `startsWith`, `notStartsWith`, `greater`, - `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, - `between`, `isEmpty`, `notIsEmpty`. - type: string - clickType: - description: (String) Type of click to use for a "click" - step. Type of click to use for a "click" step. - type: string - code: - description: (String) Javascript code to use for the - step. Javascript code to use for the step. - type: string - delay: - description: (Number) Delay between each key stroke - for a "type test" step. Delay between each key stroke - for a "type test" step. - type: number - element: - description: (String) Element to use for the step, - json encoded string. Element to use for the step, - json encoded string. - type: string - elementUserLocator: - description: '(Block List, Max: 1) Custom user selector - to use for the step. (see below for nested schema) - Custom user selector to use for the step.' - items: - properties: - failTestOnCannotLocate: - description: (Boolean) Defaults to false. Defaults - to `false`. - type: boolean - value: - description: (String) Regex or JSON path used - for the parser. Not used with type raw. - items: - properties: - type: - description: (String) Synthetics test - type. Valid values are api, browser. - Defaults to `"css"`. - type: string - value: - description: (String) Regex or JSON path - used for the parser. Not used with type - raw. - type: string - type: object - type: array - type: object - type: array - email: - description: (String) Details of the email for an - "assert email" step. Details of the email for an - "assert email" step. - type: string - file: - description: (String) JSON encoded string used for - an "assert download" step. Refer to the examples - for a usage example showing the schema. JSON encoded - string used for an "assert download" step. Refer - to the examples for a usage example showing the - schema. - type: string - files: - description: (String) Details of the files for an - "upload files" step, json encoded string. Details - of the files for an "upload files" step, json encoded - string. - type: string - modifiers: - description: (List of String) Modifier to use for - a "press key" step. Modifier to use for a "press - key" step. - items: - type: string - type: array - playingTabId: - description: (String) ID of the tab to play the subtest. - ID of the tab to play the subtest. - type: string - request: - description: (String) Request for an API step. Request - for an API step. - type: string - subtestPublicId: - description: (String) ID of the Synthetics test to - use as subtest. ID of the Synthetics test to use - as subtest. - type: string - value: - description: (String) Regex or JSON path used for - the parser. Not used with type raw. Value of the - step. - type: string - variable: - description: '(Block List, Max: 1) Details of the - variable to extract. (see below for nested schema) - Details of the variable to extract.' - items: + description: |- + (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + Parameters for the step. + properties: + attribute: + description: |- + (String) Name of the attribute to use for an "assert attribute" step. + Name of the attribute to use for an "assert attribute" step. + type: string + check: + description: |- + (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. + type: string + clickType: + description: |- + (String) Type of click to use for a "click" step. + Type of click to use for a "click" step. + type: string + clickWithJavascript: + description: |- + (Boolean) Whether to use element.click() for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + Whether to use `element.click()` for a "click" step. This is a more reliable way to interact with elements but does not emulate a real user interaction. + type: boolean + code: + description: |- + (String) If assertion type is javascript, this is the JavaScript code that performs the assertions. + Javascript code to use for the step. + type: string + delay: + description: |- + (Number) Delay between each key stroke for a "type test" step. + Delay between each key stroke for a "type test" step. + type: number + element: + description: |- + (String) Element to use for the step, JSON encoded string. + Element to use for the step, JSON encoded string. + type: string + elementUserLocator: + description: |- + (Block List, Max: 1) Custom user selector to use for the step. (see below for nested schema) + Custom user selector to use for the step. + properties: + failTestOnCannotLocate: + description: |- + (Boolean) Defaults to false. + Defaults to `false`. + type: boolean + value: + description: '(Number) The time to wait in seconds. + Minimum value: 0. Maximum value: 180.' properties: - example: - description: (String) Example of the extracted - variable. Defaults to "". Example of the extracted - variable. Defaults to `""`. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Defaults to `"css"`. type: string - name: - description: (String) Name of Datadog synthetics - test. Name of the extracted variable. + value: + description: '(Number) The time to wait in seconds. + Minimum value: 0. Maximum value: 180.' type: string type: object - type: array - withClick: - description: (Boolean) For "file upload" steps. For - "file upload" steps. - type: boolean - x: - description: (Number) X coordinates for a "scroll - step". X coordinates for a "scroll step". - type: number - "y": - description: (Number) Y coordinates for a "scroll - step". Y coordinates for a "scroll step". - type: number - type: object - type: array + type: object + email: + description: |- + (String) Details of the email for an "assert email" step, JSON encoded string. + Details of the email for an "assert email" step, JSON encoded string. + type: string + file: + description: |- + (String) JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + JSON encoded string used for an "assert download" step. Refer to the examples for a usage example showing the schema. + type: string + files: + description: |- + (String) Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Details of the files for an "upload files" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + type: string + modifiers: + description: |- + (List of String) Modifier to use for a "press key" step. + Modifier to use for a "press key" step. + items: + type: string + type: array + playingTabId: + description: |- + (String) ID of the tab to play the subtest. + ID of the tab to play the subtest. + type: string + request: + description: |- + (String) Request for an API step. + Request for an API step. + type: string + requests: + description: |- + (String) Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + Details of the requests for an "assert request" step, JSON encoded string. Refer to the examples for a usage example showing the schema. + type: string + subtestPublicId: + description: |- + (String) ID of the Synthetics test to use as subtest. + ID of the Synthetics test to use as subtest. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value of the step. + type: string + variable: + description: |- + (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + Details of the variable to extract. + properties: + example: + description: |- + (String) Example of the extracted variable. Defaults to "". + Example of the extracted variable. Defaults to `""`. + type: string + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the extracted variable. + type: string + secure: + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Whether the value of this variable will be obfuscated in test results. Defaults to `false`. + type: boolean + type: object + withClick: + description: |- + (Boolean) For "file upload" steps. + For "file upload" steps. + type: boolean + x: + description: |- + (Number) X coordinates for a "scroll step". + X coordinates for a "scroll step". + type: number + "y": + description: |- + (Number) Y coordinates for a "scroll step". + Y coordinates for a "scroll step". + type: number + type: object + publicId: + description: |- + (String) The identifier of the step on the backend. + The identifier of the step on the backend. + type: string timeout: - description: (Number) Timeout in seconds for the test. Defaults - to 60. Used to override the default timeout of a step. + description: |- + (Number) Timeout in seconds for the test. + Used to override the default timeout of a step. type: number type: - description: (String) Synthetics test type. Valid values - are api, browser. 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: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the step. Valid values are `assertCurrentUrl`, `assertElementAttribute`, `assertElementContent`, `assertElementPresent`, `assertEmail`, `assertFileDownload`, `assertFromJavascript`, `assertPageContains`, `assertPageLacks`, `assertRequests`, `click`, `extractFromJavascript`, `extractVariable`, `goToEmailLink`, `goToUrl`, `goToUrlAndMeasureTti`, `hover`, `playSubTest`, `pressKey`, `refresh`, `runApiTest`, `scroll`, `selectOption`, `typeText`, `uploadFiles`, `wait`. type: string type: object type: array browserVariable: - description: (Block List) Variables used for a browser test steps. - Multiple variable blocks are allowed with the structure below. - (see below for nested schema) Variables used for a browser test - steps. Multiple `variable` blocks are allowed with the structure - below. + description: |- + (Block List) Variables used for a browser test steps. Multiple variable blocks are allowed with the structure below. (see below for nested schema) + Variables used for a browser test steps. Multiple `variable` blocks are allowed with the structure below. items: properties: example: - description: (String) Example of the extracted variable. - Defaults to "". Example for the variable. Defaults to - `""`. + description: |- + (String) Example of the extracted variable. Defaults to "". + Example for the variable. Defaults to `""`. type: string id: - description: (String) The ID of this resource. 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: |- + (String) The ID of this resource. + ID of the global variable to use. This is actually only used (and required) in the case of using a variable of type `global`. type: string name: - description: (String) Name of Datadog synthetics test. Name - of the variable. + description: |- + (String) Name of Datadog synthetics test. + Name of the variable. type: string pattern: - description: (String) Pattern of the variable. Defaults - to "". Pattern of the variable. Defaults to `""`. + description: |- + (String) Pattern of the variable. Defaults to "". + Pattern of the variable. Defaults to `""`. type: string secure: - description: (Boolean) Determines whether or not the extracted - value will be obfuscated. Determines whether or not the - browser test variable is obfuscated. Can only be used - with a browser variable of type `text` + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Determines whether or not the browser test variable is obfuscated. Can only be used with a browser variable of type `text` type: boolean type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of browser test variable. Valid - values are `element`, `email`, `global`, `javascript`, - `text`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of browser test variable. Valid values are `element`, `email`, `global`, `text`. type: string type: object type: array + configInitialApplicationArguments: + additionalProperties: + type: string + description: |- + (Map of String) Initial application arguments for the mobile test. + Initial application arguments for the mobile test. + type: object + x-kubernetes-map-type: granular configVariable: - description: (Block List) Variables used for the test configuration. - Multiple config_variable blocks are allowed with the structure - below. (see below for nested schema) Variables used for the - test configuration. Multiple `config_variable` blocks are allowed - with the structure below. + description: |- + (Block List) Variables used for the test configuration. Multiple config_variable blocks are allowed with the structure below. (see below for nested schema) + Variables used for the test configuration. Multiple `config_variable` blocks are allowed with the structure below. items: properties: example: - description: (String) Example of the extracted variable. - Defaults to "". Example for the variable. This value is - not returned by the api when `secure = true`. + description: |- + (String) Example of the extracted variable. Defaults to "". + Example for the variable. This value is not returned by the api when `secure = true`. type: string id: - description: (String) The ID of this resource. When type - = `global`, ID of the global variable to use. + description: |- + (String) The ID of this resource. + When type = `global`, ID of the global variable to use. type: string name: - description: (String) Name of Datadog synthetics test. Name - of the variable. + description: |- + (String) Name of Datadog synthetics test. + Name of the variable. type: string pattern: - description: (String) Pattern of the variable. Defaults - to "". Pattern of the variable. This value is not returned - by the api when `secure = true`. + description: |- + (String) Pattern of the variable. Defaults to "". + Pattern of the variable. This value is not returned by the api when `secure = true`. type: string secure: - description: (Boolean) Determines whether or not the extracted - value will be obfuscated. Whether the value of this variable - will be obfuscated in test results. Defaults to `false`. + description: |- + (Boolean) Determines whether or not the extracted value will be obfuscated. + Whether the value of this variable will be obfuscated in test results. Defaults to `false`. type: boolean type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of test configuration variable. - Valid values are `global`, `text`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of test configuration variable. Valid values are `global`, `text`, `email`. type: string type: object type: array deviceIds: - description: (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. - 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: |- + (List of String) Required if type = "browser". Array with the different device IDs used to run the test. + Required if `type = "browser"`. Array with the different device IDs used to run the test. items: type: string type: array + forceDeleteDependencies: + description: |- + (Boolean) A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + A boolean indicating whether this synthetics test can be deleted even if it's referenced by other resources (for example, SLOs and composite monitors). + type: boolean id: description: (String) The ID of this resource. type: string locations: - description: (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. Array of locations used to run - the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) - to retrieve the list of locations. + description: |- + (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 or find the possible values listed in this API response. + Array of locations used to run the test. Refer to [the Datadog Synthetics location data source](https://registry.io/providers/DataDog/datadog/latest/docs/data-sources/synthetics_locations) to retrieve the list of locations or find the possible values listed in [this API response](https://app.datadoghq.com/api/v1/synthetics/locations?only_public=true). items: type: string type: array x-kubernetes-list-type: set message: - description: (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 "". 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: |- + (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 "". + 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 `""`. type: string - monitorId: - description: (Number) ID of the monitor associated with the Datadog - synthetics test. ID of the monitor associated with the Datadog - synthetics test. - type: number - name: - description: (String) Name of Datadog synthetics test. Name of - Datadog synthetics test. - type: string - optionsList: + mobileOptionsList: description: '(Block List, Max: 1) (see below for nested schema)' + properties: + allowApplicationCrash: + description: (Boolean) + type: boolean + bindings: + description: |- + (Block List) Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a datadog_restriction_policy resource (see below for nested schema) + Restriction policy bindings for the Synthetic mobile test. Should not be used in parallel with a `datadog_restriction_policy` resource + items: + properties: + principals: + description: (List of String) + items: + type: string + type: array + relation: + description: |- + (String) Valid values are editor, viewer. + Valid values are `editor`, `viewer`. + type: string + type: object + type: array + ci: + description: |- + (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + CI/CD options for a Synthetic test. + properties: + executionRule: + description: |- + (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + type: string + type: object + defaultStepTimeout: + description: (Number) + type: number + deviceIds: + description: (List of String) Required if type = "browser". + Array with the different device IDs used to run the test. + items: + type: string + type: array + disableAutoAcceptAlert: + description: (Boolean) + type: boolean + minFailureDuration: + description: |- + (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + type: number + mobileApplication: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + applicationId: + description: (String) + type: string + referenceId: + description: (String) + type: string + referenceType: + description: |- + (String) Valid values are latest, version. + Valid values are `latest`, `version`. + type: string + type: object + monitorName: + description: |- + (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + type: string + monitorOptions: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + escalationMessage: + description: |- + notification. + A message to include with a re-notification. + type: string + notificationPresetName: + description: |- + (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + type: string + renotifyInterval: + description: |- + (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. + 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`. + type: number + renotifyOccurrences: + description: |- + (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + type: number + type: object + monitorPriority: + description: (Number) + type: number + noScreenshot: + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the steps. + type: boolean + restrictedRoles: + description: |- + (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + items: + type: string + type: array + x-kubernetes-list-type: set + retry: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object + scheduling: + description: |- + (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + Object containing timeframes and timezone used for advanced scheduling. + properties: + timeframes: + description: |- + (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + Array containing objects describing the scheduling pattern to apply to each day. + items: + properties: + day: + description: |- + (Number) Number representing the day of the week + Number representing the day of the week + type: number + from: + description: |- + (String) The hour of the day on which scheduling starts. + The hour of the day on which scheduling starts. + type: string + to: + description: |- + (String) The hour of the day on which scheduling ends. + The hour of the day on which scheduling ends. + type: string + type: object + type: array + timezone: + description: |- + (String) Timezone in which the timeframe is based. + Timezone in which the timeframe is based. + type: string + type: object + tickEvery: + description: |- + 604800 for mobile tests. + How often the test should run (in seconds). Valid range is `300-604800` for mobile tests. + type: number + verbosity: + description: (Number) + type: number + type: object + mobileStep: + description: |- + (Block List) Steps for mobile tests (see below for nested schema) + Steps for mobile tests items: properties: - acceptSelfSigned: - description: (Boolean) For SSL test, whether or not the - test should allow self signed certificates. For SSL test, - whether or not the test should allow self signed certificates. - type: boolean - allowInsecure: - description: (Boolean) Allows loading insecure content for - an HTTP request in an API test or in a multistep API test - step. Allows loading insecure content for an HTTP request - in an API test or in a multistep API test step. - type: boolean - checkCertificateRevocation: - description: (Boolean) For SSL test, whether or not the - test should fail on revoked certificate in stapled OCSP. - For SSL test, whether or not the test should fail on revoked - certificate in stapled OCSP. - type: boolean - ci: - description: '(Block List, Max: 1) CI/CD options for a Synthetic - test. (see below for nested schema) CI/CD options for - a Synthetic test.' - items: - properties: - executionRule: - description: (String) Execution rule for a Synthetics - test. Valid values are blocking, non_blocking, skipped. - Execution rule for a Synthetics test. Valid values - are `blocking`, `non_blocking`, `skipped`. - type: string - type: object - type: array - disableCors: - description: Origin Resource Sharing for browser tests. - Disable Cross-Origin Resource Sharing for browser tests. - type: boolean - disableCsp: - description: (Boolean) Disable Content Security Policy for - browser tests. Disable Content Security Policy for browser - tests. + allowFailure: + description: |- + (Boolean) Determines whether or not to continue with test if this step fails. + A boolean set to allow this step to fail. type: boolean - followRedirects: - description: (Boolean) Determines whether or not the API - HTTP test should follow redirects. Determines whether - or not the API HTTP test should follow redirects. + hasNewStepElement: + description: |- + (Boolean) A boolean set to determine if the step has a new step element. + A boolean set to determine if the step has a new step element. type: boolean - httpVersion: - description: (String) HTTP version to use for a Synthetics - API test. Valid values are http1, http2, any. HTTP version - to use for a Synthetics API test. Valid values are `http1`, - `http2`, `any`. - type: string - ignoreServerCertificateError: - description: (Boolean) Ignore server certificate error for - browser tests. Ignore server certificate error for browser - tests. + isCritical: + description: |- + (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. + A boolean to use in addition to `allowFailure` to determine if the test should be marked as failed when the step fails. type: boolean - initialNavigationTimeout: - description: (Number) Timeout before declaring the initial - step as failed (in seconds) for browser tests. Timeout - before declaring the initial step as failed (in seconds) - for browser tests. - type: number - minFailureDuration: - description: (Number) Minimum amount of time in failure - required to trigger an alert (in seconds). Default is - 0. Minimum amount of time in failure required to trigger - an alert (in seconds). Default is `0`. - type: number - minLocationFailed: - description: (Number) Minimum number of locations in failure - required to trigger an alert. Defaults to 1. Minimum number - of locations in failure required to trigger an alert. - Defaults to `1`. - type: number - monitorName: - description: (String) The monitor name is used for the alert - title as well as for all monitor dashboard widgets and - SLOs. The monitor name is used for the alert title as - well as for all monitor dashboard widgets and SLOs. + name: + description: |- + (String) Name of Datadog synthetics test. + The name of the step. type: string - monitorOptions: - description: '(Block List, Max: 1) (see below for nested - schema)' - items: - properties: - renotifyInterval: - description: (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. 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`. - type: number - type: object - type: array - monitorPriority: - description: (Number) - type: number noScreenshot: - description: (Boolean) Prevents saving screenshots of the - step. Prevents saving screenshots of the steps. + description: |- + (Boolean) Prevents saving screenshots of the step. + A boolean set to not take a screenshot for the step. type: boolean - 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 - retry: - description: '(Block List, Max: 1) (see below for nested - schema)' - items: - properties: - count: - description: (Number) Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to 0. Number of retries needed to - consider a location as failed before sending a notification - alert. Defaults to `0`. - type: number - interval: - description: (Number) Interval between a failed test - and the next retry in milliseconds. Defaults to - 300. Interval between a failed test and the next - retry in milliseconds. Defaults to `300`. - type: number - type: object - type: array - rumSettings: - description: '(Block List, Max: 1) The RUM data collection - settings for the Synthetic browser test. (see below for - nested schema) The RUM data collection settings for the - Synthetic browser test.' - items: - type: string - type: array - scheduling: - description: '(Block List, Max: 1) Object containing timeframes - and timezone used for advanced scheduling. (see below - for nested schema) Object containing timeframes and timezone - used for advanced scheduling.' - items: - properties: - timeframes: - description: '(Block Set, Min: 1) Array containing - objects describing the scheduling pattern to apply - to each day. (see below for nested schema) Array - containing objects describing the scheduling pattern - to apply to each day.' - items: + params: + description: |- + (Block List, Min: 1, Max: 1) Parameters for the step. (see below for nested schema) + Parameters for the step. + properties: + check: + description: |- + (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 type to use for an assertion step. Valid values are `equals`, `notEquals`, `contains`, `notContains`, `startsWith`, `notStartsWith`, `greater`, `lower`, `greaterEquals`, `lowerEquals`, `matchRegex`, `between`, `isEmpty`, `notIsEmpty`. + type: string + delay: + description: |- + (Number) Delay between each key stroke for a "type test" step. + Delay between each key stroke for a "type test" step. + type: number + direction: + description: |- + (String) Valid values are up, down, left, right. + Valid values are `up`, `down`, `left`, `right`. + type: string + element: + description: |- + (String) Element to use for the step, JSON encoded string. + Element to use for the step, JSON encoded string. + properties: + context: + description: (String) + type: string + contextType: + description: |- + (String) Valid values are native, web. + Valid values are `native`, `web`. + type: string + elementDescription: + description: (String) + type: string + multiLocator: + additionalProperties: + type: string + description: (Map of String) + type: object + x-kubernetes-map-type: granular + relativePosition: + description: '(Block List, Max: 1) (see below for + nested schema)' properties: - day: - description: (Number) Number representing the - day of the week Number representing the day - of the week + x: + description: (Number) X coordinates for a "scroll + step". + type: number + "y": + description: (Number) Y coordinates for a "scroll + step". type: number - from: - description: (String) The hour of the day on - which scheduling starts. The hour of the day - on which scheduling starts. - type: string - to: - description: (String) The hour of the day on - which scheduling ends. The hour of the day - on which scheduling ends. - type: string type: object - type: array - timezone: - description: (String) Timezone in which the timeframe - is based. Timezone in which the timeframe is based. - type: string - type: object - type: array - tickEvery: - description: (Number) How often the test should run (in - seconds). How often the test should run (in seconds). - type: number - type: object - type: array - requestBasicauth: - description: '(Block List, Max: 1) The HTTP basic authentication - credentials. Exactly one nested block is allowed with the structure - below. (see below for nested schema) The HTTP basic authentication - credentials. Exactly one nested block is allowed with the structure - below.' - items: - properties: - accessTokenUrl: - description: client or oauth-rop authentication. Access - token url for `oauth-client` or `oauth-rop` authentication. - type: string - audience: - description: client or oauth-rop authentication. Defaults - to "". Audience for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - clientId: - description: client or oauth-rop authentication. Client - ID for `oauth-client` or `oauth-rop` authentication. - type: string - domain: - description: (String) Domain for ntlm authentication. Domain - for `ntlm` authentication. - type: string - region: - description: (String) Region for SIGV4 authentication. Region - for `SIGV4` authentication. - type: string - resource: - description: client or oauth-rop authentication. Defaults - to "". Resource for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - scope: - description: client or oauth-rop authentication. Defaults - to "". Scope for `oauth-client` or `oauth-rop` authentication. - Defaults to `""`. - type: string - serviceName: - description: (String) Service name for SIGV4 authentication. - Service name for `SIGV4` authentication. - type: string - sessionToken: - description: (String) Session token for SIGV4 authentication. - Session token for `SIGV4` authentication. - type: string - tokenApiAuthentication: - description: client or oauth-rop authentication. Valid values - are header, body. Token API Authentication for `oauth-client` - or `oauth-rop` authentication. Valid values are `header`, - `body`. + textContent: + description: (String) + type: string + userLocator: + description: '(Block List, Max: 1) (see below for + nested schema)' + properties: + failTestOnCannotLocate: + description: (Boolean) Defaults to false. + type: boolean + values: + description: '(Block List, Max: 5) (see below + for nested schema)' + items: + properties: + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Valid values are `accessibility-id`, `id`, `ios-predicate-string`, `ios-class-chain`, `xpath`. + type: string + value: + description: '(Number) The time to wait + in seconds. Minimum value: 0. Maximum + value: 180.' + type: string + type: object + type: array + type: object + viewName: + description: (String) + type: string + type: object + enable: + description: (Boolean) + type: boolean + maxScrolls: + description: (Number) + type: number + positions: + description: (Block List) (see below for nested schema) + items: + properties: + x: + description: (Number) X coordinates for a "scroll + step". + type: number + "y": + description: (Number) Y coordinates for a "scroll + step". + type: number + type: object + type: array + subtestPublicId: + description: |- + (String) ID of the Synthetics test to use as subtest. + ID of the Synthetics test to use as subtest. + type: string + value: + description: |- + (Number) The time to wait in seconds. Minimum value: 0. Maximum value: 180. + Value of the step. + type: string + variable: + description: |- + (Block List, Max: 1) Details of the variable to extract. (see below for nested schema) + Details of the variable to extract. + properties: + example: + description: |- + (String) Example of the extracted variable. Defaults to "". + Example of the extracted variable. Defaults to `""`. + type: string + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the extracted variable. + type: string + type: object + withEnter: + description: (Boolean) + type: boolean + x: + description: |- + (Number) X coordinates for a "scroll step". + X coordinates for a "scroll step". + type: number + "y": + description: |- + (Number) Y coordinates for a "scroll step". + Y coordinates for a "scroll step". + type: number + type: object + publicId: + description: |- + (String) The identifier of the step on the backend. + The public ID of the step. type: string + timeout: + description: |- + (Number) Timeout in seconds for the test. + The time before declaring a step failed. + type: number type: - description: (String) Synthetics test type. Valid values - are api, browser. Type of basic authentication to use - when performing the test. Defaults to `"web"`. - type: string - username: - description: (String) Username for authentication. Username - for authentication. - type: string - workstation: - description: (String) Workstation for ntlm authentication. - Workstation for `ntlm` authentication. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + The type of the step. Valid values are `assertElementContent`, `assertScreenContains`, `assertScreenLacks`, `doubleTap`, `extractVariable`, `flick`, `openDeeplink`, `playSubTest`, `pressBack`, `restartApplication`, `rotate`, `scroll`, `scrollToElement`, `tap`, `toggleWiFi`, `typeText`, `wait`. type: string type: object type: array + monitorId: + description: |- + (Number) ID of the monitor associated with the Datadog synthetics test. + ID of the monitor associated with the Datadog synthetics test. + type: number + name: + description: |- + (String) Name of Datadog synthetics test. + Name of Datadog synthetics test. + type: string + optionsList: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + acceptSelfSigned: + description: |- + (Boolean) For SSL test, whether or not the test should allow self signed certificates. + For SSL test, whether or not the test should allow self signed certificates. + type: boolean + allowInsecure: + description: |- + (Boolean) Allows loading insecure content for a request in an API test or in a multistep API test step. + Allows loading insecure content for a request in an API test or in a multistep API test step. + type: boolean + checkCertificateRevocation: + description: |- + (Boolean) For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + For SSL test, whether or not the test should fail on revoked certificate in stapled OCSP. + type: boolean + ci: + description: |- + (Block List, Max: 1) CI/CD options for a Synthetic test. (see below for nested schema) + CI/CD options for a Synthetic test. + properties: + executionRule: + description: |- + (String) Execution rule for a Synthetics test. Valid values are blocking, non_blocking, skipped. + Execution rule for a Synthetics test. Valid values are `blocking`, `non_blocking`, `skipped`. + type: string + type: object + disableCors: + description: |- + Origin Resource Sharing for browser tests. + Disable Cross-Origin Resource Sharing for browser tests. + type: boolean + disableCsp: + description: |- + (Boolean) Disable Content Security Policy for browser tests. + Disable Content Security Policy for browser tests. + type: boolean + followRedirects: + description: |- + (Boolean) Determines whether or not the API HTTP test should follow redirects. + Determines whether or not the API HTTP test should follow redirects. + type: boolean + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. Valid values are `http1`, `http2`, `any`. Defaults to `"any"`. + type: string + ignoreServerCertificateError: + description: |- + (Boolean) Ignore server certificate error for browser tests. + Ignore server certificate error for browser tests. + type: boolean + initialNavigationTimeout: + description: |- + (Number) Timeout before declaring the initial step as failed (in seconds) for browser tests. + Timeout before declaring the initial step as failed (in seconds) for browser tests. + type: number + minFailureDuration: + description: |- + (Number) Minimum amount of time in failure required to trigger an alert (in seconds). Default is 0. + Minimum amount of time in failure required to trigger an alert (in seconds). Default is `0`. + type: number + minLocationFailed: + description: |- + (Number) Minimum number of locations in failure required to trigger an alert. Defaults to 1. + Minimum number of locations in failure required to trigger an alert. Defaults to `1`. + type: number + monitorName: + description: |- + (String) The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs. + type: string + monitorOptions: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + escalationMessage: + description: |- + notification. + A message to include with a re-notification. + type: string + notificationPresetName: + description: |- + (String) The name of the preset for the notification for the monitor. Valid values are show_all, hide_all, hide_query, hide_handles. + The name of the preset for the notification for the monitor. Valid values are `show_all`, `hide_all`, `hide_query`, `hide_handles`. + type: string + renotifyInterval: + description: |- + (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. + 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`. + type: number + renotifyOccurrences: + description: |- + (Number) The number of times a monitor renotifies. It can only be set if renotify_interval is set. + The number of times a monitor renotifies. It can only be set if `renotify_interval` is set. + type: number + type: object + monitorPriority: + description: (Number) + type: number + noScreenshot: + description: |- + (Boolean) Prevents saving screenshots of the step. + Prevents saving screenshots of the steps. + type: boolean + restrictedRoles: + description: |- + (Set of String, Deprecated) A list of role identifiers pulled from the Roles API to restrict read and write access. Deprecated. This field is no longer supported by the Datadog API. Please use datadog_restriction_policy instead. + A list of role identifiers pulled from the Roles API to restrict read and write access. **Deprecated.** This field is no longer supported by the Datadog API. Please use `datadog_restriction_policy` instead. + items: + type: string + type: array + x-kubernetes-list-type: set + retry: + description: '(Block List, Max: 1) (see below for nested schema)' + properties: + count: + description: |- + (Number) Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: 3 for api tests, 2 for browser and mobile tests. Defaults to 0. + Number of retries needed to consider a location as failed before sending a notification alert. Maximum value: `3` for `api` tests, `2` for `browser` and `mobile` tests. Defaults to `0`. + type: number + interval: + description: |- + (Number) Interval between a failed test and the next retry in milliseconds. Maximum value: 5000. Defaults to 300. + Interval between a failed test and the next retry in milliseconds. Maximum value: `5000`. Defaults to `300`. + type: number + type: object + rumSettings: + description: |- + (Block List, Max: 1) The RUM data collection settings for the Synthetic browser test. (see below for nested schema) + The RUM data collection settings for the Synthetic browser test. + properties: + applicationId: + description: |- + (String) + RUM application ID used to collect RUM data for the browser test. + type: string + clientTokenId: + description: |- + (Number, Sensitive) RUM application API key ID used to collect RUM data for the browser test. + RUM application API key ID used to collect RUM data for the browser test. + type: number + isEnabled: + description: |- + (Boolean) Determines whether RUM data is collected during test runs. + Determines whether RUM data is collected during test runs. + type: boolean + type: object + scheduling: + description: |- + (Block List, Max: 1) Object containing timeframes and timezone used for advanced scheduling. (see below for nested schema) + Object containing timeframes and timezone used for advanced scheduling. + properties: + timeframes: + description: |- + (Block Set, Min: 1) Array containing objects describing the scheduling pattern to apply to each day. (see below for nested schema) + Array containing objects describing the scheduling pattern to apply to each day. + items: + properties: + day: + description: |- + (Number) Number representing the day of the week + Number representing the day of the week + type: number + from: + description: |- + (String) The hour of the day on which scheduling starts. + The hour of the day on which scheduling starts. + type: string + to: + description: |- + (String) The hour of the day on which scheduling ends. + The hour of the day on which scheduling ends. + type: string + type: object + type: array + timezone: + description: |- + (String) Timezone in which the timeframe is based. + Timezone in which the timeframe is based. + type: string + type: object + tickEvery: + description: |- + 604800 for mobile tests. + How often the test should run (in seconds). Valid range is `30-604800` for API tests and `60-604800` for browser tests. + type: number + type: object + requestBasicauth: + description: |- + (Block List, Max: 1) The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. (see below for nested schema) + The HTTP basic authentication credentials. Exactly one nested block is allowed with the structure below. + properties: + accessTokenUrl: + description: |- + client or oauth-rop authentication. + Access token url for `oauth-client` or `oauth-rop` authentication. + type: string + audience: + description: |- + client or oauth-rop authentication. Defaults to "". + Audience for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + clientId: + description: |- + client or oauth-rop authentication. + Client ID for `oauth-client` or `oauth-rop` authentication. + type: string + domain: + description: |- + (String) Domain for ntlm authentication. + Domain for `ntlm` authentication. + type: string + region: + description: |- + (String) Region for SIGV4 authentication. + Region for `SIGV4` authentication. + type: string + resource: + description: |- + client or oauth-rop authentication. Defaults to "". + Resource for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + scope: + description: |- + client or oauth-rop authentication. Defaults to "". + Scope for `oauth-client` or `oauth-rop` authentication. Defaults to `""`. + type: string + serviceName: + description: |- + (String) Service name for SIGV4 authentication. + Service name for `SIGV4` authentication. + type: string + sessionToken: + description: |- + (String) Session token for SIGV4 authentication. + Session token for `SIGV4` authentication. + type: string + tokenApiAuthentication: + description: |- + client or oauth-rop authentication. Valid values are header, body. + Token API Authentication for `oauth-client` or `oauth-rop` authentication. Valid values are `header`, `body`. + type: string + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of basic authentication to use when performing the test. Defaults to `"web"`. + type: string + username: + description: |- + (String) Username for authentication. + Username for authentication. + type: string + workstation: + description: |- + (String) Workstation for ntlm authentication. + Workstation for `ntlm` authentication. + type: string + type: object requestClientCertificate: - description: '(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) Client - certificate to use when performing the test request. Exactly - one nested block is allowed with the structure below.' - items: - properties: - cert: - description: '(Block List, Min: 1, Max: 1) (see below for - nested schema)' - items: - properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. - type: string - type: object - type: array - key: - description: '(Block List, Min: 1, Max: 1) (see below for - nested schema)' - items: - properties: - filename: - description: (String) File name for the certificate. - File name for the certificate. - type: string - type: object - type: array - type: object - type: array + description: |- + (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) + Client certificate to use when performing the test request. Exactly one nested block is allowed with the structure below. + properties: + cert: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + key: + description: '(Block List, Min: 1, Max: 1) (see below for + nested schema)' + properties: + filename: + description: |- + (String) File name for the certificate. + File name for the certificate. + type: string + type: object + type: object requestDefinition: - description: '(Block List, Max: 1) Required if type = "api". The - synthetics test request. (see below for nested schema) Required - if `type = "api"`. The synthetics test request.' + description: |- + (Block List, Max: 1) Required if type = "api". The synthetics test request. (see below for nested schema) + Required if `type = "api"`. The synthetics test request. + properties: + body: + description: |- + (String) The request body. + The request body. + type: string + bodyType: + description: |- + www-form-urlencoded, graphql, application/octet-stream, multipart/form-data. + Type of the request body. Valid values are `text/plain`, `application/json`, `text/xml`, `text/html`, `application/x-www-form-urlencoded`, `graphql`, `application/octet-stream`, `multipart/form-data`. + type: string + callType: + description: |- + (String) The type of gRPC call to perform. Valid values are healthcheck, unary. + The type of gRPC call to perform. Valid values are `healthcheck`, `unary`. + type: string + certificateDomains: + description: |- + (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. + 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`. + items: + type: string + type: array + dnsServer: + description: |- + (String) DNS server to use for DNS tests (subtype = "dns"). + DNS server to use for DNS tests (`subtype = "dns"`). + type: string + dnsServerPort: + description: |- + (String) DNS server port to use for DNS tests. + DNS server port to use for DNS tests. + type: string + form: + additionalProperties: + type: string + description: |- + data. + Form data to be sent when `body_type` is `multipart/form-data`. + type: object + x-kubernetes-map-type: granular + host: + description: |- + (String) Host name to perform the test with. + Host name to perform the test with. + type: string + httpVersion: + description: |- + (String) HTTP version to use for an HTTP request in an API test or step. Valid values are http1, http2, any. Defaults to "any". + HTTP version to use for an HTTP request in an API test or step. **Deprecated.** Use `http_version` in the `options_list` field instead. + type: string + isMessageBase64Encoded: + description: |- + encoded. + Whether the message is base64-encoded. + type: boolean + message: + description: |- + (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 "". + For UDP and websocket tests, message to send with the request. + type: string + method: + description: |- + (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. + 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`. + type: string + noSavingResponseBody: + description: |- + (Boolean) Determines whether or not to save the response body. + Determines whether or not to save the response body. + type: boolean + numberOfPackets: + description: |- + (Number) Number of pings to use per test for ICMP tests (subtype = "icmp") between 0 and 10. + Number of pings to use per test for ICMP tests (`subtype = "icmp"`) between 0 and 10. + type: number + persistCookies: + description: |- + (Boolean) Persist cookies across redirects. + Persist cookies across redirects. + type: boolean + plainProtoFile: + description: |- + (String) The content of a proto file as a string. + The content of a proto file as a string. + type: string + port: + description: |- + (String) Port to use when performing the test. + Port to use when performing the test. + type: string + protoJsonDescriptor: + description: |- + (String, Deprecated) A protobuf JSON descriptor. Deprecated. Use plain_proto_file instead. + A protobuf JSON descriptor. **Deprecated.** Use `plain_proto_file` instead. + type: string + servername: + description: |- + (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. + 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. + type: string + service: + description: |- + (String) The gRPC service on which you want to perform the gRPC call. + The gRPC service on which you want to perform the gRPC call. + type: string + shouldTrackHops: + description: |- + (Boolean) This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (subtype = "icmp"). + This will turn on a traceroute probe to discover all gateways along the path to the host destination. For ICMP tests (`subtype = "icmp"`). + type: boolean + timeout: + description: |- + (Number) Timeout in seconds for the test. + Timeout in seconds for the test. + type: number + url: + description: |- + (String) The URL to send the request to. + The URL to send the request to. + type: string + type: object + requestFile: + description: |- + (Block List) Files to be used as part of the request in the test. (see below for nested schema) + Files to be used as part of the request in the test. items: properties: - body: - description: (String) The request body. The request body. - type: string - bodyType: - description: www-form-urlencoded, graphql. Type of the request - body. Valid values are `text/plain`, `application/json`, - `text/xml`, `text/html`, `application/x-www-form-urlencoded`, - `graphql`. - type: string - callType: - description: (String) The type of gRPC call to perform. - Valid values are healthcheck, unary. The type of gRPC - call to perform. Valid values are `healthcheck`, `unary`. - type: string - certificateDomains: - description: (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. - 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`. - items: - type: string - type: array - dnsServer: - description: (String) DNS server to use for DNS tests (subtype - = "dns"). DNS server to use for DNS tests (`subtype = - "dns"`). - type: string - dnsServerPort: - description: (Number) DNS server port to use for DNS tests. - DNS server port to use for DNS tests. - type: number - host: - description: (String) Host name to perform the test with. - Host name to perform the test with. - type: string - message: - description: (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 "". For UDP and websocket tests, - message to send with the request. - type: string - method: - description: (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. 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`. - type: string - noSavingResponseBody: - description: (Boolean) Determines whether or not to save - the response body. Determines whether or not to save the - response body. - type: boolean - numberOfPackets: - description: (Number) Number of pings to use per test for - ICMP tests (subtype = "icmp") between 0 and 10. Number - of pings to use per test for ICMP tests (`subtype = "icmp"`) - between 0 and 10. - type: number - persistCookies: - description: (Boolean) Persist cookies across redirects. - Persist cookies across redirects. - type: boolean - plainProtoFile: - description: (String) The content of a proto file as a string. - The content of a proto file as a string. - type: string - port: - description: (Number) Port to use when performing the test. - Port to use when performing the test. - type: number - protoJsonDescriptor: - description: (String, Deprecated) A protobuf JSON descriptor. - Deprecated. Use plain_proto_file instead. A protobuf JSON - descriptor. **Deprecated.** Use `plain_proto_file` instead. + bucketKey: + description: |- + (String) Bucket key of the file. + Bucket key of the file. type: string - servername: - description: (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. 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. + content: + description: |- + (String, Sensitive) Content of the certificate. + Content of the file. type: string - service: - description: (String) The gRPC service on which you want - to perform the gRPC call. The gRPC service on which you - want to perform the gRPC call. - type: string - shouldTrackHops: - description: (Boolean) This will turn on a traceroute probe - to discover all gateways along the path to the host destination. - For ICMP tests (subtype = "icmp"). This will turn on a - traceroute probe to discover all gateways along the path - to the host destination. For ICMP tests (`subtype = "icmp"`). - type: boolean - timeout: - description: (Number) Timeout in seconds for the test. Defaults - to 60. Timeout in seconds for the test. Defaults to `60`. + name: + description: |- + (String) Name of Datadog synthetics test. + Name of the file. + type: string + originalFileName: + description: |- + (String) Original name of the file. + Original name of the file. + type: string + size: + description: |- + (Number) Size of the file. + Size of the file. type: number - url: - description: (String) The URL to send the request to. The - URL to send the request to. + type: + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Type of the file. type: string type: object type: array requestHeaders: additionalProperties: type: string - description: (Map of String) Header name and value map. Header - name and value map. + description: |- + (Map of String) Header name and value map. + Header name and value map. type: object x-kubernetes-map-type: granular requestMetadata: additionalProperties: type: string - description: (Map of String) Metadata to include when performing - the gRPC test. Metadata to include when performing the gRPC - test. + description: |- + (Map of String) Metadata to include when performing the gRPC request. + Metadata to include when performing the gRPC request. type: object x-kubernetes-map-type: granular requestProxy: - description: '(Block List, Max: 1) The proxy to perform the test. - (see below for nested schema) The proxy to perform the test.' - items: - properties: - headers: - additionalProperties: - type: string - description: (Map of String) Header name and value map. - Header name and value map. - type: object - x-kubernetes-map-type: granular - url: - description: (String) The URL to send the request to. URL - of the proxy to perform the test. + description: |- + (Block List, Max: 1) The proxy to perform the test. (see below for nested schema) + The proxy to perform the test. + properties: + headers: + additionalProperties: type: string - type: object - type: array + description: |- + (Map of String) Header name and value map. + Header name and value map. + type: object + x-kubernetes-map-type: granular + url: + description: |- + (String) The URL to send the request to. + URL of the proxy to perform the test. + type: string + type: object requestQuery: additionalProperties: type: string - description: (Map of String) Query arguments name and value map. + description: |- + (Map of String) Query arguments name and value map. Query arguments name and value map. type: object x-kubernetes-map-type: granular setCookie: - description: Cookie syntax. 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: |- + Cookie syntax. + 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. type: string status: - description: (String) Define whether you want to start (live) - or pause (paused) a Synthetic test. Valid values are live, paused. - Define whether you want to start (`live`) or pause (`paused`) - a Synthetic test. Valid values are `live`, `paused`. + description: |- + (String) Define whether you want to start (live) or pause (paused) a Synthetic test. Valid values are live, paused. + Define whether you want to start (`live`) or pause (`paused`) a Synthetic test. Valid values are `live`, `paused`. type: string subtype: - description: (String) The subtype of the Synthetic API test. Defaults - to http. Valid values are http, ssl, tcp, dns, multi, icmp, - udp, websocket, grpc. The subtype of the Synthetic API test. - Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, - `multi`, `icmp`, `udp`, `websocket`, `grpc`. + description: |- + (String) The subtype of the Synthetic API test. Defaults to http. Valid values are http, ssl, tcp, dns, multi, icmp, udp, websocket, grpc. + The subtype of the Synthetic API test. Defaults to `http`. Valid values are `http`, `ssl`, `tcp`, `dns`, `multi`, `icmp`, `udp`, `websocket`, `grpc`. type: string tags: - description: (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 ([]). 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: |- + (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 ([]). + 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 (`[]`). items: type: string type: array type: - description: (String) Synthetics test type. Valid values are api, - browser. Synthetics test type. Valid values are `api`, `browser`. + description: |- + (String) Synthetics test type. Valid values are api, browser, mobile. + Synthetics test type. Valid values are `api`, `browser`, `mobile`. + type: string + variablesFromScript: + description: |- + (String) Variables defined from JavaScript code for API HTTP tests. + Variables defined from JavaScript code for API HTTP tests. type: string type: object conditions: @@ -4556,14 +6250,23 @@ spec: 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. + 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. + description: |- + A Message containing details about this condition's last transition from + one status to another, if any. type: string + observedGeneration: + description: |- + ObservedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + type: integer reason: description: A Reason for this condition's last transition from one status to another. @@ -4573,8 +6276,9 @@ spec: 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. + 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 @@ -4586,6 +6290,13 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the latest metadata.generation + which resulted in either a ready state, or stalled due to error + it can not recover from without human intervention. + format: int64 + type: integer type: object required: - spec