diff --git a/.apigentools-info b/.apigentools-info index e46b450970627..f131211d59e53 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2025-01-22 15:55:44.650228", - "spec_repo_commit": "7a8ea4b1" + "regenerated": "2025-01-27 21:21:13.845431", + "spec_repo_commit": "aa10e3e1" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2025-01-22 15:55:52.977760", - "spec_repo_commit": "7a8ea4b1" + "regenerated": "2025-01-27 21:21:22.527581", + "spec_repo_commit": "aa10e3e1" } } } \ No newline at end of file diff --git a/.github/workflows/vale_linter.yml b/.github/workflows/vale_linter.yml index eb1a8dfb4dae0..18f37a08f2b23 100644 --- a/.github/workflows/vale_linter.yml +++ b/.github/workflows/vale_linter.yml @@ -43,15 +43,17 @@ jobs: uses: hestonhoffman/changed-lines@v1 with: file_filter: '.md, .html' - + - name: Run vale on changed files + if: steps.changed_lines.outputs.changed_files env: CHANGED_FILES: ${{ steps.changed_lines.outputs.changed_files }} run: | vale "${CHANGED_FILES}" \ --output=local/bin/py/vale/vale_template.tmpl --no-exit > vale_output.log - + - name: Parse Vale output + if: steps.changed_lines.outputs.changed_files env: CHANGED_LINES: ${{ steps.changed_lines.outputs.changed_lines }} run: | diff --git a/.gitignore b/.gitignore index fa5bda30a6955..c30f30194c9b2 100644 --- a/.gitignore +++ b/.gitignore @@ -115,12 +115,17 @@ content/en/continuous_testing/cicd_integrations/azure_devops_extension.md content/en/continuous_testing/cicd_integrations/bitrise_upload.md content/en/continuous_testing/cicd_integrations/bitrise_run.md -# Code Analysis + +# Old code_analysis locations content/en/code_analysis/static_analysis/github_actions.md content/en/code_analysis/software_composition_analysis/github_actions.md content/en/code_analysis/static_analysis/circleci_orbs.md content/en/code_analysis/static_analysis_rules/* -!content/en/code_analysis/static_analysis_rules/_index.md +content/en/code_analysis/static_analysis_rules/_index.md + +# New code_security locations +content/en/security/code_security/static_analysis/static_analysis_rules/* +!content/en/security/code_security/static_analysis/static_analysis_rules/_index.md # Let's keep these so we don't accidentally re-add them to repo content/en/continuous_integration/static_analysis/github_actions.md diff --git a/assets/styles/pages/_global.scss b/assets/styles/pages/_global.scss index b391d10c03029..1b8b85c58f107 100644 --- a/assets/styles/pages/_global.scss +++ b/assets/styles/pages/_global.scss @@ -914,6 +914,12 @@ table, } } +.table-fixed { + @include media-breakpoint-up(xl) { + table-layout: fixed; + } +} + .break-word { table { td { diff --git a/assets/styles/pages/_standard-attributes.scss b/assets/styles/pages/_standard-attributes.scss index 2b685d63b8c01..dbbd8e85c4ab4 100644 --- a/assets/styles/pages/_standard-attributes.scss +++ b/assets/styles/pages/_standard-attributes.scss @@ -37,23 +37,17 @@ @include media-breakpoint-up(xl) { .table-wrapper { overflow-x: unset; - table { - table-layout: fixed; - thead > tr { th:nth-child(1) { width: 8%; } - th:nth-child(2) { width: 14%; } - th:nth-child(3) { width: 30%; } - th:nth-child(4) { width: 8%; } diff --git a/config/_default/config.yaml b/config/_default/config.yaml index 859f849804cbe..861fc2ec981b2 100644 --- a/config/_default/config.yaml +++ b/config/_default/config.yaml @@ -98,6 +98,8 @@ module: lang: en - source: data target: data + - source: assets + target: assets mounts: # default mounts diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index 943e0bcd3e9e2..d2cea03a18f7b 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -2575,6 +2575,66 @@ menu: - ListSecurityFilters unstable: [] order: 18 + - name: Patch a vulnerability-based rule + url: '#patch-a-vulnerability-based-rule' + identifier: security-monitoring-patch-a-vulnerability-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - PatchVulnerabilityNotificationRule + unstable: [] + order: 20 + - name: Get details of a vulnerability-based rule + url: '#get-details-of-a-vulnerability-based-rule' + identifier: security-monitoring-get-details-of-a-vulnerability-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - GetVulnerabilityNotificationRule + unstable: [] + order: 18 + - name: Delete a vulnerability-based rule + url: '#delete-a-vulnerability-based-rule' + identifier: security-monitoring-delete-a-vulnerability-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - DeleteVulnerabilityNotificationRule + unstable: [] + order: 21 + - name: Create a new vulnerability-based rule + url: '#create-a-new-vulnerability-based-rule' + identifier: security-monitoring-create-a-new-vulnerability-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - CreateVulnerabilityNotificationRule + unstable: [] + order: 16 + - name: Get the list of vulnerability-based rules + url: '#get-the-list-of-vulnerability-based-rules' + identifier: security-monitoring-get-the-list-of-vulnerability-based-rules + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - GetVulnerabilityNotificationRules + unstable: [] + order: 15 - name: List vulnerabilities url: '#list-vulnerabilities' identifier: security-monitoring-list-vulnerabilities @@ -2588,6 +2648,66 @@ menu: unstable: - v2 order: 25 + - name: Patch a signal-based rule + url: '#patch-a-signal-based-rule' + identifier: security-monitoring-patch-a-signal-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - PatchSignalNotificationRule + unstable: [] + order: 20 + - name: Get details of a signal-based rule + url: '#get-details-of-a-signal-based-rule' + identifier: security-monitoring-get-details-of-a-signal-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - GetSignalNotificationRule + unstable: [] + order: 18 + - name: Delete a signal-based rule + url: '#delete-a-signal-based-rule' + identifier: security-monitoring-delete-a-signal-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - DeleteSignalNotificationRule + unstable: [] + order: 21 + - name: Create a new signal-based rule + url: '#create-a-new-signal-based-rule' + identifier: security-monitoring-create-a-new-signal-based-rule + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - CreateSignalNotificationRule + unstable: [] + order: 16 + - name: Get the list of signal-based rules + url: '#get-the-list-of-signal-based-rules' + identifier: security-monitoring-get-the-list-of-signal-based-rules + parent: security-monitoring + generated: true + params: + versions: + - v2 + operationids: + - GetSignalNotificationRules + unstable: [] + order: 15 - name: Get SBOM url: '#get-sbom' identifier: security-monitoring-get-sbom @@ -3706,8 +3826,7 @@ menu: - v2 operationids: - GetBillingDimensionMapping - unstable: - - v2 + unstable: [] order: 1 - name: Get hourly usage for application security url: '#get-hourly-usage-for-application-security' @@ -4621,6 +4740,114 @@ menu: - ListAwsScanOptions unstable: [] order: 3 + - name: App Builder + url: /api/latest/app-builder/ + identifier: app-builder + generated: true + - name: Publish App + url: '#publish-app' + identifier: app-builder-publish-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - PublishApp + unstable: + - v2 + order: 7 + - name: Unpublish App + url: '#unpublish-app' + identifier: app-builder-unpublish-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UnpublishApp + unstable: + - v2 + order: 8 + - name: Update App + url: '#update-app' + identifier: app-builder-update-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - UpdateApp + unstable: + - v2 + order: 5 + - name: Get App + url: '#get-app' + identifier: app-builder-get-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - GetApp + unstable: + - v2 + order: 4 + - name: Delete App + url: '#delete-app' + identifier: app-builder-delete-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - DeleteApp + unstable: + - v2 + order: 6 + - name: Create App + url: '#create-app' + identifier: app-builder-create-app + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - CreateApp + unstable: + - v2 + order: 2 + - name: List Apps + url: '#list-apps' + identifier: app-builder-list-apps + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - ListApps + unstable: + - v2 + order: 1 + - name: Delete Multiple Apps + url: '#delete-multiple-apps' + identifier: app-builder-delete-multiple-apps + parent: app-builder + generated: true + params: + versions: + - v2 + operationids: + - DeleteApps + unstable: + - v2 + order: 3 - name: Audit url: /api/latest/audit/ identifier: audit diff --git a/config/_default/menus/main.en.yaml b/config/_default/menus/main.en.yaml index e2a9783ac11ed..3f24103fbe2b5 100644 --- a/config/_default/menus/main.en.yaml +++ b/config/_default/menus/main.en.yaml @@ -162,12 +162,7 @@ menu: url: getting_started/session_replay/ parent: getting_started weight: 16 - - name: Continuous Testing - identifier: getting_started_continuous_testing - url: getting_started/continuous_testing/ - parent: getting_started - weight: 17 - - name: Synthetic Monitoring + - name: Synthetic Monitoring and Testing identifier: getting_started_synthetics url: getting_started/synthetics/ parent: getting_started @@ -182,11 +177,21 @@ menu: url: getting_started/synthetics/browser_test parent: getting_started_synthetics weight: 1802 + - name: Mobile App Tests + identifier: getting_started_mobile_app + url: getting_started/synthetics/mobile_app_testing + parent: getting_started_synthetics + weight: 1803 + - name: Continuous Testing + identifier: getting_started_continuous_testing + url: getting_started/continuous_testing/ + parent: getting_started_synthetics + weight: 1804 - name: Private Locations identifier: getting_started_private_location url: getting_started/synthetics/private_location parent: getting_started_synthetics - weight: 1803 + weight: 1805 - name: Incident Management identifier: getting_started_incident_management url: getting_started/incident_management/ @@ -212,36 +217,36 @@ menu: url: getting_started/application_security parent: getting_started weight: 23 - - name: Software Composition Analysis - identifier: getting_started_software_composition_analysis - url: getting_started/application_security/software_composition_analysis - parent: getting_started_application_security - weight: 2301 - name: Workflow Automation identifier: getting_started_workflow_automation url: getting_started/workflow_automation/ parent: getting_started weight: 24 + - name: Software Delivery + identifier: getting_started_software_delivery + url: getting_started/software_delivery/ + parent: getting_started + weight: 25 - name: CI Visibility identifier: getting_started_ci_visibility url: getting_started/ci_visibility/ - parent: getting_started - weight: 25 - - name: Test Visibility - identifier: getting_started_test_visibility - url: getting_started/test_visibility/ - parent: getting_started - weight: 26 + parent: getting_started_software_delivery + weight: 2501 + - name: Test Optimization + identifier: getting_started_test_optimization + url: getting_started/test_optimization/ + parent: getting_started_software_delivery + weight: 2502 - name: Test Impact Analysis identifier: getting_started_test_impact_analysis url: getting_started/test_impact_analysis/ + parent: getting_started_software_delivery + weight: 2503 + - name: Code Security + identifier: getting_started_code_security + url: getting_started/code_security/ parent: getting_started - weight: 27 - - name: Code Analysis - identifier: getting_started_code_analysis - url: getting_started/code_analysis/ - parent: getting_started - weight: 28 + weight: 26 - name: Learning Center identifier: getting_started_learning_center url: getting_started/learning_center/ @@ -2091,36 +2096,41 @@ menu: parent: error_tracking identifier: error_tracking_states weight: 2 + - name: Suspected Causes + url: error_tracking/suspected_causes + parent: error_tracking + identifier: error_tracking_suspected_causes + weight: 3 - name: Regression Detection url: error_tracking/regression_detection parent: error_tracking identifier: error_tracking_regression_detection - weight: 3 + weight: 4 - name: Default Grouping url: error_tracking/default_grouping parent: error_tracking identifier: error_tracking_default_grouping - weight: 4 + weight: 5 - name: Monitors url: error_tracking/monitors parent: error_tracking identifier: error_tracking_monitors - weight: 5 + weight: 6 - name: Custom Grouping url: error_tracking/custom_grouping parent: error_tracking identifier: error_tracking_custom_grouping - weight: 6 + weight: 7 - name: Identify Suspect Commits url: error_tracking/suspect_commits parent: error_tracking identifier: error_tracking_suspect_commits - weight: 7 + weight: 8 - name: Track Browser and Mobile Errors url: error_tracking/frontend parent: error_tracking identifier: error_tracking_frontend - weight: 8 + weight: 9 - name: Browser Error Tracking url: error_tracking/frontend/browser parent: error_tracking_frontend @@ -2150,7 +2160,7 @@ menu: url: error_tracking/backend parent: error_tracking identifier: error_tracking_backend - weight: 9 + weight: 10 - name: Exception Replay url: error_tracking/backend/exception_replay parent: error_tracking_backend @@ -2160,12 +2170,12 @@ menu: url: error_tracking/apm parent: error_tracking_backend identifier: error_tracking_apm - weight: 102 + weight: 103 - name: Logs url: error_tracking/backend/logs parent: error_tracking_backend identifier: error_tracking_be_logs - weight: 103 + weight: 104 - name: Manage Data Collection url: error_tracking/manage_data_collection parent: error_tracking @@ -2553,21 +2563,11 @@ menu: parent: workflows_actions identifier: workflows_data_transformation weight: 503 - - name: HTTP Requests - url: service_management/workflows/actions/http/ - parent: workflows_actions - identifier: workflows_http - weight: 504 - name: Save and Reuse Actions url: service_management/workflows/saved_actions/ parent: workflows identifier: workflows_saved_actions weight: 6 - - name: Connections - url: service_management/workflows/connections/ - parent: workflows - identifier: workflows_connections - weight: 7 - name: Test and Debug url: service_management/workflows/test_and_debug/ parent: workflows @@ -2599,16 +2599,6 @@ menu: parent: app_builder identifier: app_builder_access weight: 2 - - name: Connections - url: service_management/app_builder/connections/ - parent: app_builder - identifier: app_builder_connections - weight: 3 - - name: HTTP Request - url: service_management/app_builder/connections/http_request/ - parent: app_builder_connections - identifier: app_builder_http_request - weight: 301 - name: Queries url: service_management/app_builder/queries/ parent: app_builder @@ -2661,21 +2651,31 @@ menu: parent: actions_heading identifier: action_catalog weight: 40000 + - name: Connections + url: actions/connections/ + parent: action_catalog + identifier: actions_connections + weight: 1 + - name: HTTP Request + url: actions/connections/http/ + parent: actions_connections + identifier: actions_http + weight: 101 - name: Private Actions url: actions/private_actions/ parent: action_catalog identifier: private_actions - weight: 1 + weight: 2 - name: Use Private Actions url: actions/private_actions/use_private_actions/ parent: private_actions identifier: use_private_actions - weight: 101 + weight: 201 - name: Private Action Credentials url: actions/private_actions/private_action_credentials/ parent: private_actions identifier: private_actions_creds - weight: 102 + weight: 202 - name: Universal Service Monitoring url: universal_service_monitoring/ pre: usm @@ -3115,7 +3115,7 @@ menu: parent: ndm_setup identifier: ndm_snmptraps weight: 30004 - - name: SD-WAN + - name: SD-WAN url: network_monitoring/devices/sd-wan parent: ndm_setup identifier: ndm_sd-wan @@ -4539,82 +4539,6 @@ menu: parent: tests identifier: tests_troubleshooting weight: 15 - - name: Code Analysis - url: code_analysis/ - pre: ci - parent: software_delivery_heading - identifier: code_analysis - weight: 40000 - - name: Static Analysis (SAST) - url: code_analysis/static_analysis - parent: code_analysis - identifier: code_analysis_static_analysis - weight: 1 - - name: Setup - url: code_analysis/static_analysis/setup - parent: code_analysis_static_analysis - identifier: code_analysis_static_analysis_setup - weight: 101 - - name: CircleCI Orbs - url: code_analysis/static_analysis/circleci_orbs - parent: code_analysis_static_analysis - identifier: code_analysis_static_analysis_circleci_orbs - weight: 102 - - name: GitHub Actions - url: code_analysis/static_analysis/github_actions - parent: code_analysis_static_analysis - identifier: code_analysis_static_analysis_github_actions - weight: 103 - - name: Generic CI Providers - url: code_analysis/static_analysis/generic_ci_providers - parent: code_analysis_static_analysis - identifier: code_analysis_static_analysis_other_providers - weight: 104 - - name: Software Composition Analysis (SCA) - url: code_analysis/software_composition_analysis - parent: code_analysis - identifier: code_analysis_software_composition_analysis - weight: 2 - - name: Setup - url: code_analysis/software_composition_analysis/setup - parent: code_analysis_software_composition_analysis - identifier: code_analysis_software_composition_analysis_setup - weight: 201 - - name: GitHub Actions - url: code_analysis/software_composition_analysis/github_actions - parent: code_analysis_software_composition_analysis - identifier: code_analysis_software_composition_analysis_github_actions - weight: 202 - - name: Generic CI Providers - url: code_analysis/software_composition_analysis/generic_ci_providers - parent: code_analysis_software_composition_analysis - identifier: code_analysis_software_composition_analysis_other_providers - weight: 203 - - name: Static Analysis (SAST) Rules - url: code_analysis/static_analysis_rules - parent: code_analysis - identifier: code_analysis_static_analysis_rules - weight: 3 - - name: GitHub Pull Requests - url: code_analysis/github_pull_requests - parent: code_analysis - identifier: code_analysis_github_prs - weight: 4 - - name: IDE Plugins - url: code_analysis/ide_plugins - parent: code_analysis - identifier: code_analysis_ide_plugins - weight: 5 - - name: Git Hooks - url: code_analysis/git_hooks - parent: code_analysis - identifier: code_analysis_git_hooks - weight: 6 - - name: Troubleshooting - url: code_analysis/troubleshooting - parent: code_analysis - identifier: code_analysis_troubleshooting - weight: 7 - name: Quality Gates url: quality_gates/ pre: ci @@ -6044,36 +5968,6 @@ menu: parent: application_security identifier: appsec_howitworks weight: 3 - - name: Software Composition Analysis - url: security/application_security/software_composition_analysis/ - parent: application_security - identifier: application_security_software_composition_analysis - weight: 5 - - name: Setup - url: security/application_security/software_composition_analysis/setup/ - parent: application_security_software_composition_analysis - identifier: application_security_software_composition_analysis_setup - weight: 1 - - name: Library Compatibility - url: security/application_security/software_composition_analysis/setup/compatibility/ - parent: application_security_software_composition_analysis_setup - identifier: appsec_compat_sca - weight: 2 - - name: Code Security - url: security/application_security/code_security/ - parent: application_security - identifier: application_security_code_security - weight: 6 - - name: Setup - url: security/application_security/code_security/setup/ - parent: application_security_code_security - identifier: application_security_code_security_setup - weight: 1 - - name: Library Compatibility - url: security/application_security/code_security/setup/compatibility/ - parent: application_security_code_security_setup - identifier: appsec_compat_code_security - weight: 2 - name: Threat Management url: security/application_security/threats/ parent: application_security @@ -6154,6 +6048,16 @@ menu: parent: appsec_threats identifier: threats_user_info weight: 722 + - name: Attacker Fingerprint + url: security/application_security/threats/attacker_fingerprint/ + parent: appsec_threats + identifier: threats_attacker_fingerprint + weight: 723 + - name: Attacker Clustering + url: security/application_security/threats/attacker_clustering/ + parent: appsec_threats + identifier: threats_attacker_clustering + weight: 724 - name: Application Security for Serverless url: security/application_security/serverless/ parent: application_security @@ -6179,6 +6083,102 @@ menu: parent: application_security identifier: appsec_troubleshooting weight: 11 + - name: Code Security + identifier: code_security + url: /security/code_security/ + parent: security_platform_heading + pre: security-code-security + weight: 50000 + - name: Static Code Analysis (SAST) + identifier: sec_static_analysis + url: /security/code_security/static_analysis/ + parent: code_security + weight: 1 + - name: Setup + identifier: sec_static_analysis_setup + url: /security/code_security/static_analysis/setup/ + parent: sec_static_analysis + weight: 1 + - name: GitHub Actions + identifier: sec_static_analysis_github_actions + url: /security/code_security/static_analysis/github_actions/ + parent: sec_static_analysis + weight: 2 + - name: CircleCI Orbs + identifier: sec_static_analysis_circleci_orbs + url: /security/code_security/static_analysis/circleci_orbs/ + parent: sec_static_analysis + weight: 3 + - name: Generic CI Providers + identifier: sec_static_analysis_generic_ci_providers + url: /security/code_security/static_analysis/generic_ci_providers/ + parent: sec_static_analysis + weight: 4 + - name: Static Code Analysis (SAST) rules + identifier: sec_static_analysis_rules + url: /security/code_security/static_analysis/static_analysis_rules/ + parent: sec_static_analysis + weight: 5 + - name: Software Composition Analysis + identifier: software_composition_analysis + url: /security/code_security/software_composition_analysis/ + parent: code_security + weight: 2 + - name: Static Setup + identifier: sca_setup_static + url: /security/code_security/software_composition_analysis/setup_static/ + parent: software_composition_analysis + weight: 1 + - name: Runtime Setup + identifier: sca_setup_runtime + url: /security/code_security/software_composition_analysis/setup_runtime/ + parent: software_composition_analysis + weight: 2 + - name: Library Compatibility + identifier: sca_setup_runtime_compatibility + url: /security/code_security/software_composition_analysis/setup_runtime/compatibility/ + parent: sca_setup_runtime + weight: 1 + - name: Runtime Code Analysis (IAST) + identifier: sec_iast + url: /security/code_security/iast/ + parent: code_security + weight: 3 + - name: Setup + identifier: sec_iast_setup + url: /security/code_security/iast/setup/ + parent: sec_iast + weight: 1 + - name: Dev tool integrations + identifier: dev_tool_int + url: /security/code_security/dev_tool_int/ + parent: code_security + weight: 4 + - name: GitHub Pull Requests + identifier: dev_tool_int_github_pull_requests + url: /security/code_security/dev_tool_int/github_pull_requests/ + parent: dev_tool_int + weight: 1 + - name: IDE Plugins + identifier: dev_tool_int_ide_plugins + url: /security/code_security/dev_tool_int/ide_plugins/ + parent: dev_tool_int + weight: 2 + - name: Git Hooks + identifier: dev_tool_int_git_hooks + url: /security/code_security/dev_tool_int/git_hooks/ + parent: dev_tool_int + weight: 3 + - name: Troubleshooting + identifier: sec_code_sec_tshoot + url: /security/code_security/troubleshooting/ + parent: code_security + weight: 5 + - name: Guides + identifier: code_security_guides + url: /security/code_security/guides/ + parent: code_security + weight: 6 - name: Synthetic Testing and Monitoring url: synthetics/ pre: synthetics diff --git a/content/en/account_management/audit_trail/forwarding_audit_events.md b/content/en/account_management/audit_trail/forwarding_audit_events.md index 6606d36920258..54a878a29b868 100644 --- a/content/en/account_management/audit_trail/forwarding_audit_events.md +++ b/content/en/account_management/audit_trail/forwarding_audit_events.md @@ -78,6 +78,20 @@ Audit Event Forwarding allows you to send audit events from Datadog to custom de 8. In the **Configure Authentication** section, enter the username and password for your Elasticsearch account. 9. Click **Save**. +{{% /tab %}} +{{% tab "Microsoft Sentinel" %}} + +
Log forwarding to Microsoft Sentinel is in Preview. To access this feature, register here.
+ +6. Enter a name for the destination. +7. Authentication for the Microsoft Sentinel Forwarder requires configuring an App Registration through the Datadog Azure Integration. +8. In the **Configure Destination** section, enter the following details: + | Setting | Description | Example | +|---------------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| +| **Logs Ingestion Endpoint** | Enter the endpoint on the Data Collection Endpoint (DCE) where logs are sent. This is labeled "Logs Ingestion" on the DCE Overview page. | `https://my-dce-5kyl.eastus-1.ingest.monitor.azure.com` | +| **Immutable ID** | Specify the immutable ID of the Data Collection Rule (DCR) where logging routes are defined, as found on the DCR Overview page as "Immutable Id". **Note**: Ensure the Monitoring Metrics Publisher role is assigned in the DCR IAM settings. | `dcr-000a00a000a00000a000000aa000a0aa` | +| **Stream Declaration Name**| Provide the name of the target Stream Declaration found in the Resource JSON of the DCR under `streamDeclarations`. | `Custom-MyTable` | + {{% /tab %}} {{< /tabs >}} diff --git a/content/en/account_management/billing/custom_metrics.md b/content/en/account_management/billing/custom_metrics.md index 8e4c3463580df..eeb8a41779e06 100644 --- a/content/en/account_management/billing/custom_metrics.md +++ b/content/en/account_management/billing/custom_metrics.md @@ -176,7 +176,7 @@ Custom metrics volumes can be impacted by configuring tags and aggregations usin **Note: Only configured metrics contribute to your Ingested custom metrics volume.** If a metric is not configured with Metrics without Limits™, you're only charged for its indexed custom metrics volume. #### When are you charged for ingested vs indexed custom metrics? -For metrics not configured with Metrics without Limits™, you pay for for indexed custom metrics. +For metrics not configured with Metrics without Limits™, you pay for indexed custom metrics. | | Indexed Custom Metrics
(based on monthly average number of Custom Metrics per hour) | |--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------| @@ -258,7 +258,7 @@ Custom metrics volumes can be impacted by configuring tags and aggregations usin **Note: Only configured metrics contribute to your Ingested custom metrics volume.** If a metric is not configured with Metrics without Limits™, you're only charged for its indexed custom metrics volume. #### When are you charged for ingested vs indexed custom metrics? -For metrics not configured with Metrics without Limits™, you pay for for indexed custom metrics. +For metrics not configured with Metrics without Limits™, you pay for indexed custom metrics. | | Indexed Custom Metrics
(based on monthly average number of Custom Metrics per hour) | |--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------| diff --git a/content/en/account_management/scim/_index.md b/content/en/account_management/scim/_index.md index 01065291b4aeb..66f71eb860c21 100644 --- a/content/en/account_management/scim/_index.md +++ b/content/en/account_management/scim/_index.md @@ -50,7 +50,7 @@ To avoid losing access to your data, Datadog strongly recommends that you create ## Email verification -Creating a new user with SCIM triggers an email to the user. For first time access, you are required to log in through the the invite link shared by email. The link is active for 2 days. If it expires, go to the [user settings page][7] and select a user to resend an invite link. +Creating a new user with SCIM triggers an email to the user. For first time access, you are required to log in through the invite link shared by email. The link is active for 2 days. If it expires, go to the [user settings page][7] and select a user to resend an invite link. ## Further Reading diff --git a/content/en/service_management/workflows/connections.md b/content/en/actions/connections/_index.md similarity index 70% rename from content/en/service_management/workflows/connections.md rename to content/en/actions/connections/_index.md index b359a737f6c3c..fd5d4074e64f8 100644 --- a/content/en/service_management/workflows/connections.md +++ b/content/en/actions/connections/_index.md @@ -1,31 +1,35 @@ --- title: Connections -description: Workflow connections +description: Connections for actions further_reading: - link: "/getting_started/workflow_automation/" tag: "Documentation" text: "Getting Started with Workflow Automation" -algolia: - tags: ['workflow', 'workflows', 'workflow automation'] +- link: "/service_management/app_builder/" + tag: "Documentation" + text: "App Builder documentation" aliases: - /workflows/connections - /workflows/setup +- /service_management/workflows/connections +- /service_management/app_builder/connections disable_toc: false --- {{< site-region region="gov" >}} -
Workflow Automation is not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
+
Workflow Automation and App Builder are not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
{{< /site-region >}} -Because workflow actions connect with external software systems, you may need to authenticate your Datadog account to the corresponding integration. A workflow can run successfully only if every workflow action that requires authentication can verify the identity of your Datadog account. When granting permissions to Datadog, ensure that you're following security best practice and only granting the permissions necessary for a workflow to run. +Because actions connect with external software systems, you may need to authenticate your Datadog account to the corresponding integration. An app or workflow can run successfully only if every action that requires authentication can verify the identity of your Datadog account. When granting permissions to Datadog, ensure that you're following security best practice and only granting the permissions necessary for an app or workflow to run. -Workflow actions can be authenticated in two ways: +Actions can be authenticated in two ways: - Credentials and permissions configured in the integration tile - Connection credentials ## Integration tile credentials -Credentials and account authentication that you set up in the following Datadog integration tiles automatically propagate to the corresponding actions in Workflow Automation: +Credentials and account authentication that you set up in the following Datadog integration tiles automatically propagate to the corresponding actions in workflows or apps: + - GitHub - Jira - Microsoft Teams @@ -40,7 +44,7 @@ If the integration you need to set up is not listed above, set up connection cre ## Connection credentials -Workflow connections extend your installed integrations to give you control over workflow step authentication. Use connection credentials to authenticate a [generic action][8] or any action for which the integration tile does not offer authentication. For a list of integrations that use the integration tile for authentication, see the [Integration tile credentials](#integration-tile-credentials) section. Connection credentials are only available for use within the Workflow Automation and App Builder products. +Connections extend your installed integrations to give you control over workflow step authentication. Use connection credentials to authenticate a [generic action][8] or any action for which the integration tile does not offer authentication. For a list of integrations that use the integration tile for authentication, see the [Integration tile credentials](#integration-tile-credentials) section. Connection credentials are only available for use within the Workflow Automation and App Builder products. Connections support the following example use cases: - The integration you need is not available as a built-in connection. @@ -52,13 +56,13 @@ Connections support the following example use cases: Before you create a connection, think about the permissions needed to fulfill the required task and grant the connection only the necessary permissions to fulfill that task. In addition, the connection should be restricted to only the people who need to use it. -Where possible, use granular connections for different workflows. For example, if you have a workflow that writes to an Amazon S3 bucket, and a workflow that terminates Amazon EC2 instances, do not use the same connection for both workflows. Instead, create two respective connections, each corresponding to an IAM role with limited scope. +Where possible, use granular connections for different workflows or apps. For example, if you have a workflow that writes to an Amazon S3 bucket, and an app that terminates Amazon EC2 instances, do not use the same connection for both. Instead, create two respective connections, each corresponding to an IAM role with limited scope. ## Work with connections ### View connections -1. From the [Workflow Automation page][2], click **Connections** in the upper right. The [connections list][3] opens. +1. From the [Workflow Automation page][2] or the [App Builder page][14], click the **Connections** tab. The connections list opens. 1. Click on a single line to view connection details. ### Create a connection @@ -68,27 +72,47 @@ Establishing a connection requires the following information: - How to authenticate (for example, API key, username/password, oauth) To create a connection: -1. Navigate to the [connections list][3]. +1. From the [Workflow Automation page][2] or the [App Builder page][14], click the **Connections** tab. The connections list opens. 1. Click the **New Connection** button in the upper right. The **New Connection** dialog box appears. 1. Click on an icon to choose an integration schema. 1. Fill in the appropriate fields.
If you want to add the connection to a connection group in the future, add one or more [Identifier Tags](#connection-identifier-tags).
1. Click **Create**. -Alternatively, add a connection from the workflow page: -1. Navigate to the [Workflow Automation list][9]. +Alternatively, add a connection from a workflow or app page: + + +{{< tabs >}} +{{% tab "Workflow Automation" %}} +1. Navigate to the [Workflow Automation list][1]. 1. Select the workflow containing the action to which you need to add a credential. The workflow builder appears. 1. In the workflow visualization, click the action to which you need to add a credential. The right side panel populates with the action details. 1. Under the **Configure** tab, look for the **Connection** dropdown and click the **+** icon. 1. In the **New Connection** dialog box, name the connection and enter the required authentication details. 1. Click **Save**. +[1]: https://app.datadoghq.com/workflow +{{% /tab %}} + +{{% tab "App Builder" %}} +1. Navigate to the [App Builder app list][1]. +1. Select the app containing the action you need to add a credential to. The app canvas appears. +1. Click **Edit** in the upper right. +1. Under **Data** on the left-hand side, click the action to which you need to add a credential. The left side panel populates with the action details. +1. Look for the **Connection** dropdown and click the **+** icon. +1. In the **New Connection** dialog box, name the connection and enter the required authentication details. +1. Click **Save**. + +[1]: https://app.datadoghq.com/app-builder +{{% /tab %}} +{{< /tabs >}} + The example below shows the **New Connection** dialog box for the OpenAI connection. Each connection requires different authentication information. The OpenAI connection requires a valid Connection Name and API Token. {{< img src="service_management/new-connection-2.png" alt="The New Connection dialog box for the OpenAI connection" >}} ### Edit a connection -1. Navigate to the [connections list][3]. +1. From the [Workflow Automation page][2] or the [App Builder page][14], click the **Connections** tab. The connections list opens. 1. Hover over the connection you would like to edit. **Edit**, **Permissions**, and **Delete** icons appear on the right. 1. Click the pencil (**Edit**) icon. A dialog box appears. 1. Update the fields you would like to change. @@ -103,11 +127,11 @@ The example below shows the **New Connection** dialog box for the OpenAI connect ### Restrict connection use -To learn how to restrict connection use, see [Access and Authentication][4]. +To learn how to restrict connection use, see Access and Authentication for [Workflow Automation][4] or [App Builder][15]. ## HTTP connection -To connect to an arbitrary service, use the HTTP connection type. For authentication options and setup instructions, see [HTTP action][10]. +To connect to an arbitrary service, use the HTTP connection type. For authentication options and setup instructions, see the [HTTP action][10]. ## Connection identifier tags @@ -123,6 +147,8 @@ You can add identifier tags to connections. The tagging rules for connections ar ## Connection groups +
Note: Connection groups are available in Workflow Automation. They are not available in App Builder.
+ You can create groups of connections so that your workflows can authenticate into the correct account or accounts based on the given inputs. Connections can be grouped together only if they share the same integration (for example, you cannot group GCP and AWS connections within the same group). You define the members of a connection group using a connection's _Identifier Tags_. For example, you can create a connection group consisting of AWS accounts that have the `account_id` tag. @@ -178,7 +204,7 @@ To delete a connection group: {{< partial name="whats-next/whats-next.html" >}} -
Do you have questions or feedback? Join the **#workflows** channel on the [Datadog Community Slack][11]. +
Do you have questions or feedback? Join the **#workflows** or **#app-builder** channel on the [Datadog Community Slack][11]. [2]: https://app.datadoghq.com/workflow [3]: https://app.datadoghq.com/workflow/connections @@ -186,7 +212,9 @@ To delete a connection group: [6]: /integrations/ [8]: /service_management/workflows/actions/ [9]: https://app.datadoghq.com/workflow -[10]: /service_management/workflows/actions/http/ +[10]: /actions/connections/http/ [11]: https://datadoghq.slack.com/ [12]: /service_management/workflows/access/#restrict-access-on-a-specific-connection [13]: /getting_started/tagging/ +[14]: https://app.datadoghq.com/app-builder/ +[15]: /service_management/app_builder/auth/ \ No newline at end of file diff --git a/content/en/service_management/workflows/actions/http.md b/content/en/actions/connections/http.md similarity index 90% rename from content/en/service_management/workflows/actions/http.md rename to content/en/actions/connections/http.md index 01a7c250d109e..28c6cd87f7d97 100644 --- a/content/en/service_management/workflows/actions/http.md +++ b/content/en/actions/connections/http.md @@ -2,22 +2,38 @@ title: HTTP Requests disable_toc: false further_reading: -- link: "/service_management/workflows/connections/" +- link: "/actions/connections/" tag: "Documentation" - text: "Find out more about connection credentials for Workflow Automation" + text: "Find out more about connection credentials" +aliases: +- /service_management/app_builder/http_request/ +- /service_management/workflows/connections/http/ +- /service_management/app_builder/connections/http_request/ --- {{< site-region region="gov" >}} -
Workflow Automation is not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
+
Workflow Automation and App Builder are not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
{{< /site-region >}} Use the **Make request** action to make a custom request to an HTTP endpoint. You can control the request method and its contents, how it is authenticated and processed, and how it should respond to scenarios like expired certificates or redirects. If you need to add Datadog IP address ranges to your allowlist so that the HTTP action works as expected, use the IPs listed in the `webhooks` object. See the [IP Ranges API][1] for details. To add an HTTP Request: + +{{< tabs >}} +{{% tab "Workflow Automation" %}} - In a new workflow, click **Add step** and search for `Make request`. Select the **Make request** action to add it to your workflow. - In an existing workflow, click **+** and search for `Make request`. Select the **Make request** action to add it to your workflow. Specify the request method and any necessary [authentication][2]. Read the sections below for further information about the available configuration options. Optionally, the request can wait on conditions that you specify in the **Conditional wait** section, and retry at a given interval if the condition is not satisfied. +{{% /tab %}} + +{{% tab "App Builder" %}} +1. In your app, under **Data**, click **+ New** and select **Query** +1. Search for `HTTP`, then select the **Make request** action to add it to your app. + +Specify the request method and any necessary [authentication][7]. Read the sections below for further information about the available configuration options. +{{% /tab %}} +{{< /tabs >}} ## Authentication @@ -168,7 +184,7 @@ To configure a private HTTP request: {{< partial name="whats-next/whats-next.html" >}} -
Do you have questions or feedback? Join the **#workflows** channel on the [Datadog Community Slack][4]. +
Do you have questions or feedback? Join the **#workflows** or **#app-builder** channel on the [Datadog Community Slack][4]. [1]: https://docs.datadoghq.com/api/latest/ip-ranges/#list-ip-ranges [2]: /service_management/workflows/access/ @@ -176,3 +192,4 @@ To configure a private HTTP request: [4]: https://datadoghq.slack.com/ [5]: /actions/private_actions [6]: /actions/private_actions/private_action_credentials/?tab=httpsaction#credential-files +[7]: /service_management/app_builder/auth/ \ No newline at end of file diff --git a/content/en/administrators_guide/plan.md b/content/en/administrators_guide/plan.md index 29d4674964fb0..08ba120cc2a6b 100644 --- a/content/en/administrators_guide/plan.md +++ b/content/en/administrators_guide/plan.md @@ -303,7 +303,7 @@ Not every tool suits every job. Evaluate Datadog's product use cases and match t ## Summary -It is important to develop and plan a realistic course for installing Datadog. In this section, you learned about the planning and best practices phase, setting your Datadog footprint up for success. You identified and assembled your knowledge base and team members, developed your installation models, planned optimizations, and compiled a list of best practices for core products. These foundations prepare you for the the next phases of Datadog installation: build and run. +It is important to develop and plan a realistic course for installing Datadog. In this section, you learned about the planning and best practices phase, setting your Datadog footprint up for success. You identified and assembled your knowledge base and team members, developed your installation models, planned optimizations, and compiled a list of best practices for core products. These foundations prepare you for the next phases of Datadog installation: build and run. ## Next Steps diff --git a/content/en/api/latest/app-builder/_index.md b/content/en/api/latest/app-builder/_index.md new file mode 100644 index 0000000000000..dffd4e3fb8dd0 --- /dev/null +++ b/content/en/api/latest/app-builder/_index.md @@ -0,0 +1,3 @@ +--- +title: App Builder +--- diff --git a/content/en/api/v1/logs-pipelines/examples.json b/content/en/api/v1/logs-pipelines/examples.json index d5af9865424d1..e25e72b1f9f9f 100644 --- a/content/en/api/v1/logs-pipelines/examples.json +++ b/content/en/api/v1/logs-pipelines/examples.json @@ -105,6 +105,7 @@ "responses": { "200": { "json": { + "description": "string", "filter": { "query": "source:python" }, @@ -125,9 +126,10 @@ "type": "grok-parser" } ], + "tags": [], "type": "pipeline" }, - "html": "
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

A description of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags associated with the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" }, "403": { "json": { @@ -156,6 +158,7 @@ "responses": { "200": { "json": { + "description": "string", "filter": { "query": "source:python" }, @@ -176,9 +179,10 @@ "type": "grok-parser" } ], + "tags": [], "type": "pipeline" }, - "html": "
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

A description of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags associated with the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" }, "400": { "json": { @@ -219,6 +223,7 @@ ] }, "json": { + "description": "string", "filter": { "query": "source:python" }, @@ -236,9 +241,10 @@ "source": "message", "type": "grok-parser" } - ] + ], + "tags": [] }, - "html": "
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

A description of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags associated with the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" } }, "DeleteLogsPipeline": { @@ -280,6 +286,7 @@ "responses": { "200": { "json": { + "description": "string", "filter": { "query": "source:python" }, @@ -300,9 +307,10 @@ "type": "grok-parser" } ], + "tags": [], "type": "pipeline" }, - "html": "
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

A description of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags associated with the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" }, "400": { "json": { @@ -341,6 +349,7 @@ "responses": { "200": { "json": { + "description": "string", "filter": { "query": "source:python" }, @@ -361,9 +370,10 @@ "type": "grok-parser" } ], + "tags": [], "type": "pipeline" }, - "html": "
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

A description of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags associated with the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" }, "400": { "json": { @@ -404,6 +414,7 @@ ] }, "json": { + "description": "string", "filter": { "query": "source:python" }, @@ -421,9 +432,10 @@ "source": "message", "type": "grok-parser" } - ] + ], + "tags": [] }, - "html": "
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

description

\n
\n

string

\n

A description of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

ID of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the pipeline is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_read_only

\n
\n

boolean

\n

Whether or not the pipeline can be edited.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[ <oneOf>]

\n

Ordered list of processors in this pipeline.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

Create custom grok rules to parse the full message or a specific attribute of your raw event.\nFor more information, see the parsing section.

\n
\n
\n
\n
\n
\n

grok [required]

\n
\n

object

\n

Set of rules for the grok parser.

\n
\n
\n
\n
\n
\n

match_rules [required]

\n
\n

string

\n

List of match rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n

support_rules

\n
\n

string

\n

List of support rules for the grok parser, separated by a new line.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

samples

\n
\n

[string]

\n

List of sample logs to test this grok parser.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Name of the log attribute to parse.

default: message

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs grok parser. \nAllowed enum values: grok-parser

default: grok-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.

\n
    \n
  • timestamp

    \n
  • \n
  • date

    \n
  • \n
  • _timestamp

    \n
  • \n
  • Timestamp

    \n
  • \n
  • eventTime

    \n
  • \n
  • published_date

    \n

    If your logs put their dates in an attribute not in this list,\nuse the log date Remapper Processor to define their date attribute as the official log timestamp.\nThe recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.

    \n
  • \n
\n

Note: If your logs don’t contain any of the default attributes\n and you haven’t defined your own date attribute, Datadog timestamps\n the logs with the date it received them.

\n

If multiple log date remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs date remapper. \nAllowed enum values: date-remapper

default: date-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

Use this Processor if you want to assign some attributes as the official status.

\n

Each incoming status value is mapped as follows.

\n
    \n
  • Integers from 0 to 7 map to the Syslog severity standards
  • \n
  • Strings beginning with emerg or f (case-insensitive) map to emerg (0)
  • \n
  • Strings beginning with a (case-insensitive) map to alert (1)
  • \n
  • Strings beginning with c (case-insensitive) map to critical (2)
  • \n
  • Strings beginning with err (case-insensitive) map to error (3)
  • \n
  • Strings beginning with w (case-insensitive) map to warning (4)
  • \n
  • Strings beginning with n (case-insensitive) map to notice (5)
  • \n
  • Strings beginning with i (case-insensitive) map to info (6)
  • \n
  • Strings beginning with d, trace or verbose (case-insensitive) map to debug (7)
  • \n
  • Strings beginning with o or matching OK or Success (case-insensitive) map to OK
  • \n
  • All others map to info (6)
  • \n
\n

Note: If multiple log status remapper processors can be applied to a given log,\n only the first one (according to the pipelines order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs status remapper. \nAllowed enum values: status-remapper

default: status-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 4

\n
\n

object

\n

Use this processor if you want to assign one or more attributes as the official service.

\n

Note: If multiple service remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs service remapper. \nAllowed enum values: service-remapper

default: service-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 5

\n
\n

object

\n

The message is a key attribute in Datadog.\nIt is displayed in the message column of the Log Explorer and you can do full string search on it.\nUse this Processor to define one or more attributes as the official log message.

\n

Note: If multiple log message remapper processors can be applied to a given log,\nonly the first one (according to the pipeline order) is taken into account.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: msg

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs message remapper. \nAllowed enum values: message-remapper

default: message-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 6

\n
\n

object

\n

The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.\nConstraints on the tag/attribute name are explained in the Tag Best Practice documentation.\nSome additional constraints are applied as : or , are not allowed in the target tag/attribute name.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

override_on_conflict

\n
\n

boolean

\n

Override or not the target element if already set,

\n
\n \n
\n
\n
\n
\n
\n

preserve_source

\n
\n

boolean

\n

Remove or preserve the remapped source element.

\n
\n \n
\n
\n
\n
\n
\n

source_type

\n
\n

string

\n

Defines if the sources are from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Final attribute or tag name to remap the sources to.

\n
\n \n
\n
\n
\n
\n
\n

target_format

\n
\n

enum

\n

If the target_type of the remapper is attribute, try to cast the value to a new specific type.\nIf the cast is not possible, the original type is kept. string, integer, or double are the possible types.\nIf the target_type is tag, this parameter may not be specified. \nAllowed enum values: auto,string,integer,double

\n
\n \n
\n
\n
\n
\n
\n

target_type

\n
\n

string

\n

Defines if the final attribute or tag name is from log attribute or tag.

default: attribute

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs attribute remapper. \nAllowed enum values: attribute-remapper

default: attribute-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 7

\n
\n

object

\n

This processor extracts query parameters and other important parameters from a URL.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

normalize_ending_slashes

\n
\n

boolean

\n

Normalize the ending slashes or not.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.url

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.url_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs URL parser. \nAllowed enum values: url-parser

default: url-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 8

\n
\n

object

\n

The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.\nIt recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_encoded

\n
\n

boolean

\n

Define if the source attribute is URL encoded or not.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: http.useragent

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: http.useragent_details

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs User-Agent parser. \nAllowed enum values: user-agent-parser

default: user-agent-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 9

\n
\n

object

\n

Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)\nto a log matching a provided search query. Use categories to create groups for an analytical view.\nFor example, URL groups, machine groups, environments, and response time buckets.

\n

Notes:

\n
    \n
  • The syntax of the query is the one of Logs Explorer search bar.\nThe query can be done on any log attribute or tag, whether it is a facet or not.\nWildcards can also be used inside your query.
  • \n
  • Once the log has matched one of the Processor queries, it stops.\nMake sure they are properly ordered in case a log could match several queries.
  • \n
  • The names of the categories must be unique.
  • \n
  • Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
  • \n
\n
\n
\n
\n
\n
\n

categories [required]

\n
\n

[object]

\n

Array of filters to match or not a log and their\ncorresponding name to assign a custom value to the log.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Value to assign to the target attribute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the target attribute which value is defined by the matching category.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs category processor. \nAllowed enum values: category-processor

default: category-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 10

\n
\n

object

\n

Use the Arithmetic Processor to add a new attribute (without spaces or special characters\nin the new attribute name) to a log with the result of the provided formula.\nThis enables you to remap different time attributes with different units into a single attribute,\nor to compute operations on attributes within the same log.

\n

The formula can use parentheses and the basic arithmetic operators -, +, *, /.

\n

By default, the calculation is skipped if an attribute is missing.\nSelect “Replace missing attribute by 0” to automatically populate\nmissing attribute values with 0 to ensure that the calculation is done.\nAn attribute is missing if it is not found in the log attributes,\nor if it cannot be converted to a number.

\n

Notes:

\n
    \n
  • The operator - needs to be space split in the formula as it can also be contained in attribute names.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the formula.
  • \n
  • Results are rounded up to the 9th decimal. For example, if the result of the formula is 0.1234567891,\nthe actual value stored for the attribute is 0.123456789.
  • \n
  • If you need to scale a unit of measure,\nsee Scale Filter.
  • \n
\n
\n
\n
\n
\n
\n

expression [required]

\n
\n

string

\n

Arithmetic operation between one or more log attributes.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of expression by 0, false\nskip the operation if an attribute is missing.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the result of the arithmetic operation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs arithmetic processor. \nAllowed enum values: arithmetic-processor

default: arithmetic-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 11

\n
\n

object

\n

Use the string builder processor to add a new attribute (without spaces or special characters)\nto a log with the result of the provided template.\nThis enables aggregation of different attributes or raw strings into a single attribute.

\n

The template is defined by both raw text and blocks with the syntax %{attribute_path}.

\n

Notes:

\n
    \n
  • The processor only accepts attributes with values or an array of values in the blocks.
  • \n
  • If an attribute cannot be used (object or array of object),\nit is replaced by an empty string or the entire operation is skipped depending on your selection.
  • \n
  • If the target attribute already exists, it is overwritten by the result of the template.
  • \n
  • Results of the template cannot exceed 256 characters.
  • \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

is_replace_missing

\n
\n

boolean

\n

If true, it replaces all missing attributes of template by an empty string.\nIf false (default), skips the operation for missing attributes.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

The name of the attribute that contains the result of the template.

\n
\n \n
\n
\n
\n
\n
\n

template [required]

\n
\n

string

\n

A formula with one or more attributes and raw text.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs string builder processor. \nAllowed enum values: string-builder-processor

default: string-builder-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 12

\n
\n

object

\n

Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.\nFor example, first use a high-level filtering such as team and then a second level of filtering based on the\nintegration, service, or any other tag or attribute.

\n

A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.

\n
\n
\n
\n
\n
\n

filter

\n
\n

object

\n

Filter for logs.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The filter query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

processors

\n
\n

[object]

\n

Ordered list of processors in this pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs pipeline processor. \nAllowed enum values: pipeline

default: pipeline

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 13

\n
\n

object

\n

The GeoIP parser takes an IP address attribute and extracts if available\nthe Continent, Country, Subdivision, and City information in the target attribute path.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources [required]

\n
\n

[string]

\n

Array of source attributes.

default: network.client.ip

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the parent attribute that contains all the extracted details from the sources.

default: network.client.geoip

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of GeoIP parser. \nAllowed enum values: geo-ip-parser

default: geo-ip-parser

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 14

\n
\n

object

\n

Use the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in the processors mapping table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

default_lookup

\n
\n

string

\n

Value to set the target attribute if the source value is not found in the list.

\n
\n \n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_table [required]

\n
\n

[string]

\n

Mapping table of values for the source attribute and their associated target attribute values,\nformatted as ["source_key1,target_value1", "source_key2,target_value2"]

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list\nor the default_lookup if not found in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 15

\n
\n

object

\n

Note: Reference Tables are in public beta.\nUse the Lookup Processor to define a mapping between a log attribute\nand a human readable value saved in a Reference Table.\nFor example, you can use the Lookup Processor to map an internal service ID\ninto a human readable service name. Alternatively, you could also use it to check\nif the MAC address that just attempted to connect to the production\nenvironment belongs to your list of stolen machines.

\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

lookup_enrichment_table [required]

\n
\n

string

\n

Name of the Reference Table for the source attribute and their associated target attribute values.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

source [required]

\n
\n

string

\n

Source attribute used to perform the lookup.

\n
\n \n
\n
\n
\n
\n
\n

target [required]

\n
\n

string

\n

Name of the attribute that contains the corresponding value in the mapping list.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs lookup processor. \nAllowed enum values: lookup-processor

default: lookup-processor

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 16

\n
\n

object

\n

There are two ways to improve correlation between application traces and logs.

\n
    \n
  1. Follow the documentation on how to inject a trace ID in the application logs\nand by default log integrations take care of all the rest of the setup.

    \n
  2. \n
  3. Use the Trace remapper processor to define a log attribute as its associated trace ID.

    \n
  4. \n
\n
\n
\n
\n
\n
\n

is_enabled

\n
\n

boolean

\n

Whether or not the processor is enabled.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the processor.

\n
\n \n
\n
\n
\n
\n
\n

sources

\n
\n

[string]

\n

Array of source attributes.

default: dd.trace_id

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of logs trace remapper. \nAllowed enum values: trace-id-remapper

default: trace-id-remapper

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags associated with the pipeline.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Type of pipeline.

\n
\n \n
\n
" } } } \ No newline at end of file diff --git a/content/en/api/v1/monitors/examples.json b/content/en/api/v1/monitors/examples.json index db3aa1a0c1fd3..106d67546052d 100644 --- a/content/en/api/v1/monitors/examples.json +++ b/content/en/api/v1/monitors/examples.json @@ -1382,7 +1382,7 @@ "tags": [], "type": "query alert" }, - "html": "
\n
\n
\n
\n

created

\n
\n

date-time

\n

Timestamp of the monitor creation.

\n
\n \n
\n
\n
\n
\n
\n

creator

\n
\n

object

\n

Object describing the creator of the shared element.

\n
\n
\n
\n
\n
\n

email

\n
\n

string

\n

Email of the creator.

\n
\n \n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

Handle of the creator.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the creator.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

deleted

\n
\n

date-time

\n

Whether or not the monitor is deleted. (Always null)

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

int64

\n

ID of this monitor.

\n
\n \n
\n
\n
\n
\n
\n

message

\n
\n

string

\n

A message to include with notifications for this monitor.

\n
\n \n
\n
\n
\n
\n
\n

modified

\n
\n

date-time

\n

Last timestamp when the monitor was edited.

\n
\n \n
\n
\n
\n
\n
\n

multi

\n
\n

boolean

\n

Whether or not the monitor is broken down on different groups.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The monitor name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

List of options associated with your monitor.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

object

\n

Type of aggregation performed in the monitor query.

\n
\n
\n
\n
\n
\n

group_by

\n
\n

string

\n

Group to break down the monitor on.

\n
\n \n
\n
\n
\n
\n
\n

metric

\n
\n

string

\n

Metric name used in the monitor.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Metric type used in the monitor.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

device_ids

\n
\n

[string]

\n

DEPRECATED: IDs of the device the Synthetics monitor is running on.

\n
\n \n
\n
\n
\n
\n
\n

enable_logs_sample

\n
\n

boolean

\n

Whether or not to send a log sample when the log monitor triggers.

\n
\n \n
\n
\n
\n
\n
\n

enable_samples

\n
\n

boolean

\n

Whether or not to send a list of samples when the monitor triggers. This is only used by CI Test and Pipeline monitors.

\n
\n \n
\n
\n
\n
\n
\n

escalation_message

\n
\n

string

\n

We recommend using the is_renotify,\nblock in the original message instead.\nA message to include with a re-notification. Supports the @username notification we allow elsewhere.\nNot applicable if renotify_interval is None.

\n
\n \n
\n
\n
\n
\n
\n

evaluation_delay

\n
\n

int64

\n

Time (in seconds) to delay evaluation, as a non-negative integer. For example, if the value is set to 300 (5min),\nthe timeframe is set to last_5m and the time is 7:00, the monitor evaluates data from 6:50 to 6:55.\nThis is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor always has data during evaluation.

\n
\n \n
\n
\n
\n
\n
\n

group_retention_duration

\n
\n

string

\n

The time span after which groups with missing data are dropped from the monitor state.\nThe minimum value is one hour, and the maximum value is 72 hours.\nExample values are: "60m", "1h", and "2d".\nThis option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.

\n
\n \n
\n
\n
\n
\n
\n

groupby_simple_monitor

\n
\n

boolean

\n

DEPRECATED: Whether the log alert monitor triggers a single alert or multiple alerts when any group breaches a threshold. Use notify_by instead.

\n
\n \n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

A Boolean indicating whether notifications from this monitor automatically inserts its triggering tags into the title.

\n

Examples

\n
    \n
  • If True, [Triggered on {host:h1}] Monitor Title
  • \n
  • If False, [Triggered] Monitor Title
  • \n

default: true

\n
\n \n
\n
\n
\n
\n
\n

locked

\n
\n

boolean

\n

DEPRECATED: Whether or not the monitor is locked (only editable by creator and admins). Use restricted_roles instead.

\n
\n \n
\n
\n
\n
\n
\n

min_failure_duration

\n
\n

int64

\n

How long the test should be in failure before alerting (integer, number of seconds, max 7200).

\n
\n \n
\n
\n
\n
\n
\n

min_location_failed

\n
\n

int64

\n

The minimum number of locations in failure at the same time during\nat least one moment in the min_failure_duration period (min_location_failed and min_failure_duration\nare part of the advanced alerting rules - integer, >= 1).

default: 1

\n
\n \n
\n
\n
\n
\n
\n

new_group_delay

\n
\n

int64

\n

Time (in seconds) to skip evaluations for new groups.

\n

For example, this option can be used to skip evaluations for new hosts while they initialize.

\n

Must be a non negative integer.

\n
\n \n
\n
\n
\n
\n
\n

new_host_delay

\n
\n

int64

\n

DEPRECATED: Time (in seconds) to allow a host to boot and applications\nto fully start before starting the evaluation of monitor results.\nShould be a non negative integer.

\n

Use new_group_delay instead.

default: 300

\n
\n \n
\n
\n
\n
\n
\n

no_data_timeframe

\n
\n

int64

\n

The number of minutes before a monitor notifies after data stops reporting.\nDatadog recommends at least 2x the monitor timeframe for query alerts or 2 minutes for service checks.\nIf omitted, 2x the evaluation timeframe is used for query alerts, and 24 hours is used for service checks.

\n
\n \n
\n
\n
\n
\n
\n

notification_preset_name

\n
\n

enum

\n

Toggles the display of additional content sent in the monitor notification. \nAllowed enum values: show_all,hide_query,hide_handles,hide_all

default: show_all

\n
\n \n
\n
\n
\n
\n
\n

notify_audit

\n
\n

boolean

\n

A Boolean indicating whether tagged users is notified on changes to this monitor.

\n
\n \n
\n
\n
\n
\n
\n

notify_by

\n
\n

[string]

\n

Controls what granularity a monitor alerts on. Only available for monitors with groupings.\nFor instance, a monitor grouped by cluster, namespace, and pod can be configured to only notify on each\nnew cluster violating the alert conditions by setting notify_by to ["cluster"]. Tags mentioned\nin notify_by must be a subset of the grouping tags in the query.\nFor example, a query grouped by cluster and namespace cannot notify on region.\nSetting notify_by to [*] configures the monitor to notify as a simple-alert.

\n
\n \n
\n
\n
\n
\n
\n

notify_no_data

\n
\n

boolean

\n

A Boolean indicating whether this monitor notifies when data stops reporting. Defaults to false.

\n
\n \n
\n
\n
\n
\n
\n

on_missing_data

\n
\n

enum

\n

Controls how groups or monitors are treated if an evaluation does not return any data points.\nThe default option results in different behavior depending on the monitor query type.\nFor monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions.\nFor monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status.\nThis option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. \nAllowed enum values: default,show_no_data,show_and_notify_no_data,resolve

\n
\n \n
\n
\n
\n
\n
\n

renotify_interval

\n
\n

int64

\n

The number of minutes after the last notification before a monitor re-notifies on the current status.\nIt only re-notifies if it’s not resolved.

\n
\n \n
\n
\n
\n
\n
\n

renotify_occurrences

\n
\n

int64

\n

The number of times re-notification messages should be sent on the current status at the provided re-notification interval.

\n
\n \n
\n
\n
\n
\n
\n

renotify_statuses

\n
\n

[string]

\n

The types of monitor statuses for which re-notification messages are sent.\nDefault: null if renotify_interval is null.\nIf renotify_interval is set, defaults to renotify on Alert and No Data.

\n
\n \n
\n
\n
\n
\n
\n

require_full_window

\n
\n

boolean

\n

A Boolean indicating whether this monitor needs a full window of data before it’s evaluated.\nWe highly recommend you set this to false for sparse metrics,\notherwise some evaluations are skipped. Default is false. This setting only applies to\nmetric monitors.

\n
\n \n
\n
\n
\n
\n
\n

scheduling_options

\n
\n

object

\n

Configuration options for scheduling.

\n
\n
\n
\n
\n
\n

custom_schedule

\n
\n

object

\n

Configuration options for the custom schedule. This feature is in private beta.

\n
\n
\n
\n
\n
\n

recurrences

\n
\n

[object]

\n

Array of custom schedule recurrences.

\n
\n
\n
\n
\n
\n

rrule

\n
\n

string

\n

Defines the recurrence rule (RRULE) for a given schedule.

\n
\n \n
\n
\n
\n
\n
\n

start

\n
\n

string

\n

Defines the start date and time of the recurring schedule.

\n
\n \n
\n
\n
\n
\n
\n

timezone

\n
\n

string

\n

Defines the timezone the schedule runs on.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

evaluation_window

\n
\n

object

\n

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.

\n
\n
\n
\n
\n
\n

day_starts

\n
\n

string

\n

The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in HH:mm format.

\n
\n \n
\n
\n
\n
\n
\n

hour_starts

\n
\n

int32

\n

The minute of the hour at which a one hour cumulative evaluation window starts.

\n
\n \n
\n
\n
\n
\n
\n

month_starts

\n
\n

int32

\n

The day of the month at which a one month cumulative evaluation window starts.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

silenced

\n
\n

object

\n

DEPRECATED: Information about the downtime applied to the monitor. Only shows v1 downtimes.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

int64

\n

UTC epoch timestamp in seconds when the downtime for the group expires.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

synthetics_check_id

\n
\n

string

\n

DEPRECATED: ID of the corresponding Synthetic check.

\n
\n \n
\n
\n
\n
\n
\n

threshold_windows

\n
\n

object

\n

Alerting time window options.

\n
\n
\n
\n
\n
\n

recovery_window

\n
\n

string

\n

Describes how long an anomalous metric must be normal before the alert recovers.

\n
\n \n
\n
\n
\n
\n
\n

trigger_window

\n
\n

string

\n

Describes how long a metric must be anomalous before an alert triggers.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

thresholds

\n
\n

object

\n

List of the different monitor threshold available.

\n
\n
\n
\n
\n
\n

critical

\n
\n

double

\n

The monitor CRITICAL threshold.

\n
\n \n
\n
\n
\n
\n
\n

critical_recovery

\n
\n

double

\n

The monitor CRITICAL recovery threshold.

\n
\n \n
\n
\n
\n
\n
\n

ok

\n
\n

double

\n

The monitor OK threshold.

\n
\n \n
\n
\n
\n
\n
\n

unknown

\n
\n

double

\n

The monitor UNKNOWN threshold.

\n
\n \n
\n
\n
\n
\n
\n

warning

\n
\n

double

\n

The monitor WARNING threshold.

\n
\n \n
\n
\n
\n
\n
\n

warning_recovery

\n
\n

double

\n

The monitor WARNING recovery threshold.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

timeout_h

\n
\n

int64

\n

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.

\n
\n \n
\n
\n
\n
\n
\n

variables

\n
\n

[ <oneOf>]

\n

List of requests that can be used in the monitor query. This feature is currently in beta.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

A formula and functions events query.

\n
\n
\n
\n
\n
\n

compute [required]

\n
\n

object

\n

Compute options.

\n
\n
\n
\n
\n
\n

aggregation [required]

\n
\n

enum

\n

Aggregation methods for event platform queries. \nAllowed enum values: count,cardinality,median,pc75,pc90,pc95,pc98,pc99,sum,min,max,avg

\n
\n \n
\n
\n
\n
\n
\n

interval

\n
\n

int64

\n

A time interval in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

metric

\n
\n

string

\n

Measurable attribute to compute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

data_source [required]

\n
\n

enum

\n

Data source for event platform-based queries. \nAllowed enum values: rum,ci_pipelines,ci_tests,audit,events,logs,spans,database_queries,network

\n
\n \n
\n
\n
\n
\n
\n

group_by

\n
\n

[object]

\n

Group by options.

\n
\n
\n
\n
\n
\n

facet [required]

\n
\n

string

\n

Event facet.

\n
\n \n
\n
\n
\n
\n
\n

limit

\n
\n

int64

\n

Number of groups to return.

\n
\n \n
\n
\n
\n
\n
\n

sort

\n
\n

object

\n

Options for sorting group by results.

\n
\n
\n
\n
\n
\n

aggregation [required]

\n
\n

enum

\n

Aggregation methods for event platform queries. \nAllowed enum values: count,cardinality,median,pc75,pc90,pc95,pc98,pc99,sum,min,max,avg

\n
\n \n
\n
\n
\n
\n
\n

metric

\n
\n

string

\n

Metric used for sorting group by results.

\n
\n \n
\n
\n
\n
\n
\n

order

\n
\n

enum

\n

Direction of sort. \nAllowed enum values: asc,desc

default: desc

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

indexes

\n
\n

[string]

\n

An array of index names to query in the stream. Omit or use [] to query all indexes at once.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the query for use in formulas.

\n
\n \n
\n
\n
\n
\n
\n

search

\n
\n

object

\n

Search options.

\n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

Events search string.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

A formula and functions cost query.

\n
\n
\n
\n
\n
\n

aggregator

\n
\n

enum

\n

Aggregation methods for metric queries. \nAllowed enum values: avg,sum,max,min,last,area,l2norm,percentile,stddev

\n
\n \n
\n
\n
\n
\n
\n

data_source [required]

\n
\n

enum

\n

Data source for cost queries. \nAllowed enum values: metrics,cloud_cost,datadog_usage

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the query for use in formulas.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The monitor query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

overall_state

\n
\n

enum

\n

The different states your monitor can be in. \nAllowed enum values: Alert,Ignored,No Data,OK,Skipped,Unknown,Warn

\n
\n \n
\n
\n
\n
\n
\n

priority

\n
\n

int64

\n

Integer from 1 (high) to 5 (low) indicating alert severity.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The monitor query.

\n
\n \n
\n
\n
\n
\n
\n

restricted_roles

\n
\n

[string]

\n

A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the Roles API and are located in the data.id field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. restricted_roles is the successor of locked. For more information about locked and restricted_roles, see the monitor options docs.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

object

\n

Wrapper object with the different monitor states.

\n
\n
\n
\n
\n
\n

groups

\n
\n

object

\n

Dictionary where the keys are groups (comma separated lists of tags) and the values are\nthe list of groups your monitor is broken down on.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

object

\n

Monitor state for a single group.

\n
\n
\n
\n
\n
\n

last_nodata_ts

\n
\n

int64

\n

Latest timestamp the monitor was in NO_DATA state.

\n
\n \n
\n
\n
\n
\n
\n

last_notified_ts

\n
\n

int64

\n

Latest timestamp of the notification sent for this monitor group.

\n
\n \n
\n
\n
\n
\n
\n

last_resolved_ts

\n
\n

int64

\n

Latest timestamp the monitor group was resolved.

\n
\n \n
\n
\n
\n
\n
\n

last_triggered_ts

\n
\n

int64

\n

Latest timestamp the monitor group triggered.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the monitor.

\n
\n \n
\n
\n
\n
\n
\n

status

\n
\n

enum

\n

The different states your monitor can be in. \nAllowed enum values: Alert,Ignored,No Data,OK,Skipped,Unknown,Warn

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags associated to your monitor.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The type of the monitor. For more information about type, see the monitor options docs. \nAllowed enum values: 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

\n
\n \n
\n
" + "html": "
\n
\n
\n
\n

created

\n
\n

date-time

\n

Timestamp of the monitor creation.

\n
\n \n
\n
\n
\n
\n
\n

creator

\n
\n

object

\n

Object describing the creator of the shared element.

\n
\n
\n
\n
\n
\n

email

\n
\n

string

\n

Email of the creator.

\n
\n \n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

Handle of the creator.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the creator.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

deleted

\n
\n

date-time

\n

Whether or not the monitor is deleted. (Always null)

\n
\n \n
\n
\n
\n
\n
\n

id

\n
\n

int64

\n

ID of this monitor.

\n
\n \n
\n
\n
\n
\n
\n

message

\n
\n

string

\n

A message to include with notifications for this monitor.

\n
\n \n
\n
\n
\n
\n
\n

modified

\n
\n

date-time

\n

Last timestamp when the monitor was edited.

\n
\n \n
\n
\n
\n
\n
\n

multi

\n
\n

boolean

\n

Whether or not the monitor is broken down on different groups.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The monitor name.

\n
\n \n
\n
\n
\n
\n
\n

options

\n
\n

object

\n

List of options associated with your monitor.

\n
\n
\n
\n
\n
\n

aggregation

\n
\n

object

\n

Type of aggregation performed in the monitor query.

\n
\n
\n
\n
\n
\n

group_by

\n
\n

string

\n

Group to break down the monitor on.

\n
\n \n
\n
\n
\n
\n
\n

metric

\n
\n

string

\n

Metric name used in the monitor.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

string

\n

Metric type used in the monitor.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

device_ids

\n
\n

[string]

\n

DEPRECATED: IDs of the device the Synthetics monitor is running on.

\n
\n \n
\n
\n
\n
\n
\n

enable_logs_sample

\n
\n

boolean

\n

Whether or not to send a log sample when the log monitor triggers.

\n
\n \n
\n
\n
\n
\n
\n

enable_samples

\n
\n

boolean

\n

Whether or not to send a list of samples when the monitor triggers. This is only used by CI Test and Pipeline monitors.

\n
\n \n
\n
\n
\n
\n
\n

escalation_message

\n
\n

string

\n

We recommend using the is_renotify,\nblock in the original message instead.\nA message to include with a re-notification. Supports the @username notification we allow elsewhere.\nNot applicable if renotify_interval is None.

\n
\n \n
\n
\n
\n
\n
\n

evaluation_delay

\n
\n

int64

\n

Time (in seconds) to delay evaluation, as a non-negative integer. For example, if the value is set to 300 (5min),\nthe timeframe is set to last_5m and the time is 7:00, the monitor evaluates data from 6:50 to 6:55.\nThis is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor always has data during evaluation.

\n
\n \n
\n
\n
\n
\n
\n

group_retention_duration

\n
\n

string

\n

The time span after which groups with missing data are dropped from the monitor state.\nThe minimum value is one hour, and the maximum value is 72 hours.\nExample values are: "60m", "1h", and "2d".\nThis option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.

\n
\n \n
\n
\n
\n
\n
\n

groupby_simple_monitor

\n
\n

boolean

\n

DEPRECATED: Whether the log alert monitor triggers a single alert or multiple alerts when any group breaches a threshold. Use notify_by instead.

\n
\n \n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

A Boolean indicating whether notifications from this monitor automatically inserts its triggering tags into the title.

\n

Examples

\n
    \n
  • If True, [Triggered on {host:h1}] Monitor Title
  • \n
  • If False, [Triggered] Monitor Title
  • \n

default: true

\n
\n \n
\n
\n
\n
\n
\n

locked

\n
\n

boolean

\n

DEPRECATED: Whether or not the monitor is locked (only editable by creator and admins). Use restricted_roles instead.

\n
\n \n
\n
\n
\n
\n
\n

min_failure_duration

\n
\n

int64

\n

How long the test should be in failure before alerting (integer, number of seconds, max 7200).

\n
\n \n
\n
\n
\n
\n
\n

min_location_failed

\n
\n

int64

\n

The minimum number of locations in failure at the same time during\nat least one moment in the min_failure_duration period (min_location_failed and min_failure_duration\nare part of the advanced alerting rules - integer, >= 1).

default: 1

\n
\n \n
\n
\n
\n
\n
\n

new_group_delay

\n
\n

int64

\n

Time (in seconds) to skip evaluations for new groups.

\n

For example, this option can be used to skip evaluations for new hosts while they initialize.

\n

Must be a non negative integer.

\n
\n \n
\n
\n
\n
\n
\n

new_host_delay

\n
\n

int64

\n

DEPRECATED: Time (in seconds) to allow a host to boot and applications\nto fully start before starting the evaluation of monitor results.\nShould be a non negative integer.

\n

Use new_group_delay instead.

default: 300

\n
\n \n
\n
\n
\n
\n
\n

no_data_timeframe

\n
\n

int64

\n

The number of minutes before a monitor notifies after data stops reporting.\nDatadog recommends at least 2x the monitor timeframe for query alerts or 2 minutes for service checks.\nIf omitted, 2x the evaluation timeframe is used for query alerts, and 24 hours is used for service checks.

\n
\n \n
\n
\n
\n
\n
\n

notification_preset_name

\n
\n

enum

\n

Toggles the display of additional content sent in the monitor notification. \nAllowed enum values: show_all,hide_query,hide_handles,hide_all

default: show_all

\n
\n \n
\n
\n
\n
\n
\n

notify_audit

\n
\n

boolean

\n

A Boolean indicating whether tagged users is notified on changes to this monitor.

\n
\n \n
\n
\n
\n
\n
\n

notify_by

\n
\n

[string]

\n

Controls what granularity a monitor alerts on. Only available for monitors with groupings.\nFor instance, a monitor grouped by cluster, namespace, and pod can be configured to only notify on each\nnew cluster violating the alert conditions by setting notify_by to ["cluster"]. Tags mentioned\nin notify_by must be a subset of the grouping tags in the query.\nFor example, a query grouped by cluster and namespace cannot notify on region.\nSetting notify_by to [*] configures the monitor to notify as a simple-alert.

\n
\n \n
\n
\n
\n
\n
\n

notify_no_data

\n
\n

boolean

\n

A Boolean indicating whether this monitor notifies when data stops reporting. Defaults to false.

\n
\n \n
\n
\n
\n
\n
\n

on_missing_data

\n
\n

enum

\n

Controls how groups or monitors are treated if an evaluation does not return any data points.\nThe default option results in different behavior depending on the monitor query type.\nFor monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions.\nFor monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status.\nThis option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors. \nAllowed enum values: default,show_no_data,show_and_notify_no_data,resolve

\n
\n \n
\n
\n
\n
\n
\n

renotify_interval

\n
\n

int64

\n

The number of minutes after the last notification before a monitor re-notifies on the current status.\nIt only re-notifies if it’s not resolved.

\n
\n \n
\n
\n
\n
\n
\n

renotify_occurrences

\n
\n

int64

\n

The number of times re-notification messages should be sent on the current status at the provided re-notification interval.

\n
\n \n
\n
\n
\n
\n
\n

renotify_statuses

\n
\n

[string]

\n

The types of monitor statuses for which re-notification messages are sent.\nDefault: null if renotify_interval is null.\nIf renotify_interval is set, defaults to renotify on Alert and No Data.

\n
\n \n
\n
\n
\n
\n
\n

require_full_window

\n
\n

boolean

\n

A Boolean indicating whether this monitor needs a full window of data before it’s evaluated.\nWe highly recommend you set this to false for sparse metrics,\notherwise some evaluations are skipped. Default is false. This setting only applies to\nmetric monitors.

\n
\n \n
\n
\n
\n
\n
\n

scheduling_options

\n
\n

object

\n

Configuration options for scheduling.

\n
\n
\n
\n
\n
\n

custom_schedule

\n
\n

object

\n

Configuration options for the custom schedule. This feature is in private beta.

\n
\n
\n
\n
\n
\n

recurrences

\n
\n

[object]

\n

Array of custom schedule recurrences.

\n
\n
\n
\n
\n
\n

rrule

\n
\n

string

\n

Defines the recurrence rule (RRULE) for a given schedule.

\n
\n \n
\n
\n
\n
\n
\n

start

\n
\n

string

\n

Defines the start date and time of the recurring schedule.

\n
\n \n
\n
\n
\n
\n
\n

timezone

\n
\n

string

\n

Defines the timezone the schedule runs on.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

evaluation_window

\n
\n

object

\n

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.

\n
\n
\n
\n
\n
\n

day_starts

\n
\n

string

\n

The time of the day at which a one day cumulative evaluation window starts. Must be defined in UTC time in HH:mm format.

\n
\n \n
\n
\n
\n
\n
\n

hour_starts

\n
\n

int32

\n

The minute of the hour at which a one hour cumulative evaluation window starts.

\n
\n \n
\n
\n
\n
\n
\n

month_starts

\n
\n

int32

\n

The day of the month at which a one month cumulative evaluation window starts.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

silenced

\n
\n

object

\n

DEPRECATED: Information about the downtime applied to the monitor. Only shows v1 downtimes.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

int64

\n

UTC epoch timestamp in seconds when the downtime for the group expires.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

synthetics_check_id

\n
\n

string

\n

DEPRECATED: ID of the corresponding Synthetic check.

\n
\n \n
\n
\n
\n
\n
\n

threshold_windows

\n
\n

object

\n

Alerting time window options.

\n
\n
\n
\n
\n
\n

recovery_window

\n
\n

string

\n

Describes how long an anomalous metric must be normal before the alert recovers.

\n
\n \n
\n
\n
\n
\n
\n

trigger_window

\n
\n

string

\n

Describes how long a metric must be anomalous before an alert triggers.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

thresholds

\n
\n

object

\n

List of the different monitor threshold available.

\n
\n
\n
\n
\n
\n

critical

\n
\n

double

\n

The monitor CRITICAL threshold.

\n
\n \n
\n
\n
\n
\n
\n

critical_recovery

\n
\n

double

\n

The monitor CRITICAL recovery threshold.

\n
\n \n
\n
\n
\n
\n
\n

ok

\n
\n

double

\n

The monitor OK threshold.

\n
\n \n
\n
\n
\n
\n
\n

unknown

\n
\n

double

\n

The monitor UNKNOWN threshold.

\n
\n \n
\n
\n
\n
\n
\n

warning

\n
\n

double

\n

The monitor WARNING threshold.

\n
\n \n
\n
\n
\n
\n
\n

warning_recovery

\n
\n

double

\n

The monitor WARNING recovery threshold.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

timeout_h

\n
\n

int64

\n

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.

\n
\n \n
\n
\n
\n
\n
\n

variables

\n
\n

[ <oneOf>]

\n

List of requests that can be used in the monitor query. This feature is currently in beta.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

A formula and functions events query.

\n
\n
\n
\n
\n
\n

compute [required]

\n
\n

object

\n

Compute options.

\n
\n
\n
\n
\n
\n

aggregation [required]

\n
\n

enum

\n

Aggregation methods for event platform queries. \nAllowed enum values: count,cardinality,median,pc75,pc90,pc95,pc98,pc99,sum,min,max,avg

\n
\n \n
\n
\n
\n
\n
\n

interval

\n
\n

int64

\n

A time interval in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

metric

\n
\n

string

\n

Measurable attribute to compute.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

data_source [required]

\n
\n

enum

\n

Data source for event platform-based queries. \nAllowed enum values: rum,ci_pipelines,ci_tests,audit,events,logs,spans,database_queries,network

\n
\n \n
\n
\n
\n
\n
\n

group_by

\n
\n

[object]

\n

Group by options.

\n
\n
\n
\n
\n
\n

facet [required]

\n
\n

string

\n

Event facet.

\n
\n \n
\n
\n
\n
\n
\n

limit

\n
\n

int64

\n

Number of groups to return.

\n
\n \n
\n
\n
\n
\n
\n

sort

\n
\n

object

\n

Options for sorting group by results.

\n
\n
\n
\n
\n
\n

aggregation [required]

\n
\n

enum

\n

Aggregation methods for event platform queries. \nAllowed enum values: count,cardinality,median,pc75,pc90,pc95,pc98,pc99,sum,min,max,avg

\n
\n \n
\n
\n
\n
\n
\n

metric

\n
\n

string

\n

Metric used for sorting group by results.

\n
\n \n
\n
\n
\n
\n
\n

order

\n
\n

enum

\n

Direction of sort. \nAllowed enum values: asc,desc

default: desc

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

indexes

\n
\n

[string]

\n

An array of index names to query in the stream. Omit or use [] to query all indexes at once.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the query for use in formulas.

\n
\n \n
\n
\n
\n
\n
\n

search

\n
\n

object

\n

Search options.

\n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

Events search string.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

A formula and functions cost query.

\n
\n
\n
\n
\n
\n

aggregator

\n
\n

enum

\n

Aggregation methods for metric queries. \nAllowed enum values: avg,sum,max,min,last,area,l2norm,percentile,stddev

\n
\n \n
\n
\n
\n
\n
\n

data_source [required]

\n
\n

enum

\n

Data source for cost queries. \nAllowed enum values: metrics,cloud_cost,datadog_usage

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the query for use in formulas.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The monitor query.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

overall_state

\n
\n

enum

\n

The different states your monitor can be in. \nAllowed enum values: Alert,Ignored,No Data,OK,Skipped,Unknown,Warn

\n
\n \n
\n
\n
\n
\n
\n

priority

\n
\n

int64

\n

Integer from 1 (high) to 5 (low) indicating alert severity.

\n
\n \n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The monitor query.

\n
\n \n
\n
\n
\n
\n
\n

restricted_roles

\n
\n

[string]

\n

A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the Roles API and are located in the data.id field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. You can use the Restriction Policies API to manage write authorization for individual monitors by teams and users, in addition to roles.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

object

\n

Wrapper object with the different monitor states.

\n
\n
\n
\n
\n
\n

groups

\n
\n

object

\n

Dictionary where the keys are groups (comma separated lists of tags) and the values are\nthe list of groups your monitor is broken down on.

\n
\n
\n
\n
\n
\n

<any-key>

\n
\n

object

\n

Monitor state for a single group.

\n
\n
\n
\n
\n
\n

last_nodata_ts

\n
\n

int64

\n

Latest timestamp the monitor was in NO_DATA state.

\n
\n \n
\n
\n
\n
\n
\n

last_notified_ts

\n
\n

int64

\n

Latest timestamp of the notification sent for this monitor group.

\n
\n \n
\n
\n
\n
\n
\n

last_resolved_ts

\n
\n

int64

\n

Latest timestamp the monitor group was resolved.

\n
\n \n
\n
\n
\n
\n
\n

last_triggered_ts

\n
\n

int64

\n

Latest timestamp the monitor group triggered.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the monitor.

\n
\n \n
\n
\n
\n
\n
\n

status

\n
\n

enum

\n

The different states your monitor can be in. \nAllowed enum values: Alert,Ignored,No Data,OK,Skipped,Unknown,Warn

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

Tags associated to your monitor.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The type of the monitor. For more information about type, see the monitor options docs. \nAllowed enum values: 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

\n
\n \n
\n
" } }, "MuteMonitor": { diff --git a/content/en/api/v1/security-monitoring/examples.json b/content/en/api/v1/security-monitoring/examples.json index f164b551bd9f6..367e22af95761 100644 --- a/content/en/api/v1/security-monitoring/examples.json +++ b/content/en/api/v1/security-monitoring/examples.json @@ -47,7 +47,7 @@ "json": { "add_to_signal_timeline": false, "incident_id": 2066, - "version": "integer" + "version": 0 }, "html": "
\n
\n
\n
\n

add_to_signal_timeline

\n
\n

boolean

\n

Whether to post the signal on the incident timeline.

\n
\n \n
\n
\n
\n
\n
\n

incident_id [required]

\n
\n

int64

\n

Public ID attribute of the incident to which the signal will be added.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

Version of the updated signal. If server side version is higher, update will be rejected.

\n
\n \n
\n
" } @@ -99,7 +99,7 @@ }, "json": { "assignee": "773b045d-ccf8-4808-bd3b-955ef6a8c940", - "version": "integer" + "version": 0 }, "html": "
\n
\n
\n
\n

assignee [required]

\n
\n

string

\n

The UUID of the user being assigned. Use empty string to return signal to unassigned.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

Version of the updated signal. If server side version is higher, update will be rejected.

\n
\n \n
\n
" } @@ -153,7 +153,7 @@ "archiveComment": "string", "archiveReason": "string", "state": "open", - "version": "integer" + "version": 0 }, "html": "
\n
\n
\n
\n

archiveComment

\n
\n

string

\n

Optional comment to explain why a signal is being archived.

\n
\n \n
\n
\n
\n
\n
\n

archiveReason

\n
\n

enum

\n

Reason why a signal has been archived. \nAllowed enum values: none,false_positive,testing_or_maintenance,investigated_case_opened,true_positive_benign,true_positive_malicious,other

\n
\n \n
\n
\n
\n
\n
\n

state [required]

\n
\n

enum

\n

The new triage state of the signal. \nAllowed enum values: open,archived,under_review

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

Version of the updated signal. If server side version is higher, update will be rejected.

\n
\n \n
\n
" } diff --git a/content/en/api/v2/app-builder/_index.md b/content/en/api/v2/app-builder/_index.md new file mode 100644 index 0000000000000..9326aad6781ae --- /dev/null +++ b/content/en/api/v2/app-builder/_index.md @@ -0,0 +1,4 @@ +--- +title: App Builder +headless: true +--- diff --git a/content/en/api/v2/app-builder/examples.json b/content/en/api/v2/app-builder/examples.json new file mode 100644 index 0000000000000..9492c5ec8cc7b --- /dev/null +++ b/content/en/api/v2/app-builder/examples.json @@ -0,0 +1,1121 @@ +{ + "DeleteApps": { + "responses": { + "200": { + "json": { + "data": [ + { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + ] + }, + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

An array of objects containing the IDs of the deleted apps.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the deleted app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": [ + { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + ] + }, + "json": { + "data": [ + { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + ] + }, + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

An array of objects containing the IDs of the apps to delete.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the app to delete.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
" + } + }, + "ListApps": { + "responses": { + "200": { + "json": { + "data": [ + { + "attributes": { + "description": "string", + "favorite": false, + "name": "string", + "selfService": false, + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "deleted_at": "2019-09-19T10:00:00.000Z", + "org_id": "integer", + "updated_at": "2019-09-19T10:00:00.000Z", + "updated_since_deployment": false, + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "version": "integer" + }, + "relationships": { + "deployment": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "deployment" + }, + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + } + } + }, + "type": "appDefinitions" + } + ], + "included": [ + { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + ], + "meta": { + "page": { + "totalCount": "integer", + "totalFilteredCount": "integer" + } + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

An array of app definitions.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Basic information about the app such as name, description, and tags.

\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

favorite

\n
\n

boolean

\n

Whether the app is marked as a favorite by the current user.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the app.

\n
\n \n
\n
\n
\n
\n
\n

selfService

\n
\n

boolean

\n

Whether the app is enabled for use in the Datadog self-service hub.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags for the app, which can be used to filter apps.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the app.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata of an app.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was created.

\n
\n \n
\n
\n
\n
\n
\n

deleted_at

\n
\n

date-time

\n

Timestamp of when the app was deleted.

\n
\n \n
\n
\n
\n
\n
\n

org_id

\n
\n

int64

\n

The Datadog organization ID that owns the app.

\n
\n \n
\n
\n
\n
\n
\n

updated_at

\n
\n

date-time

\n

Timestamp of when the app was last updated.

\n
\n \n
\n
\n
\n
\n
\n

updated_since_deployment

\n
\n

boolean

\n

Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

The version number of the app. This starts at 1 and increments with each update.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationships

\n
\n

object

\n

The app's publication information.

\n
\n
\n
\n
\n
\n

deployment

\n
\n

object

\n

Information pointing to the app's publication status.

\n
\n
\n
\n
\n
\n

data

\n
\n

object

\n

Data object containing the deployment ID.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

included

\n
\n

[object]

\n

Data on the version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Pagination metadata.

\n
\n
\n
\n
\n
\n

page

\n
\n

object

\n

Information on the total number of apps, to be used for pagination.

\n
\n
\n
\n
\n
\n

totalCount

\n
\n

int64

\n

The total number of apps under the Datadog organization, disregarding any filters applied.

\n
\n \n
\n
\n
\n
\n
\n

totalFilteredCount

\n
\n

int64

\n

The total number of apps that match the specified filters.

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "CreateApp": { + "responses": { + "201": { + "json": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the app ID.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the created app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "components": [ + { + "name": "", + "properties": { + "children": [ + { + "name": "", + "properties": {}, + "type": "text" + } + ], + "isVisible": { + "type": null + } + }, + "type": "grid" + } + ], + "embeddedQueries": [ + { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "", + "type": "action" + } + ] + }, + "type": "appDefinitions" + } + }, + "json": { + "data": { + "attributes": { + "components": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "backgroundColor": "string", + "children": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "children": [], + "isVisible": { + "type": "undefined" + } + }, + "type": "text" + } + ], + "isVisible": { + "type": "undefined" + } + }, + "type": "grid" + } + ], + "description": "string", + "embeddedQueries": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "", + "properties": "undefined", + "type": "action" + } + ], + "name": "string", + "rootInstanceName": "string", + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "type": "appDefinitions" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the app definition.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

App definition attributes such as name, description, and components.

\n
\n
\n
\n
\n
\n

components

\n
\n

[object]

\n

The UI components that make up the app.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the grid component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the grid component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this grid component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a grid component.

\n
\n
\n
\n
\n
\n

backgroundColor

\n
\n

string

\n

The background color of the grid.

default: default

\n
\n \n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the grid.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the UI component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the UI component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this UI component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.

\n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the UI component.

\n
\n \n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The UI component type. \nAllowed enum values: table,textInput,textArea,button,text,select,modal,schemaForm,checkbox,tabs,vegaChart,radioButtons,numberInput,fileInput,jsonInput,gridCell,dateRangePicker,search,container,calloutValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

boolean

\n

default: true

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The grid component type. \nAllowed enum values: grid

default: grid

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

embeddedQueries

\n
\n

[object]

\n

An array of queries, such as external actions and state variables, that the app uses.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for downstream of the query.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the query.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the query. The name must be unique within the app and is visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

\n

The properties of the query. The properties vary depending on the query type.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The query type. \nAllowed enum values: action,stateVariable,dataTransform

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the app.

\n
\n \n
\n
\n
\n
\n
\n

rootInstanceName

\n
\n

string

\n

The name of the root component of the app. This must be a grid component that contains all other components.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags for the app, which can be used to filter apps.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
" + } + }, + "DeleteApp": { + "responses": { + "200": { + "json": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of DeleteAppResponseData object.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the deleted app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "410": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetApp": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "components": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "backgroundColor": "string", + "children": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "children": [], + "isVisible": { + "type": "undefined" + } + }, + "type": "text" + } + ], + "isVisible": { + "type": "undefined" + } + }, + "type": "grid" + } + ], + "description": "string", + "embeddedQueries": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "", + "properties": "undefined", + "type": "action" + } + ], + "favorite": false, + "name": "string", + "rootInstanceName": "string", + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + }, + "included": [ + { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + ], + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "deleted_at": "2019-09-19T10:00:00.000Z", + "org_id": "integer", + "updated_at": "2019-09-19T10:00:00.000Z", + "updated_since_deployment": false, + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "version": "integer" + }, + "relationship": { + "connections": [ + { + "attributes": { + "name": "string", + "onPremRunner": { + "id": "string", + "url": "string" + } + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "custom_connections" + } + ], + "deployment": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "deployment" + }, + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + } + } + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the app definition.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The app definition attributes, such as name, description, and components.

\n
\n
\n
\n
\n
\n

components

\n
\n

[object]

\n

The UI components that make up the app.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the grid component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the grid component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this grid component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a grid component.

\n
\n
\n
\n
\n
\n

backgroundColor

\n
\n

string

\n

The background color of the grid.

default: default

\n
\n \n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the grid.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the UI component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the UI component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this UI component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.

\n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the UI component.

\n
\n \n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The UI component type. \nAllowed enum values: table,textInput,textArea,button,text,select,modal,schemaForm,checkbox,tabs,vegaChart,radioButtons,numberInput,fileInput,jsonInput,gridCell,dateRangePicker,search,container,calloutValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

boolean

\n

default: true

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The grid component type. \nAllowed enum values: grid

default: grid

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

A human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

embeddedQueries

\n
\n

[object]

\n

An array of queries, such as external actions and state variables, that the app uses.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for downstream of the query.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the query.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the query. The name must be unique within the app and is visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

\n

The properties of the query. The properties vary depending on the query type.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The query type. \nAllowed enum values: action,stateVariable,dataTransform

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

favorite

\n
\n

boolean

\n

Whether the app is marked as a favorite by the current user.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the app.

\n
\n \n
\n
\n
\n
\n
\n

rootInstanceName

\n
\n

string

\n

The name of the root component of the app. This must be a grid component that contains all other components.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags for the app, which can be used to filter apps.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

included

\n
\n

[object]

\n

Data on the version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata of an app.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was created.

\n
\n \n
\n
\n
\n
\n
\n

deleted_at

\n
\n

date-time

\n

Timestamp of when the app was deleted.

\n
\n \n
\n
\n
\n
\n
\n

org_id

\n
\n

int64

\n

The Datadog organization ID that owns the app.

\n
\n \n
\n
\n
\n
\n
\n

updated_at

\n
\n

date-time

\n

Timestamp of when the app was last updated.

\n
\n \n
\n
\n
\n
\n
\n

updated_since_deployment

\n
\n

boolean

\n

Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

The version number of the app. This starts at 1 and increments with each update.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationship

\n
\n

object

\n

The app's publication relationship and custom connections.

\n
\n
\n
\n
\n
\n

connections

\n
\n

[object]

\n

Array of custom connections used by the app.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The custom connection attributes.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

onPremRunner

\n
\n

object

\n

Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.

\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The Private Action Runner ID.

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

The URL of the Private Action Runner.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The custom connection type. \nAllowed enum values: custom_connections

default: custom_connections

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

deployment

\n
\n

object

\n

Information pointing to the app's publication status.

\n
\n
\n
\n
\n
\n

data

\n
\n

object

\n

Data object containing the deployment ID.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "UpdateApp": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "components": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "backgroundColor": "string", + "children": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "children": [], + "isVisible": { + "type": "undefined" + } + }, + "type": "text" + } + ], + "isVisible": { + "type": "undefined" + } + }, + "type": "grid" + } + ], + "description": "string", + "embeddedQueries": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "", + "properties": "undefined", + "type": "action" + } + ], + "favorite": false, + "name": "string", + "rootInstanceName": "string", + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + }, + "included": [ + { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + ], + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "deleted_at": "2019-09-19T10:00:00.000Z", + "org_id": "integer", + "updated_at": "2019-09-19T10:00:00.000Z", + "updated_since_deployment": false, + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "version": "integer" + }, + "relationship": { + "connections": [ + { + "attributes": { + "name": "string", + "onPremRunner": { + "id": "string", + "url": "string" + } + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "custom_connections" + } + ], + "deployment": { + "data": { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "deployment" + }, + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + } + } + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the updated app definition.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The updated app definition attributes, such as name, description, and components.

\n
\n
\n
\n
\n
\n

components

\n
\n

[object]

\n

The UI components that make up the app.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the grid component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the grid component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this grid component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a grid component.

\n
\n
\n
\n
\n
\n

backgroundColor

\n
\n

string

\n

The background color of the grid.

default: default

\n
\n \n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the grid.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the UI component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the UI component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this UI component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.

\n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the UI component.

\n
\n \n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The UI component type. \nAllowed enum values: table,textInput,textArea,button,text,select,modal,schemaForm,checkbox,tabs,vegaChart,radioButtons,numberInput,fileInput,jsonInput,gridCell,dateRangePicker,search,container,calloutValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

boolean

\n

default: true

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The grid component type. \nAllowed enum values: grid

default: grid

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

embeddedQueries

\n
\n

[object]

\n

An array of queries, such as external actions and state variables, that the app uses.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for downstream of the query.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the query.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the query. The name must be unique within the app and is visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

\n

The properties of the query. The properties vary depending on the query type.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The query type. \nAllowed enum values: action,stateVariable,dataTransform

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

favorite

\n
\n

boolean

\n

Whether the app is marked as a favorite by the current user.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the app.

\n
\n \n
\n
\n
\n
\n
\n

rootInstanceName

\n
\n

string

\n

The name of the root component of the app. This must be a grid component that contains all other components.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

A list of tags for the app, which can be used to filter apps.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the updated app.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

included

\n
\n

[object]

\n

Data on the version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata of an app.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was created.

\n
\n \n
\n
\n
\n
\n
\n

deleted_at

\n
\n

date-time

\n

Timestamp of when the app was deleted.

\n
\n \n
\n
\n
\n
\n
\n

org_id

\n
\n

int64

\n

The Datadog organization ID that owns the app.

\n
\n \n
\n
\n
\n
\n
\n

updated_at

\n
\n

date-time

\n

Timestamp of when the app was last updated.

\n
\n \n
\n
\n
\n
\n
\n

updated_since_deployment

\n
\n

boolean

\n

Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who created the app.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

The version number of the app. This starts at 1 and increments with each update.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationship

\n
\n

object

\n

The app's publication relationship and custom connections.

\n
\n
\n
\n
\n
\n

connections

\n
\n

[object]

\n

Array of custom connections used by the app.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The custom connection attributes.

\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The name of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

onPremRunner

\n
\n

object

\n

Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.

\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The Private Action Runner ID.

\n
\n \n
\n
\n
\n
\n
\n

url

\n
\n

string

\n

The URL of the Private Action Runner.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the custom connection.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The custom connection type. \nAllowed enum values: custom_connections

default: custom_connections

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

deployment

\n
\n

object

\n

Information pointing to the app's publication status.

\n
\n
\n
\n
\n
\n

data

\n
\n

object

\n

Data object containing the deployment ID.

\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "components": [ + { + "name": "", + "properties": { + "children": [ + { + "name": "", + "properties": {}, + "type": "text" + } + ], + "isVisible": { + "type": null + } + }, + "type": "grid" + } + ], + "embeddedQueries": [ + { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "", + "type": "action" + } + ] + }, + "type": "appDefinitions" + } + }, + "json": { + "data": { + "attributes": { + "components": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "backgroundColor": "string", + "children": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "string", + "name": "", + "properties": { + "children": [], + "isVisible": { + "type": "undefined" + } + }, + "type": "text" + } + ], + "isVisible": { + "type": "undefined" + } + }, + "type": "grid" + } + ], + "description": "string", + "embeddedQueries": [ + { + "events": [ + { + "name": "click", + "type": "triggerQuery" + } + ], + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "name": "", + "properties": "undefined", + "type": "action" + } + ], + "name": "string", + "rootInstanceName": "string", + "tags": [ + "service:webshop-backend", + "team:webshop" + ] + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The data object containing the new app definition. Any fields not included in the request remain unchanged.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

App definition attributes to be updated, such as name, description, and components.

\n
\n
\n
\n
\n
\n

components

\n
\n

[object]

\n

The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the grid component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the grid component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this grid component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a grid component.

\n
\n
\n
\n
\n
\n

backgroundColor

\n
\n

string

\n

The background color of the grid.

default: default

\n
\n \n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the grid.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for on the UI component.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The ID of the UI component. This property is deprecated; use name to identify individual components instead.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

A unique identifier for this UI component. This name is also visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties [required]

\n
\n

object

\n

Properties of a UI component. Different component types can have their own additional unique properties. See the components documentation for more detail on each component type and its properties.

\n
\n
\n
\n
\n
\n

children

\n
\n

[object]

\n

The child components of the UI component.

\n
\n \n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

boolean

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

string

\n

If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The UI component type. \nAllowed enum values: table,textInput,textArea,button,text,select,modal,schemaForm,checkbox,tabs,vegaChart,radioButtons,numberInput,fileInput,jsonInput,gridCell,dateRangePicker,search,container,calloutValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

isVisible

\n
\n

 <oneOf>

\n

Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

Option 2

\n
\n

boolean

\n

default: true

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The grid component type. \nAllowed enum values: grid

default: grid

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The new human-readable description for the app.

\n
\n \n
\n
\n
\n
\n
\n

embeddedQueries

\n
\n

[object]

\n

The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field.

\n
\n
\n
\n
\n
\n

events

\n
\n

[object]

\n

Events to listen for downstream of the query.

\n
\n
\n
\n
\n
\n

name

\n
\n

enum

\n

The triggering action for the event. \nAllowed enum values: pageChange,tableRowClick,_tableRowButtonClick,change,submit,click,toggleOpen,close,open,executionFinished

\n
\n \n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The response to the event. \nAllowed enum values: custom,setComponentState,triggerQuery,openModal,closeModal,openUrl,downloadFile,setStateVariableValue

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the query.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The name of the query. The name must be unique within the app and is visible in the app editor.

\n
\n \n
\n
\n
\n
\n
\n

properties

\n
\n

\n

The properties of the query. The properties vary depending on the query type.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The query type. \nAllowed enum values: action,stateVariable,dataTransform

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The new name of the app.

\n
\n \n
\n
\n
\n
\n
\n

rootInstanceName

\n
\n

string

\n

The new name of the root component of the app. This must be a grid component that contains all other components.

\n
\n \n
\n
\n
\n
\n
\n

tags

\n
\n

[string]

\n

The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The ID of the app to update. The app ID must match the ID in the URL path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The app definition type. \nAllowed enum values: appDefinitions

default: appDefinitions

\n
\n \n
\n
\n
\n
" + } + }, + "UnpublishApp": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "PublishApp": { + "responses": { + "201": { + "json": { + "data": { + "attributes": { + "app_version_id": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "meta": { + "created_at": "2019-09-19T10:00:00.000Z", + "user_id": "integer", + "user_name": "string", + "user_uuid": "65bb1f25-52e1-4510-9f8d-22d1516ed693" + }, + "type": "deployment" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The version of the app that was published.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes object containing the version ID of the published app.

\n
\n
\n
\n
\n
\n

app_version_id

\n
\n

uuid

\n

The version ID of the app that was published. For an unpublished app, this is always the nil UUID (00000000-0000-0000-0000-000000000000).

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

uuid

\n

The deployment ID.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Metadata object containing the publication creation information.

\n
\n
\n
\n
\n
\n

created_at

\n
\n

date-time

\n

Timestamp of when the app was published.

\n
\n \n
\n
\n
\n
\n
\n

user_id

\n
\n

int64

\n

The ID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_name

\n
\n

string

\n

The name (or email address) of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n

user_uuid

\n
\n

uuid

\n

The UUID of the user who published the app.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type

\n
\n

enum

\n

The deployment type. \nAllowed enum values: deployment

default: deployment

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + } +} \ No newline at end of file diff --git a/content/en/api/v2/app-builder/request.CreateApp.json b/content/en/api/v2/app-builder/request.CreateApp.json new file mode 100644 index 0000000000000..b75e60d39444a --- /dev/null +++ b/content/en/api/v2/app-builder/request.CreateApp.json @@ -0,0 +1,55 @@ +{ + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isVisible": true, + "isUnpublishd": false, + "isLoading": false, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42" + }, + "type": "calloutValue" + } + ], + "isVisible": "true", + "layout": { + "default": { + "height": 8, + "width": 2, + "x": 0, + "y": 0 + } + } + }, + "type": "gridCell" + } + ] + }, + "type": "grid" + } + ], + "description": "This is a simple example app", + "embeddedQueries": [], + "name": "Example App", + "rootInstanceName": "grid0" + }, + "type": "appDefinitions" + } +} \ No newline at end of file diff --git a/content/en/api/v2/app-builder/request.DeleteApps.json b/content/en/api/v2/app-builder/request.DeleteApps.json new file mode 100644 index 0000000000000..1b0218185ee45 --- /dev/null +++ b/content/en/api/v2/app-builder/request.DeleteApps.json @@ -0,0 +1,8 @@ +{ + "data": [ + { + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } + ] +} \ No newline at end of file diff --git a/content/en/api/v2/app-builder/request.UpdateApp.json b/content/en/api/v2/app-builder/request.UpdateApp.json new file mode 100644 index 0000000000000..a2859e4bc4aee --- /dev/null +++ b/content/en/api/v2/app-builder/request.UpdateApp.json @@ -0,0 +1,10 @@ +{ + "data": { + "attributes": { + "name": "Updated Name", + "rootInstanceName": "grid0" + }, + "id": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "appDefinitions" + } +} \ No newline at end of file diff --git a/content/en/api/v2/logs-archives/examples.json b/content/en/api/v2/logs-archives/examples.json index f6260bad4effa..d7e289411819b 100644 --- a/content/en/api/v2/logs-archives/examples.json +++ b/content/en/api/v2/logs-archives/examples.json @@ -150,7 +150,7 @@ } ] }, - "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

A list of archives.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n

A list of archives.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

encryption

\n
\n

object

\n

The S3 encryption settings.

\n
\n
\n
\n
\n
\n

key

\n
\n

string

\n

An Amazon Resource Name (ARN) used to identify an AWS KMS key.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of S3 encryption for a destination. \nAllowed enum values: NO_OVERRIDE,SSE_S3,SSE_KMS

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" }, "403": { "json": { @@ -206,7 +206,7 @@ "type": "archives" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

encryption

\n
\n

object

\n

The S3 encryption settings.

\n
\n
\n
\n
\n
\n

key

\n
\n

string

\n

An Amazon Resource Name (ARN) used to identify an AWS KMS key.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of S3 encryption for a destination. \nAllowed enum values: NO_OVERRIDE,SSE_S3,SSE_KMS

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -275,7 +275,7 @@ "type": "archives" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

 <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

 <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

encryption

\n
\n

object

\n

The S3 encryption settings.

\n
\n
\n
\n
\n
\n

key

\n
\n

string

\n

An Amazon Resource Name (ARN) used to identify an AWS KMS key.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of S3 encryption for a destination. \nAllowed enum values: NO_OVERRIDE,SSE_S3,SSE_KMS

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" } }, "DeleteLogsArchive": { @@ -350,7 +350,7 @@ "type": "archives" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

encryption

\n
\n

object

\n

The S3 encryption settings.

\n
\n
\n
\n
\n
\n

key

\n
\n

string

\n

An Amazon Resource Name (ARN) used to identify an AWS KMS key.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of S3 encryption for a destination. \nAllowed enum values: NO_OVERRIDE,SSE_S3,SSE_KMS

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -422,7 +422,7 @@ "type": "archives" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

object <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

encryption

\n
\n

object

\n

The S3 encryption settings.

\n
\n
\n
\n
\n
\n

key

\n
\n

string

\n

An Amazon Resource Name (ARN) used to identify an AWS KMS key.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of S3 encryption for a destination. \nAllowed enum values: NO_OVERRIDE,SSE_S3,SSE_KMS

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n

state

\n
\n

enum

\n

The state of the archive. \nAllowed enum values: UNKNOWN,WORKING,FAILING,WORKING_AUTH_LEGACY

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id

\n
\n

string

\n

The archive ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" }, "400": { "json": { @@ -499,7 +499,7 @@ "type": "archives" } }, - "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

 <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

The definition of an archive.

\n
\n
\n
\n
\n
\n

attributes

\n
\n

object

\n

The attributes associated with the archive.

\n
\n
\n
\n
\n
\n

destination [required]

\n
\n

 <oneOf>

\n

An archive's destination.

\n
\n
\n
\n
\n
\n

Option 1

\n
\n

object

\n

The Azure archive destination.

\n
\n
\n
\n
\n
\n

container [required]

\n
\n

string

\n

The container where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The Azure archive's integration destination.

\n
\n
\n
\n
\n
\n

client_id [required]

\n
\n

string

\n

A client ID.

\n
\n \n
\n
\n
\n
\n
\n

tenant_id [required]

\n
\n

string

\n

A tenant ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

region

\n
\n

string

\n

The region where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

storage_account [required]

\n
\n

string

\n

The associated storage account.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the Azure archive destination. \nAllowed enum values: azure

default: azure

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 2

\n
\n

object

\n

The GCS archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The GCS archive's integration destination.

\n
\n
\n
\n
\n
\n

client_email [required]

\n
\n

string

\n

A client email.

\n
\n \n
\n
\n
\n
\n
\n

project_id

\n
\n

string

\n

A project ID.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the GCS archive destination. \nAllowed enum values: gcs

default: gcs

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

Option 3

\n
\n

object

\n

The S3 archive destination.

\n
\n
\n
\n
\n
\n

bucket [required]

\n
\n

string

\n

The bucket where the archive will be stored.

\n
\n \n
\n
\n
\n
\n
\n

encryption

\n
\n

object

\n

The S3 encryption settings.

\n
\n
\n
\n
\n
\n

key

\n
\n

string

\n

An Amazon Resource Name (ARN) used to identify an AWS KMS key.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of S3 encryption for a destination. \nAllowed enum values: NO_OVERRIDE,SSE_S3,SSE_KMS

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

integration [required]

\n
\n

object

\n

The S3 Archive's integration destination.

\n
\n
\n
\n
\n
\n

account_id [required]

\n
\n

string

\n

The account ID for the integration.

\n
\n \n
\n
\n
\n
\n
\n

role_name [required]

\n
\n

string

\n

The path of the integration.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

path

\n
\n

string

\n

The archive path.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Type of the S3 archive destination. \nAllowed enum values: s3

default: s3

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

include_tags

\n
\n

boolean

\n

To store the tags in the archive, set the value "true".\nIf it is set to "false", the tags will be deleted when the logs are sent to the archive.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

The archive name.

\n
\n \n
\n
\n
\n
\n
\n

query [required]

\n
\n

string

\n

The archive query/filter. Logs matching this query are included in the archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_max_scan_size_in_gb

\n
\n

int64

\n

Maximum scan size for rehydration from this archive.

\n
\n \n
\n
\n
\n
\n
\n

rehydration_tags

\n
\n

[string]

\n

An array of tags to add to rehydrated logs from an archive.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The type of the resource. The value should always be archives.

default: archives

\n
\n \n
\n
\n
\n
" } }, "RemoveRoleFromArchive": { diff --git a/content/en/api/v2/security-monitoring/examples.json b/content/en/api/v2/security-monitoring/examples.json index 303a50a8b86b4..702fe0e274eb5 100644 --- a/content/en/api/v2/security-monitoring/examples.json +++ b/content/en/api/v2/security-monitoring/examples.json @@ -597,188 +597,993 @@ "html": "" } }, + "GetSignalNotificationRules": { + "responses": { + "200": { + "json": { + "data": [ + { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + ] + }, + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n
\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "CreateSignalNotificationRule": { + "responses": { + "201": { + "json": { + "data": { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "name": "Rule 1", + "selectors": { + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ] + }, + "type": "notification_rules" + } + }, + "json": { + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400 + }, + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule create request.

\n
\n
\n
\n
\n
\n

enabled

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + } + }, + "DeleteSignalNotificationRule": { + "responses": { + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetSignalNotificationRule": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "PatchSignalNotificationRule": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "422": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "selectors": { + "trigger_source": "security_findings" + } + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "json": { + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data of the notification rule patch request: the rule ID, the rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.

\n
\n
\n
\n
\n
\n

enabled

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + } + }, "ListVulnerabilities": { "responses": { "200": { "json": { - "data": [ - { - "attributes": { - "advisory_id": "TRIVY-CVE-2023-0615", - "code_location": { - "file_path": "src/Class.java:100", - "location": "com.example.Class:100", - "method": "FooBar" - }, - "cve_list": [ - "CVE-2023-0615" - ], - "cvss": { - "base": { - "score": 4.5, - "severity": "Medium", - "vector": "CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H" - }, - "datadog": { - "score": 4.5, - "severity": "Medium", - "vector": "CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H" - } - }, - "dependency_locations": { - "block": { - "column_end": 140, - "column_start": 5, - "file_name": "src/go.mod", - "line_end": 10, - "line_start": 1 - }, - "name": { - "column_end": 140, - "column_start": 5, - "file_name": "src/go.mod", - "line_end": 10, - "line_start": 1 - }, - "version": { - "column_end": 140, - "column_start": 5, - "file_name": "src/go.mod", - "line_end": 10, - "line_start": 1 - } - }, - "description": "LDAP Injection is a security vulnerability that occurs when untrusted user input is improperly handled and directly incorporated into LDAP queries without appropriate sanitization or validation. This vulnerability enables attackers to manipulate LDAP queries and potentially gain unauthorized access, modify data, or extract sensitive information from the directory server. By exploiting the LDAP injection vulnerability, attackers can execute malicious commands, bypass authentication mechanisms, and perform unauthorized actions within the directory service.", - "ecosystem": "string", - "exposure_time": 5618604, - "first_detection": "2024-09-19T21:23:08.000Z", - "fix_available": false, - "language": "ubuntu", - "last_detection": "2024-09-01T21:23:08.000Z", - "library": { - "name": "linux-aws-5.15", - "version": "5.15.0" - }, - "remediations": [ - { - "auto_solvable": false, - "avoided_advisories": [ - { - "base_severity": "Critical", - "id": "GHSA-4wrc-f8pq-fpqp", - "severity": "Medium" - } - ], - "fixed_advisories": [ - { - "base_severity": "Critical", - "id": "GHSA-4wrc-f8pq-fpqp", - "severity": "Medium" - } - ], - "library_name": "stdlib", - "library_version": "Upgrade to a version >= 1.20.0", - "new_advisories": [ - { - "base_severity": "Critical", - "id": "GHSA-4wrc-f8pq-fpqp", - "severity": "Medium" - } - ], - "remaining_advisories": [ - { - "base_severity": "Critical", - "id": "GHSA-4wrc-f8pq-fpqp", - "severity": "Medium" - } - ], - "type": "text" - } + "data": [ + { + "attributes": { + "advisory_id": "TRIVY-CVE-2023-0615", + "code_location": { + "file_path": "src/Class.java:100", + "location": "com.example.Class:100", + "method": "FooBar" + }, + "cve_list": [ + "CVE-2023-0615" + ], + "cvss": { + "base": { + "score": 4.5, + "severity": "Medium", + "vector": "CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H" + }, + "datadog": { + "score": 4.5, + "severity": "Medium", + "vector": "CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H" + } + }, + "dependency_locations": { + "block": { + "column_end": 140, + "column_start": 5, + "file_name": "src/go.mod", + "line_end": 10, + "line_start": 1 + }, + "name": { + "column_end": 140, + "column_start": 5, + "file_name": "src/go.mod", + "line_end": 10, + "line_start": 1 + }, + "version": { + "column_end": 140, + "column_start": 5, + "file_name": "src/go.mod", + "line_end": 10, + "line_start": 1 + } + }, + "description": "LDAP Injection is a security vulnerability that occurs when untrusted user input is improperly handled and directly incorporated into LDAP queries without appropriate sanitization or validation. This vulnerability enables attackers to manipulate LDAP queries and potentially gain unauthorized access, modify data, or extract sensitive information from the directory server. By exploiting the LDAP injection vulnerability, attackers can execute malicious commands, bypass authentication mechanisms, and perform unauthorized actions within the directory service.", + "ecosystem": "string", + "exposure_time": 5618604, + "first_detection": "2024-09-19T21:23:08.000Z", + "fix_available": false, + "language": "ubuntu", + "last_detection": "2024-09-01T21:23:08.000Z", + "library": { + "name": "linux-aws-5.15", + "version": "5.15.0" + }, + "remediations": [ + { + "auto_solvable": false, + "avoided_advisories": [ + { + "base_severity": "Critical", + "id": "GHSA-4wrc-f8pq-fpqp", + "severity": "Medium" + } + ], + "fixed_advisories": [ + { + "base_severity": "Critical", + "id": "GHSA-4wrc-f8pq-fpqp", + "severity": "Medium" + } + ], + "library_name": "stdlib", + "library_version": "Upgrade to a version >= 1.20.0", + "new_advisories": [ + { + "base_severity": "Critical", + "id": "GHSA-4wrc-f8pq-fpqp", + "severity": "Medium" + } + ], + "remaining_advisories": [ + { + "base_severity": "Critical", + "id": "GHSA-4wrc-f8pq-fpqp", + "severity": "Medium" + } + ], + "type": "text" + } + ], + "repo_digests": [ + "sha256:0ae7da091191787229d321e3638e39c319a97d6e20f927d465b519d699215bf7" + ], + "risks": { + "epss": { + "score": 0.2, + "severity": "Medium" + }, + "exploit_available": false, + "exploit_sources": [ + "NIST" + ], + "exploitation_probability": false, + "poc_exploit_available": false + }, + "status": "Open", + "title": "LDAP Injection", + "tool": "SCA", + "type": "WeakCipher" + }, + "id": "3ecdfea798f2ce8f6e964805a344945f", + "relationships": { + "affects": { + "data": { + "id": "Repository|github.com/DataDog/datadog-agent.git", + "type": "assets" + } + } + }, + "type": "vulnerabilities" + } + ], + "links": { + "first": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=1&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "last": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=15&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "next": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=16&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "previous": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=14&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "self": "https://api.datadoghq.com/api/v2/security/vulnerabilities?filter%5Btool%5D=Infra" + }, + "meta": { + "count": 150, + "token": "b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "total": 152431 + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of vulnerabilities.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The JSON:API attributes of the vulnerability.

\n
\n
\n
\n
\n
\n

advisory_id

\n
\n

string

\n

Vulnerability advisory ID.

\n
\n \n
\n
\n
\n
\n
\n

code_location

\n
\n

object

\n

Code vulnerability location.

\n
\n
\n
\n
\n
\n

file_path

\n
\n

string

\n

Vulnerability location file path.

\n
\n \n
\n
\n
\n
\n
\n

location [required]

\n
\n

string

\n

Vulnerability extracted location.

\n
\n \n
\n
\n
\n
\n
\n

method

\n
\n

string

\n

Vulnerability location method.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cve_list [required]

\n
\n

[string]

\n

Vulnerability CVE list.

\n
\n \n
\n
\n
\n
\n
\n

cvss [required]

\n
\n

object

\n

Vulnerability severities.

\n
\n
\n
\n
\n
\n

base [required]

\n
\n

object

\n

Vulnerability severity.

\n
\n
\n
\n
\n
\n

score [required]

\n
\n

double

\n

Vulnerability severity score.

\n
\n \n
\n
\n
\n
\n
\n

severity [required]

\n
\n

enum

\n

The vulnerability severity. \nAllowed enum values: Unknown,None,Low,Medium,High,Critical

\n
\n \n
\n
\n
\n
\n
\n

vector [required]

\n
\n

string

\n

Vulnerability CVSS vector.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

datadog [required]

\n
\n

object

\n

Vulnerability severity.

\n
\n
\n
\n
\n
\n

score [required]

\n
\n

double

\n

Vulnerability severity score.

\n
\n \n
\n
\n
\n
\n
\n

severity [required]

\n
\n

enum

\n

The vulnerability severity. \nAllowed enum values: Unknown,None,Low,Medium,High,Critical

\n
\n \n
\n
\n
\n
\n
\n

vector [required]

\n
\n

string

\n

Vulnerability CVSS vector.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

dependency_locations

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

block [required]

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

column_end [required]

\n
\n

int64

\n

Location column end.

\n
\n \n
\n
\n
\n
\n
\n

column_start [required]

\n
\n

int64

\n

Location column start.

\n
\n \n
\n
\n
\n
\n
\n

file_name [required]

\n
\n

string

\n

Location file name.

\n
\n \n
\n
\n
\n
\n
\n

line_end [required]

\n
\n

int64

\n

Location line end.

\n
\n \n
\n
\n
\n
\n
\n

line_start [required]

\n
\n

int64

\n

Location line start.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

column_end [required]

\n
\n

int64

\n

Location column end.

\n
\n \n
\n
\n
\n
\n
\n

column_start [required]

\n
\n

int64

\n

Location column start.

\n
\n \n
\n
\n
\n
\n
\n

file_name [required]

\n
\n

string

\n

Location file name.

\n
\n \n
\n
\n
\n
\n
\n

line_end [required]

\n
\n

int64

\n

Location line end.

\n
\n \n
\n
\n
\n
\n
\n

line_start [required]

\n
\n

int64

\n

Location line start.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

version

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

column_end [required]

\n
\n

int64

\n

Location column end.

\n
\n \n
\n
\n
\n
\n
\n

column_start [required]

\n
\n

int64

\n

Location column start.

\n
\n \n
\n
\n
\n
\n
\n

file_name [required]

\n
\n

string

\n

Location file name.

\n
\n \n
\n
\n
\n
\n
\n

line_end [required]

\n
\n

int64

\n

Location line end.

\n
\n \n
\n
\n
\n
\n
\n

line_start [required]

\n
\n

int64

\n

Location line start.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

description [required]

\n
\n

string

\n

Vulnerability description.

\n
\n \n
\n
\n
\n
\n
\n

ecosystem

\n
\n

enum

\n

The related vulnerability asset ecosystem. \nAllowed enum values: PyPI,Maven,NuGet,Npm,RubyGems,Go,Packagist,Ddeb,Rpm,Apk,Windows

\n
\n \n
\n
\n
\n
\n
\n

exposure_time [required]

\n
\n

int64

\n

Vulnerability exposure time in seconds.

\n
\n \n
\n
\n
\n
\n
\n

first_detection [required]

\n
\n

string

\n

First detection of the vulnerability in RFC 3339 format

\n
\n \n
\n
\n
\n
\n
\n

fix_available [required]

\n
\n

boolean

\n

Whether the vulnerability has a remediation or not.

\n
\n \n
\n
\n
\n
\n
\n

language [required]

\n
\n

string

\n

Vulnerability language.

\n
\n \n
\n
\n
\n
\n
\n

last_detection [required]

\n
\n

string

\n

Last detection of the vulnerability in RFC 3339 format

\n
\n \n
\n
\n
\n
\n
\n

library

\n
\n

object

\n

Vulnerability library.

\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Vulnerability library name.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

string

\n

Vulnerability library version.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

remediations [required]

\n
\n

[object]

\n

List of remediations.

\n
\n
\n
\n
\n
\n

auto_solvable [required]

\n
\n

boolean

\n

Whether the vulnerability can be resolved when recompiling the package or not.

\n
\n \n
\n
\n
\n
\n
\n

avoided_advisories [required]

\n
\n

[object]

\n

Avoided advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

fixed_advisories [required]

\n
\n

[object]

\n

Remediation fixed advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

library_name [required]

\n
\n

string

\n

Library name remediating the vulnerability.

\n
\n \n
\n
\n
\n
\n
\n

library_version [required]

\n
\n

string

\n

Library version remediating the vulnerability.

\n
\n \n
\n
\n
\n
\n
\n

new_advisories [required]

\n
\n

[object]

\n

New advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

remaining_advisories [required]

\n
\n

[object]

\n

Remaining advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

Remediation type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

repo_digests

\n
\n

[string]

\n

Vulnerability repo_digest list (when the vulnerability is related to Image asset).

\n
\n \n
\n
\n
\n
\n
\n

risks [required]

\n
\n

object

\n

Vulnerability risks.

\n
\n
\n
\n
\n
\n

epss

\n
\n

object

\n

Vulnerability EPSS severity.

\n
\n
\n
\n
\n
\n

score [required]

\n
\n

double

\n

Vulnerability EPSS severity score.

\n
\n \n
\n
\n
\n
\n
\n

severity [required]

\n
\n

enum

\n

The vulnerability severity. \nAllowed enum values: Unknown,None,Low,Medium,High,Critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

exploit_available [required]

\n
\n

boolean

\n

Vulnerability public exploit availability.

\n
\n \n
\n
\n
\n
\n
\n

exploit_sources [required]

\n
\n

[string]

\n

Vulnerability exploit sources.

\n
\n \n
\n
\n
\n
\n
\n

exploitation_probability [required]

\n
\n

boolean

\n

Vulnerability exploitation probability.

\n
\n \n
\n
\n
\n
\n
\n

poc_exploit_available [required]

\n
\n

boolean

\n

Vulnerability POC exploit availability.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The vulnerability status. \nAllowed enum values: Open,Muted,Remediated,InProgress,AutoClosed

\n
\n \n
\n
\n
\n
\n
\n

title [required]

\n
\n

string

\n

Vulnerability title.

\n
\n \n
\n
\n
\n
\n
\n

tool [required]

\n
\n

enum

\n

The vulnerability tool. \nAllowed enum values: IAST,SCA,Infra

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The vulnerability type. \nAllowed enum values: AdminConsoleActive,CodeInjection,CommandInjection,ComponentWithKnownVulnerability,DangerousWorkflows,DefaultAppDeployed,DefaultHtmlEscapeInvalid,DirectoryListingLeak,EmailHtmlInjection,EndOfLife,HardcodedPassword,HardcodedSecret,HeaderInjection,HstsHeaderMissing,InsecureAuthProtocol,InsecureCookie,InsecureJspLayout,LdapInjection,MaliciousPackage,MandatoryRemediation,NoHttpOnlyCookie,NoSameSiteCookie,NoSqlMongoDbInjection,PathTraversal,ReflectionInjection,RiskyLicense,SessionRewriting,SessionTimeout,SqlInjection,Ssrf,StackTraceLeak,TrustBoundaryViolation,Unmaintained,UntrustedDeserialization,UnvalidatedRedirect,VerbTampering,WeakCipher,WeakHash,WeakRandomness,XContentTypeHeaderMissing,XPathInjection,Xss

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The unique ID for this vulnerability.

\n
\n \n
\n
\n
\n
\n
\n

relationships [required]

\n
\n

object

\n

Related entities object.

\n
\n
\n
\n
\n
\n

affects [required]

\n
\n

object

\n

Relationship type.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Asset affected by this vulnerability.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The unique ID for this related asset.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The JSON:API type. \nAllowed enum values: assets

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The JSON:API type. \nAllowed enum values: vulnerabilities

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

links

\n
\n

object

\n

The JSON:API links related to pagination.

\n
\n
\n
\n
\n
\n

first [required]

\n
\n

string

\n

First page link.

\n
\n \n
\n
\n
\n
\n
\n

last [required]

\n
\n

string

\n

Last page link.

\n
\n \n
\n
\n
\n
\n
\n

next

\n
\n

string

\n

Next page link.

\n
\n \n
\n
\n
\n
\n
\n

previous

\n
\n

string

\n

Previous page link.

\n
\n \n
\n
\n
\n
\n
\n

self [required]

\n
\n

string

\n

Request link.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

The metadata related to this request.

\n
\n
\n
\n
\n
\n

count [required]

\n
\n

int64

\n

Number of entities included in the response.

\n
\n \n
\n
\n
\n
\n
\n

token [required]

\n
\n

string

\n

The token that identifies the request.

\n
\n \n
\n
\n
\n
\n
\n

total [required]

\n
\n

int64

\n

Total number of entities across all pages.

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetVulnerabilityNotificationRules": { + "responses": { + "200": { + "json": { + "data": [ + { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + ] + }, + "html": "
\n
\n
\n
\n

data

\n
\n

[object]

\n
\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "CreateVulnerabilityNotificationRule": { + "responses": { + "201": { + "json": { + "data": { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "name": "Rule 1", + "selectors": { + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ] + }, + "type": "notification_rules" + } + }, + "json": { + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400 + }, + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule create request.

\n
\n
\n
\n
\n
\n

enabled

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + } + }, + "DeleteVulnerabilityNotificationRule": { + "responses": { + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "GetVulnerabilityNotificationRule": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "403": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "PatchVulnerabilityNotificationRule": { + "responses": { + "200": { + "json": { + "data": { + "attributes": { + "created_at": 1722439510282, + "created_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "enabled": true, + "modified_at": 1722439510282, + "modified_by": { + "handle": "john.doe@domain.com", + "name": "John Doe" + }, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" ], - "repo_digests": [ - "sha256:0ae7da091191787229d321e3638e39c319a97d6e20f927d465b519d699215bf7" + "severities": [ + "critical" ], - "risks": { - "epss": { - "score": 0.2, - "severity": "Medium" - }, - "exploit_available": false, - "exploit_sources": [ - "NIST" - ], - "exploitation_probability": false, - "poc_exploit_available": false - }, - "status": "Open", - "title": "LDAP Injection", - "tool": "SCA", - "type": "WeakCipher" - }, - "id": "3ecdfea798f2ce8f6e964805a344945f", - "relationships": { - "affects": { - "data": { - "id": "Repository|github.com/DataDog/datadog-agent.git", - "type": "assets" - } - } + "trigger_source": "security_findings" }, - "type": "vulnerabilities" - } - ], - "links": { - "first": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=1&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "last": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=15&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "next": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=16&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "previous": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=14&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "self": "https://api.datadoghq.com/api/v2/security/vulnerabilities?filter%5Btool%5D=Infra" - }, - "meta": { - "count": 150, - "token": "b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "total": 152431 + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" } }, - "html": "
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of vulnerabilities.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The JSON:API attributes of the vulnerability.

\n
\n
\n
\n
\n
\n

advisory_id

\n
\n

string

\n

Vulnerability advisory ID.

\n
\n \n
\n
\n
\n
\n
\n

code_location

\n
\n

object

\n

Code vulnerability location.

\n
\n
\n
\n
\n
\n

file_path

\n
\n

string

\n

Vulnerability location file path.

\n
\n \n
\n
\n
\n
\n
\n

location [required]

\n
\n

string

\n

Vulnerability extracted location.

\n
\n \n
\n
\n
\n
\n
\n

method

\n
\n

string

\n

Vulnerability location method.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

cve_list [required]

\n
\n

[string]

\n

Vulnerability CVE list.

\n
\n \n
\n
\n
\n
\n
\n

cvss [required]

\n
\n

object

\n

Vulnerability severities.

\n
\n
\n
\n
\n
\n

base [required]

\n
\n

object

\n

Vulnerability severity.

\n
\n
\n
\n
\n
\n

score [required]

\n
\n

double

\n

Vulnerability severity score.

\n
\n \n
\n
\n
\n
\n
\n

severity [required]

\n
\n

enum

\n

The vulnerability severity. \nAllowed enum values: Unknown,None,Low,Medium,High,Critical

\n
\n \n
\n
\n
\n
\n
\n

vector [required]

\n
\n

string

\n

Vulnerability CVSS vector.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

datadog [required]

\n
\n

object

\n

Vulnerability severity.

\n
\n
\n
\n
\n
\n

score [required]

\n
\n

double

\n

Vulnerability severity score.

\n
\n \n
\n
\n
\n
\n
\n

severity [required]

\n
\n

enum

\n

The vulnerability severity. \nAllowed enum values: Unknown,None,Low,Medium,High,Critical

\n
\n \n
\n
\n
\n
\n
\n

vector [required]

\n
\n

string

\n

Vulnerability CVSS vector.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

dependency_locations

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

block [required]

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

column_end [required]

\n
\n

int64

\n

Location column end.

\n
\n \n
\n
\n
\n
\n
\n

column_start [required]

\n
\n

int64

\n

Location column start.

\n
\n \n
\n
\n
\n
\n
\n

file_name [required]

\n
\n

string

\n

Location file name.

\n
\n \n
\n
\n
\n
\n
\n

line_end [required]

\n
\n

int64

\n

Location line end.

\n
\n \n
\n
\n
\n
\n
\n

line_start [required]

\n
\n

int64

\n

Location line start.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

column_end [required]

\n
\n

int64

\n

Location column end.

\n
\n \n
\n
\n
\n
\n
\n

column_start [required]

\n
\n

int64

\n

Location column start.

\n
\n \n
\n
\n
\n
\n
\n

file_name [required]

\n
\n

string

\n

Location file name.

\n
\n \n
\n
\n
\n
\n
\n

line_end [required]

\n
\n

int64

\n

Location line end.

\n
\n \n
\n
\n
\n
\n
\n

line_start [required]

\n
\n

int64

\n

Location line start.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

version

\n
\n

object

\n

Static library vulnerability location.

\n
\n
\n
\n
\n
\n

column_end [required]

\n
\n

int64

\n

Location column end.

\n
\n \n
\n
\n
\n
\n
\n

column_start [required]

\n
\n

int64

\n

Location column start.

\n
\n \n
\n
\n
\n
\n
\n

file_name [required]

\n
\n

string

\n

Location file name.

\n
\n \n
\n
\n
\n
\n
\n

line_end [required]

\n
\n

int64

\n

Location line end.

\n
\n \n
\n
\n
\n
\n
\n

line_start [required]

\n
\n

int64

\n

Location line start.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

description [required]

\n
\n

string

\n

Vulnerability description.

\n
\n \n
\n
\n
\n
\n
\n

ecosystem

\n
\n

enum

\n

The related vulnerability asset ecosystem. \nAllowed enum values: PyPI,Maven,NuGet,Npm,RubyGems,Go,Packagist,Ddeb,Rpm,Apk,Windows

\n
\n \n
\n
\n
\n
\n
\n

exposure_time [required]

\n
\n

int64

\n

Vulnerability exposure time in seconds.

\n
\n \n
\n
\n
\n
\n
\n

first_detection [required]

\n
\n

string

\n

First detection of the vulnerability in RFC 3339 format

\n
\n \n
\n
\n
\n
\n
\n

fix_available [required]

\n
\n

boolean

\n

Whether the vulnerability has a remediation or not.

\n
\n \n
\n
\n
\n
\n
\n

language [required]

\n
\n

string

\n

Vulnerability language.

\n
\n \n
\n
\n
\n
\n
\n

last_detection [required]

\n
\n

string

\n

Last detection of the vulnerability in RFC 3339 format

\n
\n \n
\n
\n
\n
\n
\n

library

\n
\n

object

\n

Vulnerability library.

\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Vulnerability library name.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

string

\n

Vulnerability library version.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

remediations [required]

\n
\n

[object]

\n

List of remediations.

\n
\n
\n
\n
\n
\n

auto_solvable [required]

\n
\n

boolean

\n

Whether the vulnerability can be resolved when recompiling the package or not.

\n
\n \n
\n
\n
\n
\n
\n

avoided_advisories [required]

\n
\n

[object]

\n

Avoided advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

fixed_advisories [required]

\n
\n

[object]

\n

Remediation fixed advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

library_name [required]

\n
\n

string

\n

Library name remediating the vulnerability.

\n
\n \n
\n
\n
\n
\n
\n

library_version [required]

\n
\n

string

\n

Library version remediating the vulnerability.

\n
\n \n
\n
\n
\n
\n
\n

new_advisories [required]

\n
\n

[object]

\n

New advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

remaining_advisories [required]

\n
\n

[object]

\n

Remaining advisories.

\n
\n
\n
\n
\n
\n

base_severity [required]

\n
\n

string

\n

Advisory base severity.

\n
\n \n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

Advisory id.

\n
\n \n
\n
\n
\n
\n
\n

severity

\n
\n

string

\n

Advisory Datadog severity.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

Remediation type.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

repo_digests

\n
\n

[string]

\n

Vulnerability repo_digest list (when the vulnerability is related to Image asset).

\n
\n \n
\n
\n
\n
\n
\n

risks [required]

\n
\n

object

\n

Vulnerability risks.

\n
\n
\n
\n
\n
\n

epss

\n
\n

object

\n

Vulnerability EPSS severity.

\n
\n
\n
\n
\n
\n

score [required]

\n
\n

double

\n

Vulnerability EPSS severity score.

\n
\n \n
\n
\n
\n
\n
\n

severity [required]

\n
\n

enum

\n

The vulnerability severity. \nAllowed enum values: Unknown,None,Low,Medium,High,Critical

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

exploit_available [required]

\n
\n

boolean

\n

Vulnerability public exploit availability.

\n
\n \n
\n
\n
\n
\n
\n

exploit_sources [required]

\n
\n

[string]

\n

Vulnerability exploit sources.

\n
\n \n
\n
\n
\n
\n
\n

exploitation_probability [required]

\n
\n

boolean

\n

Vulnerability exploitation probability.

\n
\n \n
\n
\n
\n
\n
\n

poc_exploit_available [required]

\n
\n

boolean

\n

Vulnerability POC exploit availability.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The vulnerability status. \nAllowed enum values: Open,Muted,Remediated,InProgress,AutoClosed

\n
\n \n
\n
\n
\n
\n
\n

title [required]

\n
\n

string

\n

Vulnerability title.

\n
\n \n
\n
\n
\n
\n
\n

tool [required]

\n
\n

enum

\n

The vulnerability tool. \nAllowed enum values: IAST,SCA,Infra

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The vulnerability type. \nAllowed enum values: AdminConsoleActive,CodeInjection,CommandInjection,ComponentWithKnownVulnerability,DangerousWorkflows,DefaultAppDeployed,DefaultHtmlEscapeInvalid,DirectoryListingLeak,EmailHtmlInjection,EndOfLife,HardcodedPassword,HardcodedSecret,HeaderInjection,HstsHeaderMissing,InsecureAuthProtocol,InsecureCookie,InsecureJspLayout,LdapInjection,MaliciousPackage,MandatoryRemediation,NoHttpOnlyCookie,NoSameSiteCookie,NoSqlMongoDbInjection,PathTraversal,ReflectionInjection,RiskyLicense,SessionRewriting,SessionTimeout,SqlInjection,Ssrf,StackTraceLeak,TrustBoundaryViolation,Unmaintained,UntrustedDeserialization,UnvalidatedRedirect,VerbTampering,WeakCipher,WeakHash,WeakRandomness,XContentTypeHeaderMissing,XPathInjection,Xss

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The unique ID for this vulnerability.

\n
\n \n
\n
\n
\n
\n
\n

relationships [required]

\n
\n

object

\n

Related entities object.

\n
\n
\n
\n
\n
\n

affects [required]

\n
\n

object

\n

Relationship type.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Asset affected by this vulnerability.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The unique ID for this related asset.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The JSON:API type. \nAllowed enum values: assets

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The JSON:API type. \nAllowed enum values: vulnerabilities

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

links

\n
\n

object

\n

The JSON:API links related to pagination.

\n
\n
\n
\n
\n
\n

first [required]

\n
\n

string

\n

First page link.

\n
\n \n
\n
\n
\n
\n
\n

last [required]

\n
\n

string

\n

Last page link.

\n
\n \n
\n
\n
\n
\n
\n

next

\n
\n

string

\n

Next page link.

\n
\n \n
\n
\n
\n
\n
\n

previous

\n
\n

string

\n

Previous page link.

\n
\n \n
\n
\n
\n
\n
\n

self [required]

\n
\n

string

\n

Request link.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

The metadata related to this request.

\n
\n
\n
\n
\n
\n

count [required]

\n
\n

int64

\n

Number of entities included in the response.

\n
\n \n
\n
\n
\n
\n
\n

token [required]

\n
\n

string

\n

The token that identifies the request.

\n
\n \n
\n
\n
\n
\n
\n

total [required]

\n
\n

int64

\n

Total number of entities across all pages.

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

created_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

enabled [required]

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

int64

\n

Date as Unix timestamp in milliseconds.

\n
\n \n
\n
\n
\n
\n
\n

modified_by [required]

\n
\n

object

\n

User creating or modifying a rule.

\n
\n
\n
\n
\n
\n

handle

\n
\n

string

\n

The user handle.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

The user name.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

name [required]

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors [required]

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets [required]

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version [required]

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" }, "400": { "json": { "errors": [ - { - "detail": "Missing required attribute in body", - "meta": {}, - "source": { - "header": "Authorization", - "parameter": "limit", - "pointer": "/data/attributes/title" - }, - "status": "400", - "title": "Bad Request" - } + "Bad Request" ] }, - "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" }, "403": { "json": { "errors": [ - { - "detail": "Missing required attribute in body", - "meta": {}, - "source": { - "header": "Authorization", - "parameter": "limit", - "pointer": "/data/attributes/title" - }, - "status": "400", - "title": "Bad Request" - } + "Bad Request" ] }, - "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" }, "404": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + }, + "422": { "json": { "errors": [ { @@ -806,9 +1611,44 @@ } }, "request": { - "json_curl": {}, - "json": {}, - "html": "" + "json_curl": { + "data": { + "attributes": { + "selectors": { + "trigger_source": "security_findings" + } + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "json": { + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } + }, + "html": "
\n
\n
\n
\n

data

\n
\n

object

\n

Data of the notification rule patch request: the rule ID, the rule type, and the rule attributes. All fields are required.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.

\n
\n
\n
\n
\n
\n

enabled

\n
\n

boolean

\n

Field used to enable or disable the rule.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n

Name of the notification rule.

\n
\n \n
\n
\n
\n
\n
\n

selectors

\n
\n

object

\n

Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.

\n
\n
\n
\n
\n
\n

query

\n
\n

string

\n

The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.

\n
\n \n
\n
\n
\n
\n
\n

rule_types

\n
\n

[string]

\n

Security rule types used to filter signals and vulnerabilities generating notifications.

\n
\n \n
\n
\n
\n
\n
\n

severities

\n
\n

[string]

\n

The security rules severities to consider.

\n
\n \n
\n
\n
\n
\n
\n

trigger_source [required]

\n
\n

enum

\n

The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source "security_signals",\nwhile notification rules based on security vulnerabilities need to use the trigger source "security_findings". \nAllowed enum values: security_findings,security_signals

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

targets

\n
\n

[string]

\n

List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.

\n
\n \n
\n
\n
\n
\n
\n

time_aggregation

\n
\n

int64

\n

Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.

\n
\n \n
\n
\n
\n
\n
\n

version

\n
\n

int64

\n

Version of the notification rule. It is updated when the rule is modified.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

string

\n

The ID of a notification rule.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

The rule type associated to notification rules. \nAllowed enum values: notification_rules

\n
\n \n
\n
\n
\n
" } }, "ListSecurityFilters": { diff --git a/content/en/api/v2/security-monitoring/request.CreateSignalNotificationRule.json b/content/en/api/v2/security-monitoring/request.CreateSignalNotificationRule.json new file mode 100644 index 0000000000000..3c60353e8769a --- /dev/null +++ b/content/en/api/v2/security-monitoring/request.CreateSignalNotificationRule.json @@ -0,0 +1,24 @@ +{ + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400 + }, + "type": "notification_rules" + } +} \ No newline at end of file diff --git a/content/en/api/v2/security-monitoring/request.CreateVulnerabilityNotificationRule.json b/content/en/api/v2/security-monitoring/request.CreateVulnerabilityNotificationRule.json new file mode 100644 index 0000000000000..3c60353e8769a --- /dev/null +++ b/content/en/api/v2/security-monitoring/request.CreateVulnerabilityNotificationRule.json @@ -0,0 +1,24 @@ +{ + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400 + }, + "type": "notification_rules" + } +} \ No newline at end of file diff --git a/content/en/api/v2/security-monitoring/request.PatchSignalNotificationRule.json b/content/en/api/v2/security-monitoring/request.PatchSignalNotificationRule.json new file mode 100644 index 0000000000000..634cf0a71fe5e --- /dev/null +++ b/content/en/api/v2/security-monitoring/request.PatchSignalNotificationRule.json @@ -0,0 +1,26 @@ +{ + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } +} \ No newline at end of file diff --git a/content/en/api/v2/security-monitoring/request.PatchVulnerabilityNotificationRule.json b/content/en/api/v2/security-monitoring/request.PatchVulnerabilityNotificationRule.json new file mode 100644 index 0000000000000..634cf0a71fe5e --- /dev/null +++ b/content/en/api/v2/security-monitoring/request.PatchVulnerabilityNotificationRule.json @@ -0,0 +1,26 @@ +{ + "data": { + "attributes": { + "enabled": true, + "name": "Rule 1", + "selectors": { + "query": "(source:production_service OR env:prod)", + "rule_types": [ + "misconfiguration", + "attack_path" + ], + "severities": [ + "critical" + ], + "trigger_source": "security_findings" + }, + "targets": [ + "@john.doe@email.com" + ], + "time_aggregation": 86400, + "version": 1 + }, + "id": "aaa-bbb-ccc", + "type": "notification_rules" + } +} \ No newline at end of file diff --git a/content/en/bits_ai/_index.md b/content/en/bits_ai/_index.md index cca81a37d38e7..79a05024874d9 100644 --- a/content/en/bits_ai/_index.md +++ b/content/en/bits_ai/_index.md @@ -21,6 +21,10 @@ further_reading: text: "Reimagining the way you run operations with autonomous investigations" --- +{{< site-region region="gov" >}} +Bits AI is not available for the selected site ({{< region-param key="dd_site_name" >}}). +{{< /site-region >}} + Bits AI is a platform-wide copilot that helps you identify and remediate issues in your applications and infrastructure. You can query Bits AI in the Datadog web app, the Datadog mobile app, and in Slack. For detailed setup and usage instructions, see the [Getting Started][1] documentation. diff --git a/content/en/change_tracking/_index.md b/content/en/change_tracking/_index.md index 1d5a4e278743e..0dc10b0b5103d 100644 --- a/content/en/change_tracking/_index.md +++ b/content/en/change_tracking/_index.md @@ -128,11 +128,30 @@ Change Tracking follows these types of changes across your infrastructure: ### Optional enrichment for feature flag changes Change Tracking offers an optional way to enhance visibility into feature flag changes by automatically detecting affected services when tracing is set up for the feature flag client. This enhancement enables faster and more precise root cause analysis, especially when feature flag changes impact multiple services. -#### To enable auto-enrichment of feature flag changes: +#### To enable auto-enrichment of feature flag changes + +Auto-enrichment helps you identify which services are affected by feature flag changes by automatically detecting service dependencies through tracing. To set this up: + 1. Add tracing around your feature flag client code. 2. Name the trace operation **experiments.IsEnabled**. 3. Add a tag called **experiment_id**. Set its value to match the ID of the relevant feature flag. +#### To toggle LaunchDarkly feature flags from the details panel + +If you discover that a feature flag change is causing issues, you can remediate it by toggling the flag directly from the Change Tracking side panel. + +
This feature is powered by Workflow Automation and is subject to Workflow Automation pricing.
+ +To enable and use this feature: + +1. Set up workflow connections following the [Workflow Connections documentation][11]. +1. Navigate to the service page you want to investigate. +1. Locate the changes timeline in the **Service Summary** section. +1. Click any feature flag change in the Change Tracking timeline to open the details panel. + {{< img src="/change_tracking/feature-flag-toggle.png" alt="Click feature flag events to view more detail and toggle the feature flag." style="width:90%;" >}} + +1. Click **Toggle Feature Flag** to turn the feature flag on or off. + ## Further reading {{< partial name="whats-next/whats-next.html" >}} @@ -146,4 +165,5 @@ Change Tracking offers an optional way to enhance visibility into feature flag c [7]: /watchdog/ [8]: /database_monitoring/ [9]: /data_streams/ -[10]: /database_monitoring/connect_dbm_and_apm/ \ No newline at end of file +[10]: /database_monitoring/connect_dbm_and_apm/ +[11]: /service_management/workflows/connections/#work-with-connections \ No newline at end of file diff --git a/content/en/cloud_cost_management/azure.md b/content/en/cloud_cost_management/azure.md index f0467cdce6d4e..702e209435119 100644 --- a/content/en/cloud_cost_management/azure.md +++ b/content/en/cloud_cost_management/azure.md @@ -17,7 +17,7 @@ further_reading: To use Azure Cloud Cost Management in Datadog, you must set up the Datadog Azure integration and set up **amortized** and **actual** exports in Azure. Additionally, Datadog must have permissions to read the exports from the container. -Datadog provides cost visibility on a Subscription, Resource Group, and Billing Account Level. Microsoft Customer Agreements (MCA) can only set up at the Subscription or Resource Group level. Pay as you go (PAYG) and CSP accounts are not supported. +Datadog provides cost visibility on a Subscription, Resource Group, and Billing Account Level. Microsoft Customer Agreements (MCA) can be set up at all three scopes. Pay as you go (PAYG) and CSP accounts are not supported. ## Setup diff --git a/content/en/cloud_cost_management/datadog_costs/_index.md b/content/en/cloud_cost_management/datadog_costs/_index.md index d3842050340e5..ac07ec83807bb 100644 --- a/content/en/cloud_cost_management/datadog_costs/_index.md +++ b/content/en/cloud_cost_management/datadog_costs/_index.md @@ -37,7 +37,7 @@ Daily Datadog costs give you visibility into daily Datadog spending across dashb You can view daily Datadog costs in [Cloud Cost Management][1], and access additional [Datadog costs capabilities][7] like [Cost Summary][9] and [Cost Chargebacks][10] on the [**Usage & Cost** page][4]. -Please note that there is **no additional charge** for Datadog Costs. +There is **no additional charge** for Datadog Costs, and it is available for both CCM and non-CCM customers. ## Permissions diff --git a/content/en/code_analysis/_index.md b/content/en/code_analysis/_index.md deleted file mode 100644 index f7d23494c5e0a..0000000000000 --- a/content/en/code_analysis/_index.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: Code Analysis -description: Learn how to use Datadog Code Analysis to address maintainability issues, bugs, and security vulnerabilities in development to prevent customer impact. -is_beta: false -aliases: -- /code_analysis/faq -further_reading: -- link: "https://app.datadoghq.com/release-notes?category=Software%20Delivery" - tag: "Release Notes" - text: "Check out the latest Software Delivery releases! (App login required)" -- link: "https://www.datadoghq.com/blog/monitor-ci-pipelines/" - tag: "Blog" - text: "Monitor all your CI pipelines with Datadog" -- link: "/integrations/guide/source-code-integration/" - tag: "Documentation" - text: "Learn about the Source Code Integration" -- link: "/code_analysis/static_analysis" - tag: "Documentation" - text: "Learn about Static Analysis" -- link: "/security/application_security/software_composition_analysis" - tag: "Documentation" - text: "Learn about Software Composition Analysis" -algolia: - tags: ['code analysis', 'datadog code analysis', 'static analysis', 'software composition analysis', 'SAST', 'SCA'] ---- - -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - -{{% site-region region="gov" %}} -
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. -
-{{% /site-region %}} - -## Overview - -
Datadog Software Composition Analysis can find vulnerable libraries across the software development lifecycle (SDLC). Code Analysis summarizes results found by directly scanning your repositories. To view all vulnerabilities found in repositories and at runtime consolidated together, see Application Security for more details.
- -Code Analysis scans your repositories to find security vulnerabilities and code quality issues. It encompasses two capabilities: [Static Analysis][1] for your first-party code, and [Software Composition Analysis (SCA)][2] for open-source dependencies in your codebase. - -Static Analysis -: Scans your bespoke code for maintainability issues, bugs, performance issues, and security vulnerabilities early in the development lifecycle to catch issues from reaching production and, when possible, provide suggested fixes to help engineering teams address these issues before they impact users. - -Software Composition Analysis -: Scans the open source libraries that are imported into your repositories for known security vulnerabilities, license risks, and end-of-life libraries. - - -## Set up Code Analysis on your repository - -Click **+ Add a Repository** on the [**Code Analysis Repositories** page][9] and choose to run the scans directly in Datadog or in your CI pipelines. - -{{< tabs >}} -{{% tab "Datadog" %}} - -
Datadog-hosted scans are supported by Software Composition Analysis (SCA) and GitHub repositories only. To enable Static Analysis or use a different CI provider, run scans in your CI pipelines instead.
- -With Datadog-hosted scans, your code is scanned within Datadog's infrastructure as opposed to within your CI pipeline. Datadog reads your code, runs the static analyzer to perform Static Analysis and/or Software Composition Analysis, and uploads the results. - -Using Datadog-hosted scans eliminates the need for you to configure a CI pipeline so you can use Code Analysis. - -To enable [Software Composition Analysis][101] on GitHub repositories, click **Select Repositories** on your desired GitHub account and click the toggle for `Enable Software Composition Analysis (SCA)` to enable for all repositories. If you don't see any GitHub accounts listed, [create a new GitHub App][102] to get started. - -{{< img src="code_analysis/setup/enable_account.png" alt="Enable Software Composition Analysis on all repositories for your GitHub account" style="width:100%;">}} - -Optionally, you can select specific GitHub repositories to enable SCA by clicking the toggle for each repository. - -{{< img src="code_analysis/setup/enable_repository.png" alt="Enable Software Composition Analysis on a GitHub repository" style="width:100%;">}} - -[101]: /code_analysis/software_composition_analysis -[102]: /integrations/github/ - -{{% /tab %}} -{{% tab "CI Pipelines" %}} - -If you do not want to run your scans directly through Datadog, you can select which scans you'd like to run ([Static Analysis][106] and [Software Composition Analysis][107]) and configure your CI pipeline provider accordingly. - -## Configure your CI/CD provider - -See the following documentation to configure your CI/CD provider to run Static Analysis and SCA scans: - -- [Static Analysis and GitHub Actions][101] -- [Static Analysis and CircleCI Orbs][102] -- [Static Analysis and Generic CI Providers][103] -- [Software Composition Analysis and GitHub Actions][104] -- [Software Composition Analysis and Generic CI Providers][105] - -[101]: /code_analysis/static_analysis/github_actions -[102]: /code_analysis/static_analysis/circleci_orbs -[103]: /code_analysis/static_analysis/generic_ci_providers -[104]: /code_analysis/software_composition_analysis/github_actions -[105]: /code_analysis/software_composition_analysis/generic_ci_providers -[106]: /code_analysis/static_analysis -[107]: /code_analysis/software_composition_analysis - -{{% /tab %}} -{{< /tabs >}} - -## Set up the GitHub integration - -You can configure a GitHub App by using the [GitHub integration tile][7] and setting up the [source code integration][8] to see the offending code snippets as part of the Static Analysis results in Datadog. - -{{< img src="code_analysis/source_code_integration.png" alt="Link to GitHub from the Code Analysis view" style="width:100%;">}} - -For more information, see the [Source Code Integration documentation][10]. - -## Static Analysis integrations - -With Static Analysis, you can receive automated feedback on poor coding practices and security vulnerabilities on the code you write [directly in an IDE][11] such as [VS Code][3] or [IntelliJ & PyCharm][4], and in your [pull requests on GitHub][5]. - -{{< img src="developers/ide_plugins/vscode/static-analysis-issue.png" alt="A Static Analysis result in Visual Studio Code" style="width:100%;">}} - -## Search and manage repositories - -After you have configured Code Analysis, you can see a summary of the results from the Static Analysis and SCA scans for each of your repositories on the [**Code Analysis** page][9]. By default, the summarized results are shown for the latest scanned commit on the default branch of the repository, which ensures that you are seeing all the existing problems on each repository that you may want to triage and fix. - -{{< img src="code_analysis/repositories.png" alt="A list of repositories with code and library scan results on the Code Analysis page" style="width:100%;">}} - -Select a repository from the list to search through and manage violations for that specific repository. By default, results are shown for the latest scanned commit on the default branch of the repository, but you may change the branch or commit at the top of the page. Results can also be filtered by service or team facets. For more information about how results are linked to Datadog services and teams, see [Getting Started with Code Analysis][12]. - -Regardless of the selected branch or commit, all results are organized into the following views: - -{{< tabs >}} -{{% tab "Code Vulnerabilities" %}} - -{{< img src="code_analysis/shopist_code_vulnerabilities.png" alt="Code vulnerabilities on the Code Analysis page for the Datadog Shopist service and repository" style="width:100%;">}} - -Identify and address code security risks detected by Static Analysis in the **Code Vulnerabilities** view. - -{{% /tab %}} -{{% tab "Code Quality" %}} - -{{< img src="code_analysis/shopist_code_quality.png" alt="Code quality vulnerabilities on the Code Analysis page for the Datadog Shopist service and repository" style="width:100%;">}} - -Identify and address poor coding practices detected by Static Analysis in the **Code Quality** view. - -{{% /tab %}} -{{% tab "Library Vulnerabilities" %}} - -{{< img src="code_analysis/shopist_lib_vulnerabilities.png" alt="Library vulnerabilities on the Code Analysis page for the Datadog Shopist service and repository" style="width:100%;">}} - -Identify and address vulnerable open source libraries detected by SCA in the **Library Vulnerabilities** view. - -{{% /tab %}} -{{% tab "Library Catalog" %}} - -{{< img src="code_analysis/shopist_lib_list.png" alt="A list of libraries on the Code Analysis page for the Datadog Shopist service and repository" style="width:100%;">}} - -Manage the full list of libraries detected by SCA that have imported into your codebase in the **Library Catalog** view. - -{{% /tab %}} -{{< /tabs >}} - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /code_analysis/static_analysis -[2]: /code_analysis/software_composition_analysis -[3]: /developers/ide_plugins/vscode/#static-analysis -[4]: /developers/ide_plugins/idea/#static-analysis -[5]: /code_analysis/github_pull_requests/ -[6]: /code_analysis/static_analysis_rules -[7]: /integrations/github/#link-a-repository-in-your-organization-or-personal-account -[8]: /integrations/guide/source-code-integration -[9]: https://app.datadoghq.com/ci/code-analysis -[10]: /integrations/guide/source-code-integration/?tab=codeanalysis -[11]: /code_analysis/ide_plugins/ -[12]: /getting_started/code_analysis/?tab=incipipelines#linking-services-to-code-violations-and-libraries diff --git a/content/en/code_analysis/software_composition_analysis/_index.md b/content/en/code_analysis/software_composition_analysis/_index.md deleted file mode 100644 index 6e06894e57be0..0000000000000 --- a/content/en/code_analysis/software_composition_analysis/_index.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Software Composition Analysis (SCA) -description: Learn about Datadog Software Composition Analysis to scan your imported open-source libraries for known security vulnerabilities before you ship to production. -is_beta: false -further_reading: -- link: "https://www.datadoghq.com/blog/iast-datadog-application-vulnerability-management/" - tag: "Blog" - text: "Enhance application security in production with Software Composition Analysis" -- link: "https://www.datadoghq.com/blog/sca-prioritize-vulnerabilities/" - tag: "Blog" - text: "Prioritize vulnerability remediation with Datadog SCA" -- link: "/getting_started/application_security/software_composition_analysis" - tag: "Documentation" - text: "Getting Started with Software Composition Analysis" -- link: "/security/application_security/software_composition_analysis/" - tag: "Documentation" - text: "Learn about Software Composition Analysis" -- link: "/integrations/guide/source-code-integration/" - tag: "Documentation" - text: "Learn about the Source Code Integration" -algolia: - tags: ['software composition analysis', 'datadog software composition analysis', 'library vulnerabilities', 'SCA'] ---- - -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Software Composition Analysis is in Preview. -{{< /callout >}} - -{{% site-region region="gov" %}} -
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. -
-{{% /site-region %}} - -## Overview - -Software Composition Analysis (SCA) scans open source libraries imported into repositories through package managers such as `npm` for [known vulnerabilities][1], and creates a catalog of libraries used across your repositories that identifies risky licenses, end-of-life libraries, and vulnerabilities to ensure a high quality, secure codebase. - -SCA scans can be run directly through Datadog or in your CI pipelines using [Code Analysis][3] to detect library vulnerabilities before they reach production. Datadog also offers runtime detection through [Datadog Application Security][1]. - -## Set up Software Composition Analysis - -SCA supports scanning for libraries in the following languages and technologies: - -{{< partial name="code_analysis/sca-getting-started.html" >}} - -To get started, set up Software Composition Analysis on the [**Code Analysis** page][2] or see the [Setup documentation][3]. - -### Lockfiles - -SCA scans libraries contained in your lockfiles. The following lockfiles are supported: - -| Package Manager | Lockfile | -|-----------------|------------------------------------------| -| C# (.NET) | `packages.lock.json` | -| Go (mod) | `go.mod` | -| JVM (Gradle) | `gradle.lockfile` | -| JVM (Maven) | `pom.xml` | -| Node.js (npm) | `package-lock.json` | -| Node.js (pnpm) | `pnpm-lock.yaml` | -| Node.js (yarn) | `yarn.lock` | -| PHP (composer) | `composer.lock` | -| Python (pip) | `requirements.txt`, `Pipfile.lock` | -| Python (poetry) | `poetry.lock` | -| Ruby (bundler) | `Gemfile.lock` | - -## Integrate Software Composition Analysis into your software development lifecycle - -### CI providers -{{< whatsnext desc="You can run SCA on any CI platform provider of your choice. See provider-specific documentation to set up SCA in your CI pipelines:">}} - {{< nextlink href="code_analysis/software_composition_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} - {{< nextlink href="code_analysis/software_composition_analysis/generic_ci_providers" >}}Generic CI Providers{{< /nextlink >}} -{{< /whatsnext >}} - -## Search and filter results - -
Datadog Software Composition Analysis can find vulnerable libraries across the software development lifecycle (SDLC). Code Analysis summarizes results found by directly scanning your repositories. To view all vulnerabilities found in repositories and at runtime consolidated together, see Application Security for more details.
- -After you configure your CI pipelines to run Datadog SCA, violations are summarized per repository on the [**Code Analysis Repositories** page][4]. Click on a repository to analyze **Library Vulnerabilities** and **Library Catalog** results from Software Composition Analysis. - -* The **Library Vulnerabilities** tab contains the vulnerable library versions found by Datadog SCA. -* The **Library Catalog** tab contains all of the libraries (vulnerable or not) found by Datadog SCA. - -To filter your results, use the facets to the left of the list or the search bar at the top. Results can be filtered by service or team facets. For more information about how results are linked to Datadog services and teams, see [Getting Started with Code Analysis][5]. - -Every row represents a unique library and version combination. Each combination is associated with the specific commit and branch that is selected in the filters at the top of the page (by default, the latest commit on the default branch of the repository you selected). - -Click on a library with a vulnerability to open a side panel that contains information about the scope of the violation and where it originated. - -{{< img src="code_analysis/software_composition_analysis/sca-violation.png" alt="Side panel for a SCA violation" style="width:80%;">}} - -The content of the violation is shown in tabs: - -- **Full Description**: A description of the vulnerability contained within this specific version of the library. -- **Event**: JSON metadata regarding the SCA violation event. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /security/application_security/software_composition_analysis/ -[2]: https://app.datadoghq.com/ci/setup/code-analysis -[3]: /code_analysis/software_composition_analysis/setup -[4]: https://app.datadoghq.com/ci/code-analysis -[5]: /getting_started/code_analysis/?tab=datadoghosted#linking-services-to-code-violations-and-libraries diff --git a/content/en/code_analysis/software_composition_analysis/generic_ci_providers.md b/content/en/code_analysis/software_composition_analysis/generic_ci_providers.md deleted file mode 100644 index 7b3fd8b1538c0..0000000000000 --- a/content/en/code_analysis/software_composition_analysis/generic_ci_providers.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Generic CI Providers -description: Learn how to run the Datadog CLI directly in your CI pipeline to configure environment variables, install dependencies, and scan code for quality and security issues before they reach production. -is_beta: false -further_reading: -- link: "https://www.datadoghq.com/blog/monitor-ci-pipelines/" - tag: "Blog" - text: "Monitor all your CI pipelines with Datadog" -algolia: - tags: ['software composition analysis', 'ci pipeline', 'SCA'] ---- - -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - -{{% site-region region="gov" %}} -
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. -
-{{% /site-region %}} - -## Overview - -If you don't use GitHub Actions, you can run the Datadog CLI directly in your CI pipeline platform. - -Prerequisites: - -- unzip -- Node.js 14 or later - -Configure the following environment variables: - -| Name | Description | Required | Default | -|--------------|----------------------------------------------------------------------------------------------------------------------------|----------|-----------------| -| `DD_API_KEY` | Your Datadog API key. This key is created by your [Datadog organization][1] and should be stored as a secret. | Yes | | -| `DD_APP_KEY` | Your Datadog application key. This key, created by your [Datadog organization][2], should include the `code_analysis_read` scope and be stored as a secret. | Yes | | -| `DD_SITE` | The [Datadog site][3] to send information to. Your Datadog site is {{< region-param key="dd_site" code="true" >}}. | No | `datadoghq.com` | - -Provide the following inputs: - -| Name | Description | Required | Default | -|----------------|----------------------------------------------------------------------------------------------------------------------------|----------|-----------------| -| `service` | The name of the service to tag the results with. | Yes | | -| `env` | The environment to tag the results with. `ci` is a helpful value for this input. | No | `none` | -| `subdirectory` | The subdirectory path the analysis should be limited to. The path is relative to the root directory of the repository. | No | | - -```bash -# Set the Datadog site to send information to -export DD_SITE="{{< region-param key="dd_site" code="true" >}}" - -# Install dependencies -npm install -g @datadog/datadog-ci - -# Download the latest Datadog OSV Scanner: -# https://github.com/DataDog/osv-scanner/releases -DATADOG_OSV_SCANNER_URL=https://github.com/DataDog/osv-scanner/releases/latest/download/osv-scanner_linux_amd64.zip - -# Install OSV Scanner -mkdir /osv-scanner -curl -L -o /osv-scanner/osv-scanner.zip $DATADOG_OSV_SCANNER_URL -unzip /osv-scanner/osv-scanner.zip -d /osv-scanner -chmod 755 /osv-scanner/osv-scanner - -# Run OSV Scanner and scan your dependencies -/osv-scanner/osv-scanner --skip-git -r --experimental-only-packages --format=cyclonedx-1-5 --paths-relative-to-scan-dir --output=/tmp/sbom.json /path/to/repository - -# Upload results to Datadog -datadog-ci sbom upload /tmp/sbom.json -``` - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /account_management/api-app-keys/#api-keys -[2]: /account_management/api-app-keys/#application-keys -[3]: /getting_started/site/ diff --git a/content/en/code_analysis/software_composition_analysis/setup.md b/content/en/code_analysis/software_composition_analysis/setup.md deleted file mode 100644 index cbe60b557bfaa..0000000000000 --- a/content/en/code_analysis/software_composition_analysis/setup.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Setting Up Software Composition Analysis -description: Learn how to set up Software Composition Analysis to scan your imported open-source libraries for known security vulnerabilities before you ship to production. -is_beta: false -further_reading: -- link: "https://www.datadoghq.com/blog/iast-datadog-application-vulnerability-management/" - tag: "Blog" - text: "Enhance application security in production with Datadog Application Vulnerability Management" -- link: "/getting_started/application_security/software_composition_analysis" - tag: "Documentation" - text: "Getting Started with Software Composition Analysis" -- link: "/security/application_security/software_composition_analysis/" - tag: "Documentation" - text: "Learn about Software Composition Analysis" -- link: "/integrations/guide/source-code-integration/" - tag: "Documentation" - text: "Learn about the Source Code Integration" -- link: "/code_analysis/static_analysis/" - tag: "Documentation" - text: "Learn about Static Analysis" -algolia: - tags: ['software composition analysis', 'software composition analysis rules', 'library vulnerabilities', 'SCA'] ---- - -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - -{{% site-region region="gov" %}} -
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. -
-{{% /site-region %}} - -## Overview - -To set up Datadog Software Composition Analysis, navigate to [**Software Delivery** > **Code Analysis**][6]. - -## Select where to run Software Composition Analysis scans -### Scan with Datadog-hosted scanning -SCA scans can be run directly on Datadog's infrastructure. To get started, navigate to the [**Code Analysis** page][6]. - -### Scan in CI pipelines -SCA can be run in your CI pipelines using the [`datadog-ci` CLI][5]. Configure your [Datadog API and application keys (requires the `code_analysis_read` scope)][3] and run SCA jobs in the respective CI provider. - -{{< whatsnext desc="See the documentation for your CI provider:">}} - {{< nextlink href="code_analysis/software_composition_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} - {{< nextlink href="code_analysis/software_composition_analysis/generic_ci_providers" >}}Generic CI Providers{{< /nextlink >}} -{{< /whatsnext >}} - -## Select your source code management provider -Datadog SCA supports all source code management providers, with native support for GitHub. -### Set up the GitHub integration -If GitHub is your source code management provider, you must configure a GitHub App using the [GitHub integration tile][9] and set up the [source code integration][10] to see inline code snippets and enable [pull request comments][11]. - -When installing a GitHub App, the following permissions are required to enable certain features: - -- `Content: Read`, which allows you to see code snippets displayed in Datadog. -- `Pull Request: Read & Write`, which allows Datadog to add feedback for violations directly in your pull requests using [pull request comments][11]. - -### Other source code management providers -If you are using another source code management provider, configure SCA to run in your CI pipelines using the `datadog-ci` CLI tool and [upload the results][8] to Datadog. -You **must** run an analysis of your repository on the default branch before results can begin appearing on the **Code Analysis** page. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /getting_started/application_security/vulnerability_management -[2]: /code_analysis/ -[3]: /account_management/api-app-keys/ -[4]: /getting_started/site/ -[5]: https://github.com/DataDog/datadog-ci -[6]: https://app.datadoghq.com/ci/code-analysis -[7]: /integrations/github/#link-a-repository-in-your-organization-or-personal-account -[8]: /code_analysis/software_composition_analysis/generic_ci_providers/ -[9]: /integrations/github -[10]: /integrations/guide/source-code-integration -[11]: /code_analysis/github_pull_requests/ diff --git a/content/en/code_analysis/static_analysis/_index.md b/content/en/code_analysis/static_analysis/_index.md deleted file mode 100644 index d8a2e55d41621..0000000000000 --- a/content/en/code_analysis/static_analysis/_index.md +++ /dev/null @@ -1,158 +0,0 @@ ---- -title: Static Analysis (SAST) -description: Learn about Datadog Static Analysis to scan code for quality issues and security vulnerabilities before your code reaches production. -aliases: -- /continuous_integration/static_analysis -- /static_analysis -is_beta: false -further_reading: -- link: "https://www.datadoghq.com/blog/monitor-ci-pipelines/" - tag: "Blog" - text: "Monitor all your CI pipelines with Datadog" -- link: "/integrations/guide/source-code-integration/" - tag: "Documentation" - text: "Learn about the Source Code Integration" -algolia: - tags: ['static analysis', 'datadog static analysis', 'code quality', 'SAST'] ---- - -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - -{{% site-region region="gov" %}} -
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. -
-{{% /site-region %}} - - -## Overview - -Static Analysis (SAST) is a clear-box software testing technique that analyzes a program's pre-production code without the need to execute the program, meaning that the program is static because it isn't running. - -Static Analysis helps you identify maintainability issues and security vulnerabilities early in the software development life cycle (SDLC) to ensure only the highest quality, most secure code makes it to production. Static Analysis tools that scan for security vulnerabilities are also commonly referred to as Static Application Security Testing (SAST) tools. - -Using Static Analysis provides organizations with the following benefits: - -* Static Analysis takes the guesswork out of adhering to an organization's code standards, enabling your development team to ship compliant code without significant impacts to developer velocity. -* An organization's applications are less vulnerable to security breaches over time, due to new vulnerabilities being caught through SAST scans before code reaches production. -* New developers to an organization are able to onboard faster because Static Analysis enables an organization to maintain a more readable codebase over time. -* An organization's software becomes reliable over time by virtue of the code being more maintainable because the risk of a developer introducing new defects to the code is minimized. - -## Set up Static Analysis - -Static Analysis supports scanning for poor coding practices and security vulnerabilities in the following languages and technologies: - -{{< partial name="code_analysis/languages-getting-started.html" >}} - -
- -To get started, you can set up Static Analysis on the [**Code Analysis** page][1] or see the [Setup documentation][9]. - -## Integrate Static Analysis into your software development lifecycle - -### CI providers -{{< whatsnext desc="You can run Static Analysis on any CI platform provider of your choice. See provider-specific documentation to set up Static Analysis in your CI pipelines:">}} - {{< nextlink href="code_analysis/static_analysis/circleci_orbs" >}}CircleCI Orbs{{< /nextlink >}} - {{< nextlink href="code_analysis/static_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} - {{< nextlink href="code_analysis/static_analysis/generic_ci_providers" >}}Other CI Providers{{< /nextlink >}} -{{< /whatsnext >}} - -### Source code management -{{< whatsnext desc="During code reviews on GitHub, Datadog can automatically flag Static Analysis violations in pull requests by adding inline review comments on the relevant line(s) of code. When applicable, Datadog also provides suggested fixes that can be applied directly in the pull request. You can also open a pull request directly from Datadog to fix a vulnerability or quality issue." >}} - {{< nextlink href="static_analysis/github_pull_requests" >}}GitHub Pull Requests{{< /nextlink >}} -{{< /whatsnext >}} - -### IDEs -{{< whatsnext desc="You can identify code vulnerabilities in real time as you edit a file in your Integrated Development Environment (IDE). See integration-specific documentation for more information:">}} - {{< nextlink href="developers/ide_plugins/idea/" >}}Datadog Plugin for JetBrains IDEs{{< /nextlink >}} - {{< nextlink href="developers/ide_plugins/vscode/#static-analysis" >}}Datadog Extension for Visual Studio Code{{< /nextlink >}} - {{< nextlink href="developers/ide_plugins/visual_studio/#static-analysis" >}}Datadog Extension for Visual Studio{{< /nextlink >}} -{{< /whatsnext >}} - -## Search and filter results - -After you configure your CI pipelines to run the Datadog Static Analyzer, violations are summarized per repository on the [**Code Analysis Repositories** page][1]. Click on a repository to analyze **Code Vulnerabilities** and **Code Quality** results from Static Analysis. - -* The **Code Vulnerabilities** tab contains the violations found by Datadog's rules in the [Security category][2]. -* The **Code Quality** tab contains the violations found by Datadog's rules in the [Best Practices, Code Style, Error Prone, or Performance categories][3]. - -To filter your results, use the facets to the left of the list, or search. Results can be filtered by service or team facets. For more information about how results are linked to Datadog services and teams, see [Getting Started with Code Analysis][11]. - -Every row represents a violation. Each violation is associated with the specific commit and branch that is selected in the filters at the top of the page (by default, results are shown for the latest commit on the default branch of the repository you are viewing). - -Click on a violation to open a side panel that contains information about the scope of the violation and where it originated. -{{< img src="code_analysis/static_analysis/static-analysis-violation.png" alt="Side panel for a static analysis violation" style="width:80%;">}} - -The content of the violation is shown in tabs: - -- **Details**: A description of the violation and the lines of code that caused it. To see the offending code snippet, configure the [Datadog GitHub App][4]. -- **Remediation**: One or more code fixes that can resolve the violation, with options for remediation. -- **Event**: JSON metadata regarding the Static Analysis violation event. - -### Using suggested fixes -{{< img src="code_analysis/static_analysis/static-analysis-fixes.png" alt="Fixes tab of a static analysis violation" style="width:80%;">}} - -In Datadog Static Analysis, there are two types of suggested fixes: - -1. **Default Suggested Fix:** For simple violations like linting issues, the rule analyzer automatically provides templated fixes. -2. **AI Suggested Fix:** For complex violations, fixes are typically not available beforehand. Instead, you can use AI Suggested Fixes, which use OpenAI's GPT-4 to generate a suggested fix. You can choose between "Text" and "Unified Diff" fixes, which outputs plain text instructions or a code change for resolving the violation, respectively. - -The two types of fixes are distinguished visually in the UI with different labels. - -*Default Suggested Fixes:* -{{< img src="code_analysis/static_analysis/static-analysis-default-fix.png" alt="Visual indicator of a default static analysis suggested fix" style="width:60%;">}} - -*AI Suggested Fixes:* -{{< img src="code_analysis/static_analysis/static-analysis-ai-fix.png" alt="Visual indicator of an AI static analysis suggested fix" style="width:60%;">}} - -
AI Suggested Fixes are in Preview. To request access, contact Support.
- -### Fixing a vulnerability or quality issue directly from Datadog -{{< img src="ci/sast_one_click_light.png" alt="Example of one-click remediation for Code Analysis" style="width:90%;" >}} - -You can push a code change to fix an issue found by Code Analysis directly from a result in Datadog in two ways. - -#### Opening a pull request -If your GitHub app's **Pull Requests** permission is set to **Read & Write**, one-click remediation is enabled for all Static Analysis findings with an available suggested fix. For more information about setting up the GitHub integration, see [GitHub Pull Requests][10]. - -Follow these steps to fix a vulnerability and open a pull request: -1. View a specific result in Code Analysis. -2. Click **Fix Violation** in the side panel of the result. -3. Select **Open a Pull Request**. -4. Enter a pull request title and commit message. -5. Click **Create PR**. - -#### Committing directly to the current branch -You can also fix a vulnerability by committing directly to the branch the result was found on. - -To commit a suggested fix: - -1. View a specific result in Code Analysis. -2. Click **Fix Violation** in the side panel of the result. -3. Click **Commit to current branch**. - -### Customizing your configuration - -To customize which Static Analysis rules are configured in your repositories, see the [Setup documentation][8]. - -### Reporting false positives -If you believe a specific violation is a false positive, you can flag it as a false positive with a reason for flagging, which sends a report to Datadog. Submissions are reviewed on a regular basis to improve ruleset quality over time. - -{{< img src="code_analysis/static_analysis/flag-false-positive.png" alt="Button for reporting a Static Analysis violation as a false positive" style="width:60%;">}} - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: https://app.datadoghq.com/ci/code-analysis -[2]: /code_analysis/static_analysis_rules?categories=Security -[3]: /code_analysis/static_analysis_rules?categories=Best+Practices&categories=Code+Style&categories=Error+Prone&categories=Performance -[4]: /integrations/github/ -[6]: https://en.wikipedia.org/wiki/Camel_case -[7]: https://en.wikipedia.org/wiki/Snake_case -[8]: /code_analysis/static_analysis/setup/#customize-your-configuration -[9]: /code_analysis/static_analysis/setup -[10]: /code_analysis/github_pull_requests/ -[11]: /getting_started/code_analysis/?tab=datadoghosted#linking-services-to-code-violations-and-libraries diff --git a/content/en/containers/guide/cluster_agent_disable_admission_controller.md b/content/en/containers/guide/cluster_agent_disable_admission_controller.md index 47a6dff3f8f62..298fa59f0af4e 100644 --- a/content/en/containers/guide/cluster_agent_disable_admission_controller.md +++ b/content/en/containers/guide/cluster_agent_disable_admission_controller.md @@ -46,7 +46,7 @@ To disable the Admission Controllers with your Cluster Agent managed by the Data enabled: false ``` -**Note**: The the `features.admissionController.enabled` parameter is set to `true` to allow the Cluster Agent to manage the Kubernetes Admission Controllers. +**Note**: The `features.admissionController.enabled` parameter is set to `true` to allow the Cluster Agent to manage the Kubernetes Admission Controllers. After redeploying the Cluster Agent with the updated configuration, the Admission Controllers are removed. {{% /tab %}} diff --git a/content/en/containers/kubernetes/configuration.md b/content/en/containers/kubernetes/configuration.md index 8a5f1175e7a11..5be32b6585de0 100644 --- a/content/en/containers/kubernetes/configuration.md +++ b/content/en/containers/kubernetes/configuration.md @@ -33,6 +33,7 @@ After you have installed the Datadog Agent in your Kubernetes environment, you m - [Kubernetes API server timeout](#kubernetes-api-server-timeout) - [Proxy settings](#proxy-settings) - [Autodiscovery](#autodiscovery) +- [Set cluster name](#set-cluster-name) - [Miscellaneous](#miscellaneous) ## Enable APM and tracing @@ -453,6 +454,23 @@ spec: liveContainerCollection: enabled: true ``` +In some setups, the Process Agent and Cluster Agent cannot automatically detect a Kubernetes cluster name. If this happens, the feature does not start, and the following warning displays in the Cluster Agent log: `Orchestrator explorer enabled but no cluster name set: disabling`. In this case, you must set `spec.global.clusterName` to your cluster name in `datadog-agent.yaml`: + +```yaml +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + global: + clusterName: + credentials: + apiKey: + appKey: + features: + orchestratorExplorer: + enabled: true +``` {{% /tab %}} {{% tab "Helm" %}} @@ -468,7 +486,7 @@ datadog: enabled: true ``` -In some setups, the Process Agent and Cluster Agent cannot automatically detect a Kubernetes cluster name. If this happens, the feature does not start, and the following warning displays in the Cluster Agent log: `Orchestrator explorer enabled but no cluster name set: disabling.` In this case, you must set `datadog.clusterName` to your cluster name in `values.yaml`. +In some setups, the Process Agent and Cluster Agent cannot automatically detect a Kubernetes cluster name. If this happens, the feature does not start, and the following warning displays in the Cluster Agent log: `Orchestrator explorer enabled but no cluster name set: disabling.` In this case, you must set `datadog.clusterName` to your cluster name in `datadog-values.yaml`. ```yaml datadog: @@ -484,6 +502,8 @@ datadog: {{% /tab %}} {{< /tabs >}} +For restrictions on valid cluster names, see [Set cluster name](#set-cluster-name). + See the [Containers view][15] documentation for additional information. ## Orchestrator Explorer @@ -512,6 +532,25 @@ spec: enabled: true ``` +In some setups, the Process Agent and Cluster Agent cannot automatically detect a Kubernetes cluster name. If this happens, the feature does not start, and the following warning displays in the Cluster Agent log: `Orchestrator explorer enabled but no cluster name set: disabling`. In this case, you must set `spec.global.clusterName` to your cluster name in `datadog-agent.yaml`: + +```yaml +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + global: + clusterName: + credentials: + apiKey: + appKey: + features: + orchestratorExplorer: + enabled: true +``` + + {{% /tab %}} {{% tab "Helm" %}} @@ -528,9 +567,24 @@ datadog: enabled: true ``` +In some setups, the Process Agent and Cluster Agent cannot automatically detect a Kubernetes cluster name. If this happens, the feature does not start, and the following warning displays in the Cluster Agent log: `Orchestrator explorer enabled but no cluster name set: disabling.` In this case, you must set `datadog.clusterName` to your cluster name in `values.yaml`. + +```yaml +datadog: + #(...) + clusterName: + #(...) + processAgent: + enabled: true + orchestratorExplorer: + enabled: true +``` + {{% /tab %}} {{< /tabs >}} +For restrictions on valid cluster names, see [Set cluster name](#set-cluster-name). + See the [Orchestrator Explorer documentation][21] for additional information. ## Basic configuration @@ -823,6 +877,40 @@ Starting with Agent v6.4.0 (and v6.5.0 for the Trace Agent), you can override th | `DD_PROXY_NO_PROXY` | A space-separated list of URLs for which no proxy should be used. | | `DD_SKIP_SSL_VALIDATION` | An option to test if the Agent is having issues connecting to Datadog. | +## Set cluster name + +Some capabilities require that you set a Kubernetes cluster name. A valid cluster name must be unique and dot-separated, with the following restrictions: + +- Can contain only lowercase letters, numbers, and hyphens +- Must start with a letter +- Overall length is less than or equal to 80 characters + +{{< tabs >}} +{{% tab "Datadog Operator" %}} +Set `spec.global.clusterName` to your cluster name in `datadog-agent.yaml`: + +```yaml +apiVersion: datadoghq.com/v2alpha1 +kind: DatadogAgent +metadata: + name: datadog +spec: + global: + clusterName: +``` +{{% /tab %}} + +{{% tab "Helm" %}} +Set `datadog.clusterName` to your cluster name in `datadog-values.yaml`. + +```yaml +datadog: + #(...) + clusterName: +``` +{{% /tab %}} +{{< /tabs >}} + ## Autodiscovery | Env Variable | Description | diff --git a/content/en/continuous_integration/pipelines/gitlab.md b/content/en/continuous_integration/pipelines/gitlab.md index d5a1db3bd517d..322c9371e11e5 100644 --- a/content/en/continuous_integration/pipelines/gitlab.md +++ b/content/en/continuous_integration/pipelines/gitlab.md @@ -285,7 +285,10 @@ CI Visibility supports Infrastructure metrics for "Instance" executors. For more {{% tab "Kubernetes" %}} CI Visibility supports Infrastructure metrics for the Kubernetes executor. For this, it is necessary to have the Datadog Agent monitoring the Kubernetes Gitlab infrastructure. See [Install the Datadog Agent on Kubernetes][1] to install the Datadog Agent in a Kubernetes cluster. +Due to limitations in the Datadog Agent, jobs shorter than the minimum collection interval of the Datadog Agent might not always display infrastructure correlation metrics. To adjust this value, see [Datadog Agent configuration template][2] and adjust the variable `min_collection_interval` to be less than 15 seconds. + [1]: /containers/kubernetes/installation/?tab=datadogoperator +[2]: https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml {{% /tab %}} {{% tab "Other executors" %}} diff --git a/content/en/dashboards/sharing/scheduled_reports.md b/content/en/dashboards/sharing/scheduled_reports.md index 8c4147cd82cfd..19c09d7376acd 100644 --- a/content/en/dashboards/sharing/scheduled_reports.md +++ b/content/en/dashboards/sharing/scheduled_reports.md @@ -5,27 +5,32 @@ aliases: - /dashboards/reporting/ - /dashboards/scheduled_reports/ further_reading: - - link: "https://www.datadoghq.com/blog/dashboard-sharing/" - tag: "Blog" - text: "Share Datadog dashboards securely with anyone" - - link: "https://www.datadoghq.com/blog/template-variable-associated-values/" - tag: "Blog" - text: "Use associated template variables to refine your dashboards" + - link: 'https://www.datadoghq.com/blog/dashboard-sharing/' + tag: 'Blog' + text: 'Share Datadog dashboards securely with anyone' + - link: 'https://www.datadoghq.com/blog/template-variable-associated-values/' + tag: 'Blog' + text: 'Use associated template variables to refine your dashboards' --- {{< site-region region="gov" >}} +
Scheduled Reports are not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
{{< /site-region >}} ## Overview -Scheduled reports enable Datadog users to share dashboards as high-density PDFs by email on a recurring basis. +Scheduled reports enable Datadog users to share dashboards as high-density PDFs on a recurring basis. -{{< img src="dashboards/scheduled_reports/report_email.png" alt="Example report email with PDF attachment" style="width:90%;" >}} +{{< img src="dashboards/scheduled_reports/report_pdf.png" alt="Example report PDF attachment" style="width:90%;" >}} -The report PDF is included as an email attachment or as a link, depending on its size. +The report PDF can be sent to public Slack channels or email addresses. -{{< img src="dashboards/scheduled_reports/report_pdf.png" alt="Example report PDF attachment" style="width:90%;" >}} +{{< img src="dashboards/scheduled_reports/report_slack.png" alt="Example report slack with PDF report linked" style="width:90%;" >}} + +For emails, the report PDF is included as an email attachment or as a link, depending on its size. + +{{< img src="dashboards/scheduled_reports/report_email.png" alt="Example report email with PDF attachment" style="width:90%;" >}} ## Schedule a report @@ -35,7 +40,7 @@ Click the **Share** button at the top of your dashboard and select **Schedule re ### 1. Set a schedule -In the configuration modal that opens, set a schedule for the report to determine when and how often the report is sent. +In the configuration modal that opens, set a schedule for the report to determine when and how often the report is sent. **{{< img src="dashboards/scheduled_reports/set_schedule.png" alt="Section for defining a report schedule. Includes a schedule preview table showing the next 5 scheduled report dates." style="width:90%;" >}}** @@ -53,39 +58,53 @@ Click **Edit Variables** to modify the filters applied when the report is sent. ### 3. Add recipients -Add recipients to your report by entering their email addresses. The email associated with your Datadog account is automatically added as a recipient. You can remove yourself as a recipient by hovering over your email and clicking the trash icon that appears next to it. +#### Email recipients + +To add email recipients to your report, enter their email addresses. The email associated with your Datadog account is automatically added as a recipient. You can remove yourself as a recipient by hovering over your email and clicking the trash icon that appears next to it. **Note:** Enterprise and Pro accounts can send reports to recipients outside of their organizations. -**{{< img src="dashboards/scheduled_reports/add_recipients.png" alt="The configuration modal for editing scheduled report variables." style="width:90%;" >}}** +**{{< img src="dashboards/scheduled_reports/add_email_recipients.png" alt="The configuration modal for editing scheduled report variables." style="width:90%;" >}}** To see the report before saving the schedule, click **Send Test Email**. You can pause a report schedule at any time. +#### Slack recipients + +To add Slack recipients, select the Slack workspace and channel from the available dropdowns. If you do not see any Slack workspaces available, ensure you have the Datadog [Slack Integration][8] installed. To send a test message to Slack, add a channel recipient and click **Send Test Message**. + +**{{< img src="dashboards/scheduled_reports/add_slack_recipients.png" alt="The configuration modal for editing scheduled report email recipients." style="width:90%;" >}}** + ## Managing reports + A single dashboard can have multiple scheduled reports with different settings, which allows you to inform different groups of stakeholders interested in the same dashboard. To see the reports on an existing dashboard, click the **Share** button and select **Configure Reports**. From the configuration modal that opens, you can pause an existing report or create a new report. To see and edit the details of an existing report, or delete the report, click **Edit**. -{{< img src="dashboards/scheduled_reports/manage_reports.png" alt="The configuration modal for scheduled reports, with two reports displayed, each showing their titles, tags, recipients, frequency, an option to toggle the report on or off, and a button to edit the report. At the bottom is a button to add a new report and a cancel button" style="width:90%;" >}} +{{< img src="dashboards/scheduled_reports/manage_reports-2.png" alt="The configuration modal for scheduled reports, with two reports displayed, each showing their titles, tags, recipients, frequency, an option to toggle the report on or off, and a button to edit the report. At the bottom is a button to add a new report and a cancel button" style="width:90%;" >}} ## Permissions Users need the **Dashboards Report Write** [permission][2] to create and edit report schedules. This permission can be granted by another user with the **User Access Manage** permission. -{{< img src="dashboards/scheduled_reports/permissions.png" alt="A screenshot of an individual user's permissions from within the organization settings page. The dashboards report write permission is highlighted under the dashboards section" style="width:90%;" >}} +{{< img src="dashboards/scheduled_reports/dashboard_permissions-2.png" alt="A screenshot of an individual user's permissions from within the organization settings page. The dashboards report write permission is highlighted under the dashboards section" style="width:90%;" >}} Users with the **Org Management** permission can enable or disable the scheduled reports feature for their organization from the **Settings** tab under [Public Sharing][3] in **Organization Settings**. -{{< img src="dashboards/scheduled_reports/org_preference.png" alt="The Report Management setting under the Settings tab in Public Sharing within Organization Settings in Datadog with the setting Enabled" style="width:90%;" >}} +{{< img src="dashboards/scheduled_reports/report_management_org_preference.png" alt="The Report Management setting in the Settings tab in Public Sharing within Organization Settings in Datadog with the setting Enabled" style="width:90%;" >}} + +Additionally, users with the **Org Management** permission can enable or disable Slack recipients for their organization from the **Settings** tab under [Public Sharing][3] in **Organization Settings**. + +{{< img src="dashboards/scheduled_reports/report_send_to_slack_org_preference.png" alt="The Send to Slack setting under Report Management setting in the Settings tab in Public Sharing within Organization Settings in Datadog with the setting Enabled" style="width:90%;" >}} ## Unsupported widget types The following widget types are **not** supported and will be shown as empty in the report: -- [Iframe][4] -- [Image][5] -- [Hostmap][6] -- [Run Workflow][7] + +- [Iframe][4] +- [Image][5] +- [Hostmap][6] +- [Run Workflow][7] ## Further Reading @@ -98,4 +117,4 @@ The following widget types are **not** supported and will be shown as empty in t [5]: /dashboards/widgets/image/ [6]: /dashboards/widgets/hostmap/ [7]: /dashboards/widgets/run_workflow/ - +[8]: /integrations/slack/?tab=datadogforslack diff --git a/content/en/data_jobs/airflow.md b/content/en/data_jobs/airflow.md index f77a3f38c3701..8adbc4b55e6e3 100644 --- a/content/en/data_jobs/airflow.md +++ b/content/en/data_jobs/airflow.md @@ -236,7 +236,7 @@ You can troubleshoot Airflow tasks that run Spark jobs more efficiently by conne **Prerequisites**: your Spark jobs are currently monitored through [Data Jobs Monitoring][2] and are submitted through [SparkSubmitOperator][5]s from your Airflow jobs. -To see the link between Airflow task and the the Spark application it submitted, follow these steps: +To see the link between Airflow task and the Spark application it submitted, follow these steps: 1. Configure Airflow to turn off lazy loading of Airflow plugins by setting [lazy_load_plugins config][3] to `False` in your `airflow.cfg` or exporting the following environment variable where your Airflow schedulers and Airflow workers run: diff --git a/content/en/data_jobs/databricks.md b/content/en/data_jobs/databricks.md index ed48716989c8f..d45b2d9e80534 100644 --- a/content/en/data_jobs/databricks.md +++ b/content/en/data_jobs/databricks.md @@ -237,16 +237,9 @@ If you need further assistance from Datadog support, add the following environme ### Set up Data Jobs Monitoring with Databricks Networking Restrictions With [Databricks Networking Restrictions][12], Datadog may not have access to your Databricks APIs, which is required to collect traces for Databricks job executions along with tags and other metadata. -If you are controlling Databricks API access through IP access lists, allow-listing Datadog's specific {{< region-param key="ip_ranges_url_webhooks" link="true" text="IP addresses" >}} allows your cluster to perform all these interactions with Datadog services. Please see [Databricks documentation][13] for more details on how to manage IP access lists in Databricks. +If you are controlling Databricks API access with [IP access lists][13], allow-listing Datadog's specific {{< region-param key="ip_ranges_url_webhooks" link="true" text="IP addresses" >}} allows Datadog to connect to the Databricks APIs in your workspace. Please see Databricks's documentation for [configuring IP access lists for workspaces][16] to give Datadog API access. -If you are using [Databricks Private Connectivity][14], the steps to configure the connection depend on your cloud provider. -{{< whatsnext desc="Refer to the guide for your cloud environment:" >}} - {{< nextlink href="agent/guide/private-link" >}}Connect to Datadog over AWS PrivateLink{{< /nextlink >}} - {{< nextlink href="agent/guide/azure-private-link" >}}Connect to Datadog over Azure Private Link{{< /nextlink >}} - {{< nextlink href="agent/guide/gcp-private-service-connect" >}}Connect to Datadog over GCP Private Service Connect{{< /nextlink >}} -{{< /whatsnext >}} - -For further assistance, contact the Datadog [support team][15]. +If you are using [Databricks Private Connectivity][14], please reach out to the Datadog [support team][15] to discuss potential options. ## Further Reading @@ -264,3 +257,4 @@ For further assistance, contact the Datadog [support team][15]. [13]: https://docs.databricks.com/en/security/network/front-end/ip-access-list.html [14]: https://www.databricks.com/trust/security-features/secure-your-data-with-private-networking [15]: https://www.datadoghq.com/support/ +[16]: https://docs.databricks.com/en/security/network/front-end/ip-access-list-workspace.html diff --git a/content/en/data_security/pci_compliance.md b/content/en/data_security/pci_compliance.md index 40b6abcf14059..ce22c2507f2a7 100644 --- a/content/en/data_security/pci_compliance.md +++ b/content/en/data_security/pci_compliance.md @@ -46,6 +46,20 @@ Datadog offers PCI-compliant Log Management and Application Performance Monitori {{% /site-region %}} +## View your PCI Compliance status + +See the [Configuration Page][2] inside Safety Center. + +Example of a fully onboarded customer: + +{{< img src="/data_security/pci_compliant.png" alt="View of PCI compliance in the Configuration Page" style="width:75%;" >}} + +Example of an onboarding customer: + +{{< img src="/data_security/pci_onboarding.png" alt="View of PCI onboarding in the Configuration Page" style="width:75%;" >}} + ## Further Reading {{< partial name="whats-next/whats-next.html" >}} + +[2]: https://app.datadoghq.com/organization-settings/safety-center/configuration diff --git a/content/en/database_monitoring/connect_dbm_and_apm.md b/content/en/database_monitoring/connect_dbm_and_apm.md index ed086e6520149..e05e86d008cd4 100644 --- a/content/en/database_monitoring/connect_dbm_and_apm.md +++ b/content/en/database_monitoring/connect_dbm_and_apm.md @@ -72,8 +72,10 @@ APM tracer integrations support a *Propagation Mode*, which controls the amount \* [CommandType.StoredProcedure][25] not supported \*\* Full mode SQL Server for Java/.NET: + +
If your application uses context_info for instrumentation, the APM tracer overwrites it.
+ - The instrumentation executes a `SET context_info` command when the client issues a query, which makes an additional round-trip to the database. - - If your applications uses `context_info` to instrument the application, it is overwritten by the APM tracer. - Prerequisites: - Agent version 7.55.0 or greater - Java tracer version 1.39.0 or greater diff --git a/content/en/ddsql_editor/getting_started.md b/content/en/ddsql_editor/getting_started.md index 5febb3d321bd1..c55e32b38dada 100644 --- a/content/en/ddsql_editor/getting_started.md +++ b/content/en/ddsql_editor/getting_started.md @@ -43,7 +43,7 @@ If you aren't sure which fields contain the data you want, you can use the schem 1. Click the database icon in the left sidebar to open the schema explorer. {{< img src="ddsql_editor/schema-explorer-example.png" alt="The schema explorer's list of available tables" style="width:100%;" >}} 1. The current query is for the `host` table, so click **All Tables > Hosts > host** to view the available fields. Decide which field to add to the query. This example uses `availability_zone`. - {{< img src="ddsql_editor/schema-explorer-table-example.png" alt="The the host table displayed in the schema explorer" style="width:50%;" >}} + {{< img src="ddsql_editor/schema-explorer-table-example.png" alt="The host table displayed in the schema explorer" style="width:50%;" >}} 1. Edit the query SQL to add the `availability_zone` to the result: {{< code-block lang="sql" >}} diff --git a/content/en/developers/ide_plugins/visual_studio/_index.md b/content/en/developers/ide_plugins/visual_studio/_index.md index 9f2240df40179..0c70f79ef4703 100644 --- a/content/en/developers/ide_plugins/visual_studio/_index.md +++ b/content/en/developers/ide_plugins/visual_studio/_index.md @@ -10,7 +10,7 @@ further_reading: - link: "/integrations/guide/source-code-integration/" tag: "Documentation" text: "Learn about Source Code Integration" -- link: "/code_analysis/static_analysis" +- link: "/security/code_security/static_analysis" tag: "Documentation" text: "Learn about Static Analysis" - link: "https://marketplace.visualstudio.com/items?itemName=Datadog.VisualStudio" @@ -120,8 +120,8 @@ If you don't wish to send this data to Datadog, you can opt out at any time in t [16]: https://github.com/DataDog/datadog-for-visual-studio/issues [17]: https://marketplace.visualstudio.com/items?itemName=Datadog.VisualStudio [18]: /logs/explorer/ -[19]: /code_analysis/static_analysis/ -[20]: /code_analysis/static_analysis_rules/ +[19]: /security/code_security/static_analysis/ +[20]: /security/code_security/static_analysis/static_analysis_rules/ [21]: https://www.datadoghq.com/legal/privacy/ [22]: https://www.datadoghq.com/legal/eula/ [23]: /account_management/multi_organization/#custom-sub-domains diff --git a/content/en/developers/ide_plugins/vscode/_index.md b/content/en/developers/ide_plugins/vscode/_index.md index e6cf4e35f8556..7e4f1134ecdc6 100644 --- a/content/en/developers/ide_plugins/vscode/_index.md +++ b/content/en/developers/ide_plugins/vscode/_index.md @@ -19,6 +19,12 @@ further_reading: text: "Simplify production debugging with Datadog Exception Replay" --- +{{% site-region region="gov" %}} +
+ The Datadog extension for Visual Studio Code is not supported for the {{< region-param key="dd_site_name" >}} site. +
+{{% /site-region %}} + ## Overview The Datadog extension for Visual Studio Code (VS Code) integrates with Datadog to accelerate your development. diff --git a/content/en/dynamic_instrumentation/expression-language.md b/content/en/dynamic_instrumentation/expression-language.md index 143378c8431dc..e5c3c9e1c653d 100644 --- a/content/en/dynamic_instrumentation/expression-language.md +++ b/content/en/dynamic_instrumentation/expression-language.md @@ -33,9 +33,9 @@ The following sections summarize the variables and operations that the Dynamic I |-------------|----------------------------------------------------------------------------| | `@return` | Provides access to the return value | | `@duration` | Provides access to the call execution duration | -| `@it` | Provides access to the current value in collection iterating operations | | `@exception`| Provides access to the current uncaught exception | +**Note**: These variables are **only available** when instrumenting an **entire method**, and **not** for individual lines of code. ## String operations @@ -51,13 +51,15 @@ The following sections summarize the variables and operations that the Dynamic I ## Collection operations +When working with collections (lists, maps, etc.), a variable `@it` is available which provides access to the current value in a collection during iteration. + The following examples use a variable named `myCollection` defined as `[1,2,3]`: | Operation | Description | Example | |-----------|-------------|---------| -| `any(value_src, {predicate})` | Checks if there is at least one element in the collection that satisfies the given predicate. The current element is accessed with the `@it` reference. | `any(myCollection, @it > 2)` -> `True` | -| `all(value_src, {predicate})` | Checks whether every element in a collection satisfies the specified predicate. The current element is accessed with the `@it` reference. | `all(myCollection, @it < 4)` -> `True` | -| `filter(value_src, {predicate})` | Filters the elements of the collection using the predicate. The current element is accessed with the `@it` reference. | `filter(myCollection, @it > 1)` -> `[2,3]` | +| `any(value_src, {predicate})` | Checks if there is at least one element in the collection that satisfies the given predicate. The current element is accessed with the `@it` reference. | `any(myCollection, {@it > 2})` -> `True` | +| `all(value_src, {predicate})` | Checks whether every element in a collection satisfies the specified predicate. The current element is accessed with the `@it` reference. | `all(myCollection, {@it < 4})` -> `True` | +| `filter(value_src, {predicate})` | Filters the elements of the collection using the predicate. The current element is accessed with the `@it` reference. | `filter(myCollection, {@it > 1})` -> `[2,3]` | | `len(value_src)` | Gets the collection size. | `len(myCollection)` -> `3` | | `[ n ]` | For collections, returns the nth item in the collection. For maps and dictionaries, returns the value that corresponds to the key `n`. If the item does not exist, the expression yields an error. | `myCollection[1]` -> `2` | diff --git a/content/en/error_tracking/backend/_index.md b/content/en/error_tracking/backend/_index.md index a957e9d2f24be..2fa2d16dcda24 100644 --- a/content/en/error_tracking/backend/_index.md +++ b/content/en/error_tracking/backend/_index.md @@ -23,12 +23,12 @@ Datadog's standalone backend Error Tracking is in Preview. If you're interested {{< img src="real_user_monitoring/error_tracking/rum-et-explorer.png" alt="The details of an issue in the Error Tracking Explorer" style="width:100%;" >}} -It is critical for your system’s health to consistently monitor the errors that Datadog collects. When there are many individual error events, it becomes hard to prioritize errors for troubleshooting. +It is critical for your system's health to consistently monitor the errors that Datadog collects. When there are many individual error events, it becomes hard to prioritize errors for troubleshooting. Error Tracking simplifies debugging by grouping thousands of similar errors into a single issue. Error Tracking enables you to: - Track, triage, and debug fatal errors -- Group similar errors into issues, so that you can more easily identify important errors and reduce noise +- Group similar errors into issues, so that you can identify important errors and reduce noise - Set monitors on error tracking events, such as high error volume or new issues - Follow issues over time to know when they first started, if they are still ongoing, and how often they occur - Automatically capture local variable values so you can reproduce exceptions, simplifying the process to resolve errors quickly diff --git a/content/en/error_tracking/explorer.md b/content/en/error_tracking/explorer.md index c39600cccee05..0ea25f6951a0a 100644 --- a/content/en/error_tracking/explorer.md +++ b/content/en/error_tracking/explorer.md @@ -62,9 +62,14 @@ Each event generated is tagged with the version, the service, and the environmen {{< img src="/error_tracking/create-monitor.mp4" alt="Export your search query to an Error Tracking monitor" video=true >}} +## Suspected Cause + +[Suspected Cause][3] enables quicker filtering and prioritization of errors, empowering teams to address potential root causes more effectively. + ## Further Reading {{< partial name="whats-next/whats-next.html" >}} [1]: /events -[2]: /monitors/types/event/ \ No newline at end of file +[2]: /monitors/types/event/ +[3]: /error_tracking/suspected_causes \ No newline at end of file diff --git a/content/en/error_tracking/suspected_causes.md b/content/en/error_tracking/suspected_causes.md new file mode 100644 index 0000000000000..9ad90bdd70884 --- /dev/null +++ b/content/en/error_tracking/suspected_causes.md @@ -0,0 +1,37 @@ +--- +title: Suspected Causes +description: Learn about suspected causes in backend Error Tracking. +further_reading: +- link: '/error_tracking/monitors' + tag: 'Documentation' + text: 'Learn about Error Tracking Monitors' + +--- + +## Overview + +Datadog assigns a suspected cause label to issues at creation time. The suspected cause label represents the first hypothesis a developer may have about the root cause of an error. This initial classification helps teams streamline their troubleshooting efforts and enhance their understanding of recurring problems. + +The suspected cause can be one of the following categories: + +- **Code Exception**: An error was caused by a flaw in the code. +- **Failed Request**: An API endpoint responded with an error status code. +- **Illegal Object Access**: The code accessed an object that was null or undefined. +- **Invalid Argument**: A function was called with an invalid argument. +- **Network**: A server took long to respond, or the network was slow. + +Suspected causes can be used as filters in search, enabling you to locate relevant issues. + +{{< img src="/error_tracking/suspected-cause.png" alt="Filter your search by the suspected cause." >}} + +### Updating suspected cause labels + +Suspected causes can be manually edited if they are deemed incorrect, allowing for continuous improvement of the labeling process. + +To update the suspected cause, click the label and select a different one. + +{{< img src="/error_tracking/suspected-cause-labels.png" alt="Update the suspected cause label." >}} + +## Further Reading + +{{< partial name="whats-next/whats-next.html" >}} diff --git a/content/en/getting_started/_index.md b/content/en/getting_started/_index.md index 4d38fe8735945..94f5a04b0e78d 100644 --- a/content/en/getting_started/_index.md +++ b/content/en/getting_started/_index.md @@ -35,7 +35,7 @@ The table below lists a few examples of Datadog products:

Development

@@ -127,7 +127,7 @@ For the fastest introduction to navigating Datadog, try the [Quick Start course] {{< nextlink href="/getting_started/ci_visibility" >}}CI Visibility: Collect CI pipeline data by setting up integrations with your CI providers.{{< /nextlink >}} {{< nextlink href="/getting_started/test_optimization" >}}Test Optimization: Collect CI test data by setting up test services in Datadog.{{< /nextlink >}} {{< nextlink href="/getting_started/test_impact_analysis" >}}Test Impact Analysis: Optimize your test suite and reduce CI costs by only running tests that are relevant to your code changes.{{< /nextlink >}} -{{< nextlink href="/getting_started/code_analysis" >}}Code Analysis: Analyze your repositories for quality and security issues.{{< /nextlink >}} +{{< nextlink href="/getting_started/code_security" >}}Code Security: Analyze your first-party code and open source libraries in your applications from development to runtime.{{< /nextlink >}} {{< /whatsnext >}} ## Further Reading diff --git a/content/en/getting_started/application_security/_index.md b/content/en/getting_started/application_security/_index.md index fc187abb95d4c..8194a437e25a9 100644 --- a/content/en/getting_started/application_security/_index.md +++ b/content/en/getting_started/application_security/_index.md @@ -12,9 +12,6 @@ further_reading: - link: "https://dtdg.co/fe" tag: "Foundation Enablement" text: "Join an interactive session to elevate your security and threat detection" -- link: "/getting_started/application_security/software_composition_analysis" - tag: "Guide" - text: "Getting Started with Software Composition Analysis" - link: "https://securitylabs.datadoghq.com/" tag: "Security Labs" text: "Security research, reports, tips, and videos from Datadog" diff --git a/content/en/getting_started/application_security/software_composition_analysis.md b/content/en/getting_started/application_security/software_composition_analysis.md index 56a6bc7bf1e42..4b8f66d57822e 100644 --- a/content/en/getting_started/application_security/software_composition_analysis.md +++ b/content/en/getting_started/application_security/software_composition_analysis.md @@ -6,10 +6,10 @@ further_reading: - link: "https://www.datadoghq.com/blog/datadog-software-composition-analysis/" tag: "Blog" text: "Mitigate vulnerabilities from third-party libraries with Datadog Software Composition Analysis" -- link: "/code_analysis/software_composition_analysis/" +- link: "/security/code_security/software_composition_analysis/" tag: "Documentation" text: "Read more about Software Composition Analysis in source code" -- link: "/security/application_security/software_composition_analysis" +- link: "/security/code_security/software_composition_analysis" tag: "Documentation" text: "Read more about Software Composition Analysis in ASM libraries" - link: "/security/application_security/how-appsec-works" @@ -42,7 +42,7 @@ First, see the [Library Compatibility][12] requirements page to verify if the Da 4. Click **Enable for Selected Service(s)** to complete the activation of Software Composition Analysis (SCA) for the chosen service(s). - {{< img src="/security/application_security/software_composition_analysis/APM_SCA-enablement-quick-start-guide.mp4" alt="quick start guide in the Datadog UI" video="true">}} + {{< img src="/code_security/software_composition_analysis/APM_SCA-enablement-quick-start-guide.mp4" alt="quick start guide in the Datadog UI" video="true">}} ### Enable SCA on your repositories and services using the Settings page @@ -54,11 +54,11 @@ First, see the [Library Compatibility][12] requirements page to verify if the Da 1. Click **Select Repositories** on your desired GitHub account and toggle **Enable Software Composition Analysis (SCA)** to enable for all repositories. If you do not see any GitHub accounts listed, [create a new GitHub App][14] to get started. -{{< img src="/security/application_security/software_composition_analysis/SCA-github-all-repositories.png" alt="enable SCA for all repositories">}} +{{< img src="/code_security/software_composition_analysis/SCA-github-all-repositories.png" alt="enable SCA for all repositories">}} Optionally, you can select specific GitHub repositories to enable SCA by clicking the toggle for each repository. -{{< img src="/security/application_security/software_composition_analysis/SCA-github-enabled-repositories.png" alt="enable SCA for all repositories" style="width:100%;" >}} +{{< img src="/code_security/software_composition_analysis/SCA-github-enabled-repositories.png" alt="enable SCA for all repositories" style="width:100%;" >}} #### Enable SCA on services @@ -68,14 +68,14 @@ Optionally, you can select specific GitHub repositories to enable SCA by clickin
-{{< img src="/security/application_security/software_composition_analysis/SCA-enablement-settings-services.mp4" alt="SCA enablement in the Datadog UI" video="true">}} +{{< img src="/code_security/software_composition_analysis/SCA-enablement-settings-services.mp4" alt="SCA enablement in the Datadog UI" video="true">}} ## Phase 2: Identify 1. **Identify Vulnerabilities**: Navigate to [Vulnerabilities][5]. - Sort by `Status`, `Vulnerability Source`, and `Severity`. - To switch to the code repository commit point of view, click on the **static** button. To switch to the real-time point of view to the applications already running, click on the **runtime** button. - {{< img src="/security/application_security/software_composition_analysis/asm_sca_vulnerabilities_2.png" alt="Software Composition Analysis (SCA) explorer page showing vulnerabilities sorted by static or runtime." style="width:100%;" >}} + {{< img src="/code_security/software_composition_analysis/asm_sca_vulnerabilities_2.png" alt="Software Composition Analysis (SCA) explorer page showing vulnerabilities sorted by static or runtime." style="width:100%;" >}} Each vulnerability has its own status to help prioritize and manage findings: @@ -149,5 +149,5 @@ For information on disabling Software Composition Analysis, see [Disabling Softw [12]: https://app.datadoghq.com/security/configuration/asm/onboarding [13]: https://app.datadoghq.com/security/configuration/asm/setup [14]: https://docs.datadoghq.com/integrations/github/ -[15]: /security/application_security/software_composition_analysis/setup/compatibility/ +[15]: /security/code_security/software_composition_analysis/setup_runtime/compatibility/ [16]: /security/application_security/troubleshooting/#disabling-software-composition-analysis \ No newline at end of file diff --git a/content/en/getting_started/code_analysis/_index.md b/content/en/getting_started/code_analysis/_index.md deleted file mode 100644 index ebeb44d56190b..0000000000000 --- a/content/en/getting_started/code_analysis/_index.md +++ /dev/null @@ -1,390 +0,0 @@ ---- -title: Getting Started with Code Analysis -aliases: -- /code_analysis/faq -further_reading: -- link: 'https://www.datadoghq.com/blog/datadog-code-analysis/' - tag: 'Blog' - text: 'Ship high-quality, secure code faster with Datadog Code Analysis' -- link: 'https://www.datadoghq.com/blog/datadog-software-composition-analysis/' - tag: 'Blog' - text: 'Mitigate vulnerabilities from third-party libraries with Datadog Software Composition Analysis' -- link: '/code_analysis/' - tag: 'Documentation' - text: 'Learn about Code Analysis' -- link: '/security/application_security/software_composition_analysis' - tag: 'Documentation' - text: 'Learn about Software Composition Analysis' -algolia: - tags: ["code analysis", "code analysis datadog", "code analysis ci pipeline", "code analysis ci pipelines"] ---- - -## Overview - -[Datadog Code Analysis][1] allows you to identify and resolve code quality issues and security vulnerabilities before deploying to production, ensuring safe and clean code throughout the software development lifecycle. - -{{< img src="/code_analysis/repositories.png" alt="Session Replay available button, as well as visualization options" style="width:100%" >}} - -Code Analysis offers a comprehensive suite of tools, including [Static Analysis][2] and [Software Composition Analysis][3], to improve overall software delivery. - -* Static Analysis (SAST) scans your repositories for quality and security issues in first-party code, and suggests fixes to prevent these issues from impacting production. -* Software Composition Analysis (SCA) scans your codebase for imported open source libraries, helping you manage your dependencies and secure your applications from external threats. - -By using [`datadog-ci`][5], you can integrate analyses from other providers into your development workflow, allowing you to send Static Analysis and SCA results directly to Datadog. You can access the latest scan results for each repository on the [**Repositories** page][6] to effectively monitor and enhance code health across all branches. - -## Set up Code Analysis - -You can configure Code Analysis to run scans on code directly in Datadog or on code running in your CI pipelines. To get started, navigate to [**Software Delivery** > **Code Analysis** > **Repositories**][6] and click **+ Add a Repository**. - -{{< tabs >}} -{{% tab "Datadog Hosted" %}} - -With Datadog-hosted scans, your code is scanned within Datadog's infrastructure as opposed to within your CI pipeline. Datadog reads your code, runs the static analyzer to perform Static Analysis and/or Software Composition Analysis, and uploads the results. - -Using Datadog-hosted scans eliminates the need for you to configure a CI pipeline so you can use Code Analysis. - -Enable Code Analysis on your GitHub repositories for each GitHub Account you’ve added by setting up the [GitHub integration][101]. - -{{< img src="/code_analysis/setup/enable_account.png" alt="Session Replay available button, as well as visualization options" style="width:100%" >}} - -You can either enable Software Composition Analysis (SCA) to scan for vulnerabilities, licensing issues, and supply chain risks in your open source libraries for all repositories, or you can enable SCA for individual repositories in the **Repositories** side panel. - -{{< img src="/code_analysis/setup/enable_repository.png" alt="Session Replay available button, as well as visualization options" style="width:100%" >}} - -[101]: /integrations/github/ - -{{% /tab %}} -{{% tab "In CI Pipelines" %}} - -Select from the following types of scans you want to run in your repository. - -* [Static Analysis][101]: Examine your code for poor practices and vulnerabilities. -* [Software Composition Analysis][102]: Check your third-party libraries for vulnerabilities. - -Select a source code management (SCM) provider such as [GitHub](#github) or [another provider](#other-providers). - -### GitHub - -If you are using a GitHub repository, you can set up the [GitHub integration][103] and connect your repository to enable Static Analysis and Software Composition Analysis scans. - -{{< img src="/getting_started/code_analysis/github_accounts.png" alt="Click the Connect Repositories button for your GitHub account." style="width:100%" >}} - -Comments in [GitHub pull requests][105] are enabled by default. Click **Connect Repositories** on the Code Analysis Setup page and hover over the Missing flag on the PR Permissions column to see which permissions you need to update for your account. - -{{< img src="/getting_started/code_analysis/missing_permissions.png" alt="Hover over the Missing pill to see which permissions must be updated for your repository." style="width:100%" >}} - -To disable this feature, navigate to the [**Code Analysis Settings** page][106] and click the toggle in the GitHub Comments column. - -{{< img src="/getting_started/code_analysis/github_comments_setting.png" alt="Click the toggle in the GitHub Comments column to enable or disable Code Analysis for a connected GitHub repository." style="width:100%" >}} - -### Other providers - -For other providers, you can run the Datadog CLI directly in your CI pipeline platform. For more information, see [Generic CI Providers for Static Analysis][107] and [Generic CI Providers for Software Composition Analysis][108]. - -You must [run an analysis of your repository](#run-code-analysis-in-your-ci-provider) on the default branch for results to start appearing on the [**Repositories** page][109]. - -## Run Code Analysis in your CI provider - -To upload results to Datadog, ensure you have a [Datadog API key and application key][110]. - -Specify a name for the service or library in the `dd_service` field such as `shopist`. - -### GitHub Action - -You can configure a GitHub Action to run Static Analysis and Software Composition Analysis scans as part of your CI workflows. - -Create a `.github/workflows/datadog-static-analysis.yml` file in your repository with the following content: - -```yaml -on: [push] - -name: Datadog Static Analysis - -jobs: - static-analysis: - runs-on: ubuntu-latest - name: Datadog Static Analyzer - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Check code meets quality and security standards - id: datadog-static-analysis - uses: DataDog/datadog-static-analyzer-github-action@v1 - with: - dd_api_key: ${{ secrets.DD_API_KEY }} - dd_app_key: ${{ secrets.DD_APP_KEY }} - dd_service: shopist - dd_env: ci - dd_site: datadoghq.com - cpu_count: 2 -``` - -Then, create a `.github/workflows/datadog-sca.yml` file in your repository with the following content: - -```yaml -on: [push] - -name: Datadog Software Composition Analysis - -jobs: - software-composition-analysis: - runs-on: ubuntu-latest - name: Datadog SBOM Generation and Upload - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Check imported libraries are secure and compliant - id: datadog-software-composition-analysis - uses: DataDog/datadog-sca-github-action@main - with: - dd_api_key: ${{ secrets.DD_API_KEY }} - dd_app_key: ${{ secrets.DD_APP_KEY }} - dd_service: shopist - dd_env: ci - dd_site: datadoghq.com -``` - -### Customizable script - -You can upload a SARIF report with Static Analysis results or an SBOM report with Software Composition Analysis results to Datadog using the [datadog-ci NPM package][111]. - -#### Static Analysis - -To upload Static Analysis reports to Datadog, you must install Unzip and Node.js version 14 or later. - -Add the following content to your CI pipeline configuration: - -```shell -# Set the Datadog site to send information to -export DD_SITE="datadoghq.com" - -# Install dependencies -npm install -g @datadog/datadog-ci - -# Download the latest Datadog static analyzer: -# https://github.com/DataDog/datadog-static-analyzer/releases -DATADOG_STATIC_ANALYZER_URL=https://github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer-x86_64-unknown-linux-gnu.zip - -curl -L $DATADOG_STATIC_ANALYZER_URL > /tmp/ddog-static-analyzer.zip -unzip /tmp/ddog-static-analyzer.zip -d /tmp -mv /tmp/datadog-static-analyzer /usr/local/datadog-static-analyzer - -# Run Static Analysis -/usr/local/datadog-static-analyzer -i . -o /tmp/report.sarif -f sarif - -# Upload results -datadog-ci sarif upload /tmp/report.sarif --service "shopist" --env "ci" -``` - -#### Software Composition Analysis - -To upload Software Composition Analysis results to Datadog, you must install Trivy and Node.js version 14 or later. - -Add the following content to your CI pipeline configuration: - -```shell -# Set the Datadog site to send information to -export DD_SITE="datadoghq.com" - -# Install dependencies -npm install -g @datadog/datadog-ci - -# Download the latest Datadog OSV Scanner: -# https://github.com/DataDog/osv-scanner/releases -DATADOG_OSV_SCANNER_URL=https://github.com/DataDog/osv-scanner/releases/latest/download/osv-scanner_linux_amd64.zip - -# Install OSV Scanner -mkdir /osv-scanner -curl -L -o /osv-scanner/osv-scanner.zip $DATADOG_OSV_SCANNER_URL -cd /osv-scanner && unzip osv-scanner.zip -chmod 755 /osv-scanner/osv-scanner - -# Output OSC Scanner results -/osv-scanner/osv-scanner --skip-git -r --experimental-only-packages --format=cyclonedx-1-5 --paths-relative-to-scan-dir --output=/tmp/sbom.json /path/to/repository - -# Upload results -datadog-ci sbom upload --service "shopist" --env "ci" /tmp/sbom.json -``` - -Once you’ve configured these scripts, run an analysis of your repository on the default branch. Then, results will start appearing on the **Repositories** page. - -[101]: /code_analysis/static_analysis -[102]: /code_analysis/software_composition_analysis -[103]: /integrations/github -[104]: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions -[105]: /code_analysis/github_pull_requests -[106]: https://app.datadoghq.com/ci/settings/code-analysis -[107]: /code_analysis/static_analysis/generic_ci_providers -[108]: /code_analysis/software_composition_analysis/generic_ci_providers -[109]: https://app.datadoghq.com/ci/code-analysis -[110]: /account_management/api-app-keys/ -[111]: https://www.npmjs.com/package/@datadog/datadog-ci - -{{% /tab %}} -{{< /tabs >}} - -## Run Static Analysis in an IDE - -Install the [Datadog IDE plugins][7] to run Static Analysis scans locally and see results directly in your code editor. You can detect and fix problems such as maintainability issues, bugs, or security vulnerabilities in your code before you commit your changes. - -To start running Static Analysis scans in your IDE, see the respective documentation for your code editor of choice. - -{{< partial name="code_analysis/ide-plugins.html" >}} - -
- - -## Enable Code Analysis comments in GitHub pull requests - -You can integrate Code Analysis with GitHub pull requests to automatically flag code violations and enhance code quality in the review process. - -{{< img src="/getting_started/code_analysis/github_suggestion.png" alt="A suggestion from Code Analysis in a GitHub pull request" style="width:100%" >}} - -When configured, Code Analysis directly comments on the PR, indicating violations with details such as the name, ID, severity, and suggested fixes, which you can directly apply from the GitHub UI. - -After adding the [appropriate configuration files][10] to your repository, create a [GitHub App][11] in Datadog (a new app or an update to an existing one). Ensure it has the proper read and write access to pull requests. - -Once you've configured your app, navigate to the **Code Analysis Settings** page and click the toggle in the **GitHub Comments** column for each repository. - -{{< img src="/getting_started/code_analysis/github_comments_setting.png" alt="Toggles for each repository to enable or disable Code Analysis comments in GitHub pull requests" style="width:100%" >}} - -For more information, see [GitHub Pull Requests][12]. - -## Search and manage repositories - -Click on a repository on the [**Repositories** page][6] to access a more detailed view where you can customize the search query by branch (with the default branch appearing first) and by commit (starting with the latest). - -{{< img src="/getting_started/code_analysis/sca_vulnerabilities.png" alt="The Library Vulnerabilities view of the Code Analysis results from a repository's default branch and latest commit" style="width:100%" >}} - -{{< tabs >}} -{{% tab "Static Analysis" %}} - -You can use the following out-of-the-box facets to create a search query for identifying and resolving poor coding practices in the **Code Quality** tab or security risks in the **Code Vulnerabilities** tab. - -| Facet Name | Description | -|-----------------------------------|-------------------------------------------------------------------------| -| Result Status | Filters results based on the completion status of the analysis. | -| Rule ID | Specific rules that triggered the findings. | -| Tool Name | Determines which tools contributed to the analysis. | -| CWE (Common Weakness Enumeration) | Filters findings by recognized vulnerability categories. | -| Has Fixes | Filters issues for which suggested fixes are available. | -| Result Message | Contains concise descriptions or messages associated with the findings. | -| Rule Description | Contains the rationale behind each rule. | -| Source File | Contains the files where issues were detected. | -| Tool Version | Filters results by the version of the tools used. | - -You can access suggested fixes directly from the results to improve code quality practices and address security vulnerabilities. - -{{< img src="/getting_started/code_analysis/suggested_fix.png" alt="A suggested code fix on the Fixes tab of a Code Analysis result" style="width:100%" >}} - -{{% /tab %}} -{{% tab "Software Composition Analysis" %}} - -You can use the following out-of-the-box facets to create a search query for identifying and addressing security risks in third-party libraries in the **Library Vulnerabilities** tab or reviewing your library inventory in the **Library Catalog** tab. - -| Facet Name | Description | -|--------------------|----------------------------------------------------------------| -| Dependency Name | Identifies the libraries by name. | -| Dependency Version | Filters by specific versions of libraries. | -| Language | Sorts libraries by the programming language. | -| Score | Sorts the risk or quality score of the dependencies. | -| Severity | Filters vulnerabilities based on their severity rating. | -| Platform | Distinguishes libraries by the platform they are intended for. | - -You can access vulnerability reports and locate the source files where the vulnerability was discovered in your projects, along with information about the file’s code owners. - -{{< img src="/getting_started/code_analysis/sci_vulnerabilities.png" alt="A link to the source code directly in GitHub from a detected library vulnerability" style="width:100%" >}} - -{{% /tab %}} -{{< /tabs >}} - -## Explore results in the Service Catalog - -Investigate code violations associated with your services and code violations identified from Static Analysis to troubleshoot slowdowns and failures. Navigate to [**Service Management** > **Services** > **Service Catalog**][13] and click on the **Delivery** view to analyze the pre-production status of your services. - -{{< img src="/getting_started/code_analysis/catalog_view.png" alt="A link to the source code directly in GitHub from a detected library vulnerability" style="width:100%" >}} - -Click on a service to access information about CI pipelines from Pipeline Visibility, in addition to security vulnerabilities and code quality issues from Code Analysis on the **Delivery** tab of the side panel. - -{{< img src="/getting_started/code_analysis/catalog_service.png" alt="A link to the source code directly in GitHub from a detected library vulnerability" style="width:100%" >}} - -### Linking services to code violations and libraries - -Datadog associates code violations or libraries with relevant services by using the following mechanisms: - -1. [Identifying the code location associated with a service using the Service Catalog.](#identifying-the-code-location-in-the-service-catalog) -2. [Detecting usage patterns of files within additional Datadog products.](#detecting-file-usage-patterns) -3. [Searching for the service name in the file path or repository.](#detecting-service-name-in-paths-and-repository-names) - -If one method succeeds, no further mapping attempts are made. Each mapping method is detailed below. - -#### Identifying the code location in the Service Catalog - -The schema version `v3` and later of the Service Catalog allows you to add the mapping of your code location for your service. The `codeLocations` section specifies the location of the repository containing the code and its associated paths. - -The `paths` attribute is a list of [globs][14] -that should match paths in the repository. - -{{< code-block lang="yaml" filename="entity.datadog.yaml" collapsible="true" >}} -apiVersion: v3 -kind: service -metadata: - name: my-service -datadog: - codeLocations: - - repositoryURL: https://github.com/myorganization/myrepo.git - paths: - - path/to/service/code/** -{{< /code-block >}} - - -#### Detecting file usage patterns - -Datadog detects file usage in additional products such as Error Tracking and associate -files with the runtime service. For example, if a service called `foo` has -a log entry or a stack trace containing a file with a path `/modules/foo/bar.py`, -it associates files `/modules/foo/bar.py` to service `foo`. - -#### Detecting service name in paths and repository names - -Datadog detects service names in paths and repository names, and associates the file with the service if a match is found. - -For a repository match, if there is a service called `myservice` and -the repository URL is `https://github.com/myorganization/myservice.git`, then, -it associates `myservice` to all files in the repository. - -If no repository match is found, Datadog attempts to find a match in the -`path` of the file. If there is a service named `myservice`, and the path is `/path/to/myservice/foo.py`, the file is associated with `myservice` because the service name is part of the path. If two services are present -in the path, the service name the closest to the filename is selected. - - -### Linking teams to code violations and libraries - -Datadog automatically associates the team attached to a service when a code violation or library issue is detected. For example, if the file `domains/ecommerce/apps/myservice/foo.py` -is associated with `myservice`, then the team `myservice` will be associated to any violation -detected in this file. - -If no services or teams are found, Datadog uses the `CODEOWNERS` [file][15] -in your repository. The `CODEOWNERS` file determines which team owns a file in your Git provider. - -**Note**: You must accurately map your Git provider teams to your [Datadog teams][16] for this feature to function properly. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /code_analysis/ -[2]: /code_analysis/static_analysis -[3]: /code_analysis/software_composition_analysis -[4]: /security/application_security/software_composition_analysis -[5]: https://www.npmjs.com/package/@datadog/datadog-ci -[6]: https://app.datadoghq.com/ci/code-analysis -[7]: /code_analysis/ide_plugins -[9]: https://app.datadoghq.com/dash/integration/31166/software-delivery---static-analysis-overview -[10]: /code_analysis/static_analysis/github_actions/ -[11]: /code_analysis/github_pull_requests/#update-an-existing-github-app -[12]: /code_analysis/github_pull_requests -[13]: https://app.datadoghq.com/services -[14]: https://en.wikipedia.org/wiki/Glob_(programming) -[15]: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners -[16]: /account_management/teams/ diff --git a/content/en/getting_started/code_security/_index.md b/content/en/getting_started/code_security/_index.md new file mode 100644 index 0000000000000..e07431ea8adde --- /dev/null +++ b/content/en/getting_started/code_security/_index.md @@ -0,0 +1,210 @@ +--- +title: Getting Started with Code Security +aliases: +- /getting_started/code_analysis/ +--- + +## Overview + +Datadog Code Security helps you secure and maintain your applications’ first-party code and open source libraries from development to production. + +It offers a suite of tools to help you secure your code throughout the software development lifecycle: + +- **Software Composition Analysis (SCA)** detects vulnerable open source libraries present in your repositories and affecting your services at runtime, helping you secure and maintain your software supply chain. +- **Static Code Analysis (SAST)** uses a Static Application Security Testing method to scan your repositories for security and quality issues in first-party code, providing suggested fixes to prevent these issues from reaching production +- **Runtime Code Analysis (IAST)** uses an Interactive Application Security Testing method to detect vulnerabilities affecting your services at runtime. + +## Set up Code Security + +### Open source libraries + +Datadog Software Composition Analysis detects library vulnerabilities and catalogs dependencies within your codebase as well as on your running services. + +See [Software Composition Analysis][1] to set up the static and/or runtime library vulnerability detection. + +### First-party code + +{{< whatsnext desc="There are two ways to secure and maintain your first-party code with Datadog:">}} + {{< nextlink href="security/code_security/static_analysis/setup/" >}}Static Code Analysis (SAST) Setup{{< /nextlink >}} + {{< nextlink href="security/code_security/iast/setup/" >}}IAST Setup{{< /nextlink >}} +{{< /whatsnext >}} + +## Development lifecycle integrations + +### Enable pull request comments + +Datadog can act as an automatic code reviewer to flag vulnerabilities and quality violations in GitHub pull requests. For more information, see [GitHub Pull Requests][2]. + +{{< img src="/security/application_security/code_security/github_suggestion.png" alt="Datadog code reviewing in Github" style="width:100%;" >}} + +### Customize your configuration + +In [Code Security Settings][3], you can customize which findings lead to PR comments (e.g. only critical and high severity findings). + +For Static Code Analysis (SAST), you can also configure which [SAST rules][4] apply across your organization or for specific repositories. See Datadog’s default SAST rules here. + +### Install IDE integrations + +Install the [Datadog IDE plugins][5] to run Static Code Analysis (SAST) scans locally and see results directly in your code editor. You can detect and fix problems such as security vulnerabilities, maintainability issues, or bugs in your code before you commit your changes. + +To start running code scans in your IDE, see the respective documentation for your code editor of choice. + +{{< whatsnext desc="See the documentation for information about the following integrations:">}} + {{< nextlink href="developers/ide_plugins/idea/#static-analysis" >}}JetBrains IDEs: IntelliJ IDEA, GoLand, PhpStorm, and PyCharm{{< /nextlink >}} + {{< nextlink href="developers/ide_plugins/vscode/#static-analysis" >}}Visual Studio Code{{< /nextlink >}} + {{< nextlink href="developers/ide_plugins/visual_studio/#static-analysis" >}}Visual Studio{{< /nextlink >}} +{{< /whatsnext >}} + +### Set up Quality Gates + +Datadog provides [Quality Gates][6] as a platform capability to help you maintain and enforce security and quality standards for changes introduced to your codebase. For more information, see [Quality Gate setup][7]. + +## Prioritize vulnerabilities with runtime context + +Code Security offers **vulnerability-centric views** of all library and code vulnerabilities detected from both static repository scanning and runtime service detection. + +### Library vulnerabilities explorer + +For library vulnerabilities, each row in the table represents a specific vulnerability affecting a library version. Based on if you have static or runtime detection enabled, the **Detected In** column will display the specific repositories and/or services affected by this vulnerability. + +In the side panel for a single library vulnerability in SCA, in addition to details about the vulnerability, Datadog shows: + +- A **Severity breakdown** of the highest severity instance of this vulnerability seen across your repositories and your services. For each detected location of the vulnerability in your repositories and/or services, Datadog adjusts the base severity score of the vulnerability based on environmental factors. To learn more, see [Datadog severity score][8]. +- A **Repositories** table of all instances where the vulnerability was detected in your repositories. For each instance, Datadog shows whether the dependency is classified as direct or transitive, the remediation status of the vulnerability, as well as specific remediation steps. +- An **Impacted Services** table of all running services affected by this library vulnerability. A service is affected by a library vulnerability if the library was loaded at runtime and detected by Datadog’s application tracing libraries. + + Severities are scored by the following: +| CVSS Score | Qualitative Rating +| --------------| -------------------| +| `0.0` | None | +| `0.1 - 3.9` | Low | +| `4.0 - 6.9` | Medium | +| `7.0 - 8.9` | High | +| `9.0 - 10.0` | Critical | + +## Search and manage repositories + +Code Security also offers repository-centric views of static scan results, supporting granular filtering across all branches and commits for scanned repositories. + +Click on a repository on the **Repositories** page to access a more detailed view where you can customize the search query by branch (with the default branch appearing first) and by commit (starting with the latest). + +{{< tabs >}} +{{% tab "Static Code Analysis (SAST)" %}} + +You can use the following out-of-the-box facets to create a search query for identifying and resolving poor coding practices in the **Code Quality** tab or security risks in the **Code Vulnerabilities** tab. + +| Facet Name | Description | +|-----------------------------------|-------------------------------------------------------------------------| +| Result Status | Filters results based on the completion status of the analysis. | +| Rule ID | Specific rules that triggered the findings. | +| Tool Name | Determines which tools contributed to the analysis. | +| CWE (Common Weakness Enumeration) | Filters findings by recognized vulnerability categories. | +| Has Fixes | Filters issues for which suggested fixes are available. | +| Result Message | Contains concise descriptions or messages associated with the findings. | +| Rule Description | Contains the rationale behind each rule. | +| Source File | Contains the files where issues were detected. | +| Tool Version | Filters results by the version of the tools used. | + +You can access suggested fixes directly from the results to improve code quality practices and address security vulnerabilities. + +{{< img src="/getting_started/code_analysis/suggested_fix.png" alt="A suggested code fix on the Fixes tab of a Code Analysis result" style="width:100%" >}} + +{{% /tab %}} +{{% tab "Software Composition Analysis" %}} + +You can use the following out-of-the-box facets to create a search query for identifying and addressing security risks in third-party libraries in the **Library Vulnerabilities** tab or reviewing your library inventory in the **Library Catalog** tab. + +| Facet Name | Description | +|--------------------|----------------------------------------------------------------| +| Dependency Name | Identifies the libraries by name. | +| Dependency Version | Filters by specific versions of libraries. | +| Language | Sorts libraries by the programming language. | +| Score | Sorts the risk or quality score of the dependencies. | +| Severity | Filters vulnerabilities based on their severity rating. | +| Platform | Distinguishes libraries by the platform they are intended for. | + +You can access vulnerability reports and locate the source files where the vulnerability was discovered in your projects, along with information about the file’s code owners. + +{{< img src="/security/application_security/code_security/sci_vulnerabilities.png" alt="A link to the source code directly in GitHub from a detected library vulnerability" style="width:100%" >}} + +{{% /tab %}} +{{< /tabs >}} + +## Notify, remediate, and report + +Code Security helps you set up workflows to track and manage remediation of findings: + +- Set up [notification rules][9] to notify your team(s) of new findings via Slack, Jira, email, and more +- Track vulnerabilities by service and team in the **Code Security Summary** page. + +## Link Datadog services to repository scan results + +Datadog associates code violations or libraries with relevant services by using the following mechanisms: + +1. [Identifying the code location associated with a service using the Service Catalog.](#identifying-the-code-location-in-the-service-catalog) +2. [Detecting usage patterns of files within additional Datadog products.](#detecting-file-usage-patterns) +3. [Searching for the service name in the file path or repository.](#detecting-service-name-in-paths-and-repository-names) + +If one method succeeds, no further mapping attempts are made. Each mapping method is detailed below. + +#### Identifying the code location in the Service Catalog + +The schema version `v3` and later of the Service Catalog allows you to add the mapping of your code location for your service. The `codeLocations` section specifies the location of the repository containing the code and its associated paths. + +The `paths` attribute is a list of [globs][14] +that should match paths in the repository. + +{{< code-block lang="yaml" filename="entity.datadog.yaml" collapsible="true" >}} +apiVersion: v3 +kind: service +metadata: + name: my-service +datadog: + codeLocations: + - repositoryURL: https://github.com/myorganization/myrepo.git + paths: + - path/to/service/code/** +{{< /code-block >}} + + +#### Detecting file usage patterns + +Datadog detects file usage in additional products such as Error Tracking and associate +files with the runtime service. For example, if a service called `foo` has +a log entry or a stack trace containing a file with a path `/modules/foo/bar.py`, +it associates files `/modules/foo/bar.py` to service `foo`. + +#### Detecting service name in paths and repository names + +Datadog detects service names in paths and repository names, and associates the file with the service if a match is found. + +For a repository match, if there is a service called `myservice` and +the repository URL is `https://github.com/myorganization/myservice.git`, then, +it associates `myservice` to all files in the repository. + +If no repository match is found, Datadog attempts to find a match in the +`path` of the file. If there is a service named `myservice`, and the path is `/path/to/myservice/foo.py`, the file is associated with `myservice` because the service name is part of the path. If two services are present +in the path, the service name the closest to the filename is selected. + + +### Linking teams to code violations and libraries + +Datadog automatically associates the team attached to a service when a code violation or library issue is detected. For example, if the file `domains/ecommerce/apps/myservice/foo.py` +is associated with `myservice`, then the team `myservice` will be associated to any violation +detected in this file. + +If no services or teams are found, Datadog uses the `CODEOWNERS` [file][15] +in your repository. The `CODEOWNERS` file determines which team owns a file in your Git provider. + +**Note**: You must accurately map your Git provider teams to your [Datadog teams][10] for this feature to function properly. + +[1]: /security/code_security/software_composition_analysis/ +[2]: /security/code_security/dev_tool_int/github_pull_requests/ +[3]: https://app.datadoghq.com/security/configuration/code-security/setup +[4]: /security/code_security/static_analysis/static_analysis_rules/ +[5]: /security/code_security/dev_tool_int/ide_plugins/ +[6]: /quality_gates/ +[7]: /quality_gates/setup +[8]: /security/code_security/software_composition_analysis/#datadog-severity-score +[9]: https://app.datadoghq.com/security/configuration/notification-rules +[10]: /account_management/teams/ \ No newline at end of file diff --git a/content/en/getting_started/devsecops/_index.md b/content/en/getting_started/devsecops/_index.md index 56f103b79e8c3..d6cb446e08022 100644 --- a/content/en/getting_started/devsecops/_index.md +++ b/content/en/getting_started/devsecops/_index.md @@ -227,4 +227,4 @@ Learn more about the features included with Infrastructure DevSecOps Enterprise: [2]: /security/application_security [3]: /security/cloud_security_management/ [4]: /tracing -[10]: /security/application_security/software_composition_analysis/ +[10]: /security/code_security/software_composition_analysis/ diff --git a/content/en/getting_started/software_delivery.md b/content/en/getting_started/software_delivery.md new file mode 100644 index 0000000000000..38a109f26badd --- /dev/null +++ b/content/en/getting_started/software_delivery.md @@ -0,0 +1,13 @@ +--- +title: Getting Started with Software Delivery +disable_toc: true +--- + +{{< whatsnext desc=" ">}} + {{< nextlink href="/getting_started/ci_visibility/" >}}Getting Started with CI Visibility{{< /nextlink >}} + + {{< nextlink href="/getting_started/test_optimization/" >}}Getting Started with Test Optimization{{< /nextlink >}} + + {{< nextlink href="/getting_started/test_impact_analysis" >}}Getting Started with Test Impact Analysis{{< /nextlink >}} + +{{< /whatsnext >}} \ No newline at end of file diff --git a/content/en/getting_started/synthetics/mobile_app_testing.md b/content/en/getting_started/synthetics/mobile_app_testing.md new file mode 100644 index 0000000000000..53418ec31cad7 --- /dev/null +++ b/content/en/getting_started/synthetics/mobile_app_testing.md @@ -0,0 +1,19 @@ +--- +title: Getting Started with Mobile App Testing +description: "Create intelligent, self-maintaining mobile tests to ensure the most critical parts of your mobile applications are up and running from real devices." +further_reading: +- link: "https://www.datadoghq.com/blog/test-creation-best-practices/" + tag: "Blog" + text: "Best practices for creating end-to-end tests" +- link: "/synthetics/mobile_app_testing/mobile_app_tests" + tag: "Documentation" + text: "Learn how to create Synthetic mobile app tests" +- link: "/synthetics/mobile_app_testing/settings" + tag: "Documentation" + text: "Learn how to upload your iOS or Android mobile applications" +- link: "/continuous_testing/" + tag: "Documentation" + text: "Learn about Continuous Testing & CI/CD" +--- + +{{< include-markdown "synthetics/mobile_app_testing" >}} \ No newline at end of file diff --git a/content/en/glossary/terms/sast.md b/content/en/glossary/terms/sast.md index ed9f1c8975aea..979593c886cd1 100644 --- a/content/en/glossary/terms/sast.md +++ b/content/en/glossary/terms/sast.md @@ -2,7 +2,7 @@ title: static application security testing (SAST) synonyms: - static analysis - - code analysis + - Code Security core_product: - security - appsec diff --git a/content/en/integrations/guide/add-event-log-files-to-the-win32-ntlogevent-wmi-class.md b/content/en/integrations/guide/add-event-log-files-to-the-win32-ntlogevent-wmi-class.md index c1d39a77845a9..984f48e0035be 100644 --- a/content/en/integrations/guide/add-event-log-files-to-the-win32-ntlogevent-wmi-class.md +++ b/content/en/integrations/guide/add-event-log-files-to-the-win32-ntlogevent-wmi-class.md @@ -5,7 +5,7 @@ aliases: - /integrations/faq/how-to-add-event-log-files-to-the-win32-ntlogevent-wmi-class --- -Not all event logs are are in the Win32_NTLogEvent WMI class. Since the Event Viewer integration can only pick up events in this class, modify the Windows Registry to add event logs outside of the scope of this class. +Not all event logs are in the Win32_NTLogEvent WMI class. Since the Event Viewer integration can only pick up events in this class, modify the Windows Registry to add event logs outside of the scope of this class. The first step is to confirm whether or not the logfile can be accessed through the Win32_NTLogEvent using the following WMI query in Powershell. (This is the same query the Agent runs to collect these events) diff --git a/content/en/integrations/guide/source-code-integration.md b/content/en/integrations/guide/source-code-integration.md index 6f640cb9ea56e..3f6bcaedc3e4b 100644 --- a/content/en/integrations/guide/source-code-integration.md +++ b/content/en/integrations/guide/source-code-integration.md @@ -18,9 +18,9 @@ further_reading: - link: "/tests/developer_workflows/" tag: "Documentation" text: "Learn about Test Optimization" -- link: "/code_analysis/" +- link: "/security/code_security/" tag: "Documentation" - text: "Learn about Code Analysis" + text: "Learn about Code Security" - link: "/security/application_security/" tag: "Documentation" text: "Learn about Application Security Monitoring" @@ -552,19 +552,19 @@ For more information, see [Enhancing Developer Workflows with Datadog][102]. [102]: /tests/developer_workflows/#open-tests-in-github-and-your-ide {{% /tab %}} -{{% tab "Code Analysis" %}} +{{% tab "Code Security" %}} -You can see links from failed Static Analysis and Software Composition Analysis scans to their source repository in **Code Analysis**. +You can see links from failed Static Analysis and Software Composition Analysis scans to their source repository in **Code Security**. -1. Navigate to [**Software Delivery** > **Code Analysis**][101] and select a repository. +1. Navigate to [**Software Delivery** > **Code Security**][101] and select a repository. 2. In the **Code Vulnerabilities** or **Code Quality** view, click on a code vulnerability or violation. In the **Details** section, click the **View Code** button to open the flagged code in its source code repository. -{{< img src="integrations/guide/source_code_integration/code-analysis-scan.png" alt="Link to GitHub from the Code Analysis Code Vulnerabilities view" style="width:100%;">}} +{{< img src="integrations/guide/source_code_integration/code-analysis-scan.png" alt="Link to GitHub from the Code Security Code Vulnerabilities view" style="width:100%;">}} -For more information, see the [Code Analysis documentation][102]. +For more information, see the [Code Security documentation][102]. [101]: https://app.datadoghq.com/ci/code-analysis -[102]: /code_analysis/ +[102]: /security/code_security/ {{% /tab %}} {{% tab "Application Security Monitoring" %}} diff --git a/content/en/llm_observability/quickstart.md b/content/en/llm_observability/quickstart.md index 1fc6263b6b7f3..c8b53fd8cd608 100644 --- a/content/en/llm_observability/quickstart.md +++ b/content/en/llm_observability/quickstart.md @@ -13,7 +13,7 @@ further_reading: ## Overview -This guide uses the [LLM Observability SDK for Python][1]. If your application is written in another language, you can create traces by calling the [API][8] instead. +This guide uses the LLM Observability SDKs for [Python][1] and [Node.js][2]. If your application is written in another language, you can create traces by calling the [API][8] instead. ## Setup @@ -23,7 +23,7 @@ To better understand LLM Observability terms and concepts, you can explore the e ## Command line -To generate an LLM Observability trace, you can run a Python script. +To generate an LLM Observability trace, you can run a Python or Node.js script. ### Prerequisites @@ -32,16 +32,19 @@ To generate an LLM Observability trace, you can run a Python script. - An OpenAI API key stored in your environment as `OPENAI_API_KEY`. To create one, see [Account Setup][4] and [Set up your API key][6] in the official OpenAI documentation. - The OpenAI Python library installed. See [Setting up Python][5] in the official OpenAI documentation for instructions. -1. Install the SDK by adding the `ddtrace` and `openai` packages: +{{< tabs >}} +{{% tab "Python" %}} - {{< code-block lang="shell" >}} +1. Install the SDK and OpenAI packages: + + ```shell pip install ddtrace pip install openai - {{< /code-block >}} + ``` + +2. Create a script, which makes a single OpenAI call. -1. Create a Python script and save it as `quickstart.py`. This Python script makes a single OpenAI call. - - {{< code-block lang="python" filename="quickstart.py" >}} + ```python import os from openai import OpenAI @@ -54,25 +57,75 @@ To generate an LLM Observability trace, you can run a Python script. {"role": "user", "content": "I'd like to buy a chair for my living room."}, ], ) - {{< /code-block >}} + ``` -1. Run the Python script with the following shell command. This sends a trace of the OpenAI call to Datadog. +3. Run the script with the following shell command. This sends a trace of the OpenAI call to Datadog. ```shell DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP=onboarding-quickstart \ - DD_API_KEY= DD_SITE={{< region-param key="dd_site" >}} \ + DD_API_KEY= DD_SITE= \ DD_LLMOBS_AGENTLESS_ENABLED=1 ddtrace-run python quickstart.py ``` - For more information about required environment variables, see [the SDK documentation][9]. - + Replace `` with your Datadog API key, and replace `` with your [Datadog site][2]. + + For more information about required environment variables, see [the SDK documentation][1]. + +[1]: /llm_observability/setup/sdk/python/#command-line-setup +[2]: /getting_started/site/ +{{% /tab %}} + +{{% tab "Node.js" %}} +1. Install the SDK and OpenAI packages: + + ```shell + npm install dd-trace + npm install openai + ``` +2. Create a script, which makes a single OpenAI call. + + ```javascript + const { OpenAI } = require('openai'); + + const oaiClient = new OpenAI(process.env.OPENAI_API_KEY); + + function main () { + const completion = await oaiClient.chat.completions.create({ + model: 'gpt-3.5-turbo', + messages: [ + { role: 'system', content: 'You are a helpful customer assistant for a furniture store.' }, + { role: 'user', content: 'I\'d like to buy a chair for my living room.' }, + ] + }); + } + + main(); + ``` + +3. Run the script with the following shell command. This sends a trace of the OpenAI call to Datadog. + ```shell + DD_LLMOBS_ENABLED=1 DD_LLMOBS_ML_APP=onboarding-quickstart \ + DD_API_KEY= DD_SITE= \ + DD_LLMOBS_AGENTLESS_ENABLED=1 NODE_OPTIONS="--import dd-trace/initialize.mjs" node quickstart.js + ``` + + Replace `` with your Datadog API key, and replace `` with your [Datadog site][2]. + + For more information about required environment variables, see [the SDK documentation][1]. + +[1]: /llm_observability/setup/sdk/nodejs/#command-line-setup +[2]: /getting_started/site/ + +{{% /tab %}} +{{< /tabs >}} + **Note**: `DD_LLMOBS_AGENTLESS_ENABLED` is only required if you do not have the Datadog Agent running. If the Agent is running in your production environment, make sure this environment variable is unset. -1. View the trace of your LLM call on the **Traces** tab [of the **LLM Observability** page][3] in Datadog. +4. View the trace of your LLM call on the **Traces** tab [of the **LLM Observability** page][3] in Datadog. {{< img src="llm_observability/quickstart_trace_1.png" alt="An LLM Observability trace displaying a single LLM request" style="width:100%;" >}} -The trace you see is composed of a single LLM span. The `ddtrace-run` command automatically traces your LLM calls from [Datadog's list of supported integrations][10]. +The trace you see is composed of a single LLM span. The `ddtrace-run` or `NODE_OPTIONS="--import dd-trace/initialize.mjs"` command automatically traces your LLM calls from [Datadog's list of supported integrations][10]. If your application consists of more elaborate prompting or complex chains or workflows involving LLMs, you can trace it using the [Setup documentation][11] and the [SDK documentation][1]. @@ -80,14 +133,14 @@ If your application consists of more elaborate prompting or complex chains or wo {{< partial name="whats-next/whats-next.html" >}} -[1]: /llm_observability/setup/sdk/ +[1]: /llm_observability/setup/sdk/python +[2]: /llm_observability/setup/sdk/nodejs [3]: https://app.datadoghq.com/llm/traces [4]: https://platform.openai.com/docs/quickstart/account-setup [5]: https://platform.openai.com/docs/quickstart/step-1-setting-up-python [6]: https://platform.openai.com/docs/quickstart/step-2-set-up-your-api-key [7]: /account_management/api-app-keys/#add-an-api-key-or-client-token [8]: /llm_observability/setup/api -[9]: /llm_observability/setup/sdk/#command-line-setup [10]: /llm_observability/setup/auto_instrumentation/ [11]: /llm_observability/setup/ [12]: https://github.com/DataDog/llm-observability diff --git a/content/en/llm_observability/setup/auto_instrumentation.md b/content/en/llm_observability/setup/auto_instrumentation.md index b2eca9f3023e8..c107a6b6077ca 100644 --- a/content/en/llm_observability/setup/auto_instrumentation.md +++ b/content/en/llm_observability/setup/auto_instrumentation.md @@ -192,6 +192,7 @@ Datadog's [LLM Observability Node.js SDK][4] provides integrations that automati | Framework | Supported Versions | Tracer Version | |-----------------------------------------|--------------------|----------------------| | [OpenAI](#openai) (common JS) | >= 3.0.0 | >= 4.49.0, >= 5.25.0 | +| [LangChain](#langchain) (common JS) | >= 0.1.0 | >= 5.32.0 | In addition to capturing latency and errors, the integrations capture the input parameters, input and output messages, and token usage (when available) of each traced call. @@ -248,6 +249,21 @@ The OpenAI integration instruments the following methods, including streamed cal - [Embeddings][5]: - `openai.embeddings.create()` +## LangChain + +The LangChain integration provides automatic tracing for the [LangChain Node.js SDK's][9] LLM, chat model, chain, and OpenAI embeddings calls. + +- [LLMs][10]: + - `llm.invoke()` +- [Chat models][11] + - `chat_model.invoke()` +- [Chains][12] + - `chain.invoke()` + - `chain.batch()` +- [OpenAI embeddings][13] + - `embeddings.embedQuery()` + - `embeddings.embedDocuments()` + ### ESM support The OpenAI integration for the Node.js tracer is not supported in ESM. To use OpenAI along with `dd-trace` in your ESM projects without errors, create the following script: @@ -341,6 +357,11 @@ module.exports = { [6]: /llm_observability/setup/sdk/nodejs/#in-code-setup [7]: /llm_observability/setup/sdk/nodejs/#tracing-spans-using-inline-methods [8]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/nodejs/#bundling +[9]: https://js.langchain.com/docs/introduction/ +[10]: https://js.langchain.com/docs/integrations/llms/ +[11]: https://js.langchain.com/docs/concepts/chat_models +[12]: https://js.langchain.com/docs/how_to/sequence/ +[13]: https://js.langchain.com/docs/integrations/text_embedding/openai/ {{% /tab %}} {{< /tabs >}} diff --git a/content/en/logs/guide/azure-logging-guide.md b/content/en/logs/guide/azure-logging-guide.md index c1c8f1fd4d9c2..4eec75aa9dae7 100644 --- a/content/en/logs/guide/azure-logging-guide.md +++ b/content/en/logs/guide/azure-logging-guide.md @@ -162,7 +162,7 @@ If you already have a function app configured with an Event Hub connection strin 2. In the **Instance Details** section, configure the following settings: a. Select the **Code** radio button b. For **Runtime stack**, select `Node.js` - c. For **Version**, select `18 LTS`. + c. For **Version**, select `20 LTS`. 3. Configure other settings as desired. 4. Click **Review + create** to validate the resource. If validation is successful, click **Create**. diff --git a/content/en/logs/guide/delete_logs_with_sensitive_data.md b/content/en/logs/guide/delete_logs_with_sensitive_data.md index a02e915a5ef72..a64e1fdc61baa 100644 --- a/content/en/logs/guide/delete_logs_with_sensitive_data.md +++ b/content/en/logs/guide/delete_logs_with_sensitive_data.md @@ -33,7 +33,7 @@ To check or change your log retention period: ## Make logs with sensitive data un-queryable -If logs with sensitive data are within the the log retention period, you can make then un-queryable in Datadog's Log Explorer, Dashboards, and Live Tail until they age out. Logs made un-queryable are not available for querying or viewing. Follow these [instructions][2] to make logs with sensitive data un-queryable in Datadog. +If logs with sensitive data are within the log retention period, you can make then un-queryable in Datadog's Log Explorer, Dashboards, and Live Tail until they age out. Logs made un-queryable are not available for querying or viewing. Follow these [instructions][2] to make logs with sensitive data un-queryable in Datadog. ## Delete an entire index diff --git a/content/en/logs/log_collection/javascript.md b/content/en/logs/log_collection/javascript.md index 2b06b41bc2b90..25f12a83fb9be 100644 --- a/content/en/logs/log_collection/javascript.md +++ b/content/en/logs/log_collection/javascript.md @@ -17,6 +17,9 @@ With the browser logs SDK, you can send logs directly to Datadog from web browse - Record real client IP addresses and user agents. - Optimized network usage with automatic bulk posts. +**Notes**: +- **Independent of the RUM SDK**: The Browser Logs SDK can be used without the RUM SDK. + ## Setup **Datadog client token**: For security reasons, [API keys][1] cannot be used to configure the browser logs SDK, because they would be exposed client-side in the JavaScript code. To collect logs from web browsers, a [client token][2] must be used. See the [client token documentation][2] for more details. @@ -357,7 +360,7 @@ The following parameters are available to configure the Datadog browser logs SDK | `forwardConsoleLogs` | `"all"` or an Array of `"log"` `"debug"` `"info"` `"warn"` `"error"` | No | `[]` | Forward logs from `console.*` to Datadog. Use `"all"` to forward everything or an array of console API names to forward only a subset. | | `forwardReports` | `"all"` or an Array of `"intervention"` `"deprecation"` `"csp_violation"` | No | `[]` | Forward reports from the [Reporting API][8] to Datadog. Use `"all"` to forward everything or an array of report types to forward only a subset. | | `sampleRate` | Number | No | `100` | **Deprecated** - see `sessionSampleRate`. | -| `sessionSampleRate` | Number | No | `100` | The percentage of sessions to track: `100` for all, `0` for none. Only tracked sessions send logs. | +| `sessionSampleRate` | Number | No | `100` | The percentage of sessions to track: `100` for all, `0` for none. Only tracked sessions send logs. It applies only to logs collected via the Browser Logs SDK and is independent of RUM data. | | `trackingConsent` | `"granted"` or `"not-granted"` | No | `"granted"` | Set the initial user tracking consent state. See [User Tracking Consent][15]. | | `silentMultipleInit` | Boolean | No | | Prevent logging errors while having multiple init. | | `proxy` | String | No | | Optional proxy URL (ex: https://www.proxy.com/path), see the full [proxy setup guide][6] for more information. | diff --git a/content/en/logs/log_configuration/flex_logs.md b/content/en/logs/log_configuration/flex_logs.md index c9b3dac969c78..90eda6bda6bbe 100644 --- a/content/en/logs/log_configuration/flex_logs.md +++ b/content/en/logs/log_configuration/flex_logs.md @@ -42,7 +42,7 @@ Datadog Log Management provides the following solutions: - Flex Logs for logs that need to be retained long-term, but sometimes need to be queried urgently, such as security, transaction, and network logs. - Archiving for logs that are infrequently queried and need to be stored long-term, such as audit and configuration logs. -Use the spectrum of log types shown in the image below to determine when to use the Flex Logs tier. Any high volume, infrequent access, or long term retention log sources are good candidates. You can also retain logs in Standard Indexing first and then extend them using Flex Logs; this is a perfect solution for application logs that you need to retain for longer. See [Potential sources for sending directly to the Flex Logs tier](#potential-sources-for-sending-directly-to-the-flex-logs) for more information. +Use the spectrum of log types shown in the image below to determine when to use the Flex Logs tier. Any high volume, infrequent access, or long term retention log sources are good candidates. You can also retain logs in Standard Indexing first and then extend them using Flex Logs; this is a perfect solution for application logs that you need to retain for longer. See [Potential sources for sending directly to the Flex Logs tier](#potential-sources-for-sending-directly-to-flex-logs) for more information. {{< img src="logs/log_configuration/flex_logging/logs-spectrum.png" alt="Logs indexing and access frequency spectrum graph" style="width:100%;" >}} diff --git a/content/en/logs/troubleshooting/live_tail.md b/content/en/logs/troubleshooting/live_tail.md index 54718abfa16b0..3e7be759ce827 100644 --- a/content/en/logs/troubleshooting/live_tail.md +++ b/content/en/logs/troubleshooting/live_tail.md @@ -1,5 +1,5 @@ --- -title: Live Tail +title: Live Tail Troubleshooting description: 'Troubleshoot Logs Live Tail errors or issues' --- diff --git a/content/en/metrics/guide/custom_metrics_governance.md b/content/en/metrics/guide/custom_metrics_governance.md index eab34e43fdc85..a44f06c4921b8 100644 --- a/content/en/metrics/guide/custom_metrics_governance.md +++ b/content/en/metrics/guide/custom_metrics_governance.md @@ -144,7 +144,7 @@ After you identify the metrics that your developers don't need, you can safely r {{< img src="metrics/guide/custom_metrics_governance/manage_tags_fm_metrics_summary.png" alt="The Configure Metrics drop menu with the Manage tags selection highlighted" style="width:90%;" >}} -5. At the top of the the [Metrics Summary page][6], click the **Configure Metrics** dropdown menu. +5. At the top of the [Metrics Summary page][6], click the **Configure Metrics** dropdown menu. 6. Select **Manage tags** to open the [Metrics without Limits™ Tag configuration modal][13] to configure multiple metrics in bulk. 7. Specify the metric namespace prefix of the metrics you'd like to configure. 8. Select **Include tags...** and leave the allowlist of tags empty. diff --git a/content/en/monitors/downtimes/examples.md b/content/en/monitors/downtimes/examples.md index 3e3c26e293290..919d0ec428c67 100644 --- a/content/en/monitors/downtimes/examples.md +++ b/content/en/monitors/downtimes/examples.md @@ -124,7 +124,7 @@ curl -X POST "https://api./api/v1/downtime" \ -H "Content-type: application/json" \ -H "DD-API-KEY: ${api_key}" \ -H "DD-APPLICATION-KEY: ${app_key}" \ --d '{"data":{"type":"downtime","attributes":{"monitor_identifier":{"monitor_tags":["*"]},"scope":"env:prod","display_timezone":"Europe/Berlin","message":"","mute_first_recovery_notification":false,"notify_end_types":["expired","canceled"],"notify_end_states":["alert","warn","no data"],"schedule":{"timezone":"Europe/Berlin","recurrences":[{"start":"2023-07-10T18:00","duration":"12h","rrule":"FREQ=DAILY;INTERVAL=1"}]}}},"_authentication_token":"b6c9ec89cdff687d29c0ee54923c52f57c9e102a"}' +-d '{"data":{"type":"downtime","attributes":{"monitor_identifier":{"monitor_tags":["*"]},"scope":"env:prod","display_timezone":"Europe/Berlin","message":"","mute_first_recovery_notification":false,"notify_end_types":["expired","canceled"],"notify_end_states":["alert","warn","no data"],"schedule":{"timezone":"Europe/Berlin","recurrences":[{"start":"2023-07-10T18:00","duration":"12h","rrule":"FREQ=DAILY;INTERVAL=1"}]}}}}' ``` Optionally, add a `message` to your Downtime to let others know the reason and purpose of the Downtime you are creating. Replace the placeholder value `` with the site parameter of your Datadog account, see the [Datadog Sites][1] documentation. Replace the `start` and `end` parameter to match your wanted schedule. diff --git a/content/en/monitors/guide/monitor_aggregators.md b/content/en/monitors/guide/monitor_aggregators.md index 18a5b7ee98324..c362f8cedf357 100644 --- a/content/en/monitors/guide/monitor_aggregators.md +++ b/content/en/monitors/guide/monitor_aggregators.md @@ -83,7 +83,7 @@ $$10+15+12+8+11+14+13+25+37+45+50 = 240$$ ## Visualizing aggregators -You can see different results depending on the aggregation method you are using in your query and your evaluation aggregation. The aggregation methods below use the the same metric. You can see how each method affects the way the metric is aggregated in a timeseries. +You can see different results depending on the aggregation method you are using in your query and your evaluation aggregation. The aggregation methods below use the same metric. You can see how each method affects the way the metric is aggregated in a timeseries. | Aggregation | Resulting graph | | --- | ----------- | diff --git a/content/en/monitors/status/status_page.md b/content/en/monitors/status/status_page.md index b0b668f93c1b6..5c7acb1079e77 100644 --- a/content/en/monitors/status/status_page.md +++ b/content/en/monitors/status/status_page.md @@ -70,8 +70,6 @@ For more information, see the [Monitor status events][3] documentation. The following monitor types are not supported by the provisional status page: - Anomaly -- Cloud Cost -- Composite - Database Monitoring - Forecast - Live Process diff --git a/content/en/network_monitoring/cloud_network_monitoring/_index.md b/content/en/network_monitoring/cloud_network_monitoring/_index.md index 59fb109db3539..6494b91078c76 100644 --- a/content/en/network_monitoring/cloud_network_monitoring/_index.md +++ b/content/en/network_monitoring/cloud_network_monitoring/_index.md @@ -7,12 +7,9 @@ aliases: - /network_performance_monitoring/ - /network_monitoring/performance/ further_reading: -- link: "https://www.datadoghq.com/blog/cloud-network-monitoring-datadog/" - tag: "Blog" - text: "Monitor cloud architecture and app dependencies with Datadog CNM" -- link: "https://www.datadoghq.com/blog/network-performance-monitoring" - tag: "Blog" - text: "Cloud Network Monitoring" +- link: '/network_monitoring/cloud_network_monitoring/guide/detecting_application_availability/' + tag: 'Guide' + text: 'Detecting Application Availability using Network Insights' - link: "https://www.datadoghq.com/blog/npm-windows-support/" tag: "Blog" text: "Monitor Windows hosts with Cloud Network Monitoring" @@ -28,15 +25,9 @@ further_reading: - link: "https://www.datadoghq.com/blog/npm-story-centric-ux/" tag: "Blog" text: "Quickstart network investigations with CNM's story-centric UX" -- link: "https://www.datadoghq.com/blog/monitor-dns-logs-for-network-and-security-datadog/" - tag: "Blog" - text: "Monitor DNS logs for network and security analysis" - link: "https://www.datadoghq.com/blog/monitor-connection-churn-datadog/" tag: "Blog" text: "Best practices for monitoring and remediating connection churn" -- link: "https://www.datadoghq.com/architecture/network-observability-sd-wan-reference-architecture/" - tag: "Architecture Center" - text: "Network Observability: SD-WAN Reference Architecture" algolia: tags: ['Cloud Network Monitoring', 'Network Performance Monitoring', 'CNM', 'NPM'] --- diff --git a/content/en/network_monitoring/cloud_network_monitoring/network_analytics.md b/content/en/network_monitoring/cloud_network_monitoring/network_analytics.md index cb4287ad3cc79..b2eb1e63499f4 100644 --- a/content/en/network_monitoring/cloud_network_monitoring/network_analytics.md +++ b/content/en/network_monitoring/cloud_network_monitoring/network_analytics.md @@ -16,9 +16,9 @@ further_reading: - link: '/network_monitoring/devices' tag: 'Documentation' text: 'Network Device Monitoring' - - link: '/network_monitoring/cloud_network_monitoring/setup' - tag: 'Documentation' - text: 'Collect your Network Data with the Datadog Agent.' + - link: '/network_monitoring/cloud_network_monitoring/guide/detecting_application_availability/' + tag: 'Guide' + text: 'Detecting Application Availability using Network Insights' --- ## Overview @@ -122,6 +122,31 @@ Using the search bar and the group by feature together is helpful to further iso {{< img src="network_performance_monitoring/network_analytics/search_bar_with_groupby_2.png" alt="Using group by option with search field" style="width:90%;">}} +### Neutral tags + +Neutral tags are tags that are not specific to a client or server, and instead apply to an entire flow. You can search for and filter on traffic with these neutral tags. For example, you can use these tags to filter for traffic that is TLS encrypted. + +{{< img src="network_performance_monitoring/network_analytics/cnm_using_neutral_tags.png" alt="Screenshot showing how to search for neutral tags, with an example on searching for 'tls_encrypted' traffic" style="width:90%;">}} + +The following is the list of neutral tags available for use: + +| Tag | Description | +|-------------------------|-----------------------------------------------------------------------------------------------| +| `is_agent_traffic` | Indicates whether the traffic was generated by the Datadog Agent. | +| `tls_encrypted` | Specifies if the connection is encrypted using TLS. | +| `tls_cipher_suite` | Identifies the specific TLS cipher suite used (for example, `tls_ecdhe_rsa_with_aes_128_gcm_sha256`). | +| `tls_cipher_insecure` | Identifies if the cipher used in the connection is generally considered to be secure or not. | +| `tls_version` | The version of TLS negotiated and used by the connection (`tls_1.2` or `tls_1.3`). | +| `tls_client_version` | The version(s) of TLS that the client supports (`tls_1.2` or `tls_1.3`). | +| `gateway_id` | Unique identifier for the AWS gateway resource. | +| `gateway_type` | Specifies the type of AWS gateway (Internet, NAT, or Transit). | +| `gateway_region` | The AWS region in which the gateway is deployed (for example, `us-east-1`). | +| `gateway_availability-zone` | The Availability Zone hosting the gateway (for example, `us-east-1a`). | +| `gateway_public_ip` | The public IP address assigned to the NAT gateway. | +| `tgw_attachment_id` | Unique identifier for the AWS Transit Gateway attachment. | +| `tgw_attachment_type` | Type of the AWS Transit Gateway attachment (for example, VPC, VPN, or Direct Connect). | +| `vpc_endpoint_id` | Unique identifier for the VPC endpoint. | + ## Summary graphs The summary graphs are a condensed view of your network, which you can modify to display volume, throughput, connections, or latency as needed. Display up to three summary graphs at a time, and change the data and visualization type to suit your organization. To update a graph's data source, click on the graph's title and make a selection from the dropdown menu. @@ -171,6 +196,9 @@ The following TCP metrics are available: | **TCP Retransmits** | TCP Retransmits represent detected failures that are retransmitted to ensure delivery. Measured in count of retransmits from the client. | | **TCP Latency** | Measured as TCP smoothed round-trip time, that is, the time between a TCP frame being sent and acknowledged. | | **TCP Jitter** | Measured as TCP smoothed round-trip time variance. | +| **TCP Timeouts** | The number of TCP connections that timed out from the perspective of the operating system. This can indicate general connectivity and latency issues. | +| **TCP Refusals** | The number of TCP connections that were refused by the server. Typically this indicates an attempt to connect to an IP/port that isn't receiving connections, or a firewall/security misconfiguration. | +| **TCP Resets** | The number of TCP connections that were reset by the server. | | **Established Connections** | The number of TCP connections in an established state. Measured in connections per second from the client. | | **Closed Connections** | The number of TCP connections in a closed state. Measured in connections per second from the client. | diff --git a/content/en/network_monitoring/cloud_network_monitoring/setup.md b/content/en/network_monitoring/cloud_network_monitoring/setup.md index 6ba6051a95fe6..984c48fe12497 100644 --- a/content/en/network_monitoring/cloud_network_monitoring/setup.md +++ b/content/en/network_monitoring/cloud_network_monitoring/setup.md @@ -500,18 +500,11 @@ For additional information around these capabilities, see [Cloud service enhance ### Failed connections -**Requires Agent version `7.59` or higher**. +Failed Connections allows collection and reporting of TCP failures including [resets, refusals, and timeouts][14]. This feature is enabled by default in Agent version `7.59+`, and it is accessible on the [CNM Analytics][15] page in the **Customize** menu by turning on the **Failures** toggle. -To enable the Agent to start collecting data about failed connections, add the following setting to your `/etc/datadog-agent/system-probe.yaml` file (or `C:\ProgramData\Datadog\system-probe.yaml` for Windows). +**Note**: If some Agents in your infrastructure are running a version earlier than `7.59`, you might encounter failures being under-reported. CNM advises maintaining the same Agent version across _all_ hosts. -```yaml -network_config: - ## @param enabled - boolean - optional - default: false - ## Set to true to enable Cloud Network Monitoring. - # - enabled: true - enable_tcp_failed_connections: true ##enabled by default -``` +{{< img src="network_performance_monitoring/setup/cnm_tcp_failures_toggle.png" alt="Screenshot of the CNM customize menu, highlighting the Failures toggle" style="width:50%;">}} ## Further Reading {{< partial name="whats-next/whats-next.html" >}} @@ -529,3 +522,5 @@ network_config: [11]: https://github.com/DataDog/helm-charts/blob/master/charts/datadog/README.md#enabling-system-probe-collection [12]: https://github.com/DataDog/chef-datadog [13]: https://github.com/DataDog/ansible-datadog/blob/master/README.md#system-probe +[14]: /network_monitoring/cloud_network_monitoring/network_analytics/?tab=loadbalancers#tcp +[15]: https://app.datadoghq.com/network diff --git a/content/en/network_monitoring/devices/sd-wan.md b/content/en/network_monitoring/devices/sd-wan.md index 72a40f1c52974..4f985c6d89174 100644 --- a/content/en/network_monitoring/devices/sd-wan.md +++ b/content/en/network_monitoring/devices/sd-wan.md @@ -8,6 +8,9 @@ further_reading: - link: 'network_monitoring/devices/data/' tag: 'Doc' text: 'NDM Data Collected' + - link: "https://www.datadoghq.com/architecture/network-observability-sd-wan-reference-architecture/" + tag: "Architecture Center" + text: "Network Observability: SD-WAN Reference Architecture" --- ## SD-WAN monitoring diff --git a/content/en/network_monitoring/dns/_index.md b/content/en/network_monitoring/dns/_index.md index efe28f3322b18..57963368ef1f3 100644 --- a/content/en/network_monitoring/dns/_index.md +++ b/content/en/network_monitoring/dns/_index.md @@ -17,6 +17,9 @@ further_reading: - link: 'https://www.datadoghq.com/blog/dns-resolution-datadog/' tag: 'Blog' text: 'Use DNS resolution to monitor cloud and external endpoints' + - link: "https://www.datadoghq.com/blog/monitor-dns-logs-for-network-and-security-datadog/" + tag: "Blog" + text: "Monitor DNS logs for network and security analysis" --- {{< img src="network_performance_monitoring/dns_monitoring/dns_overview.png" alt="The DNS monitoring page in Datadog" >}} diff --git a/content/en/observability_pipelines/legacy/setup/_index.md b/content/en/observability_pipelines/legacy/setup/_index.md index 3a69fe6b52a73..3bf0bf5040f64 100644 --- a/content/en/observability_pipelines/legacy/setup/_index.md +++ b/content/en/observability_pipelines/legacy/setup/_index.md @@ -287,7 +287,7 @@ Install the Worker with the one-line install script or manually. {{% /tab %}} {{% tab "Terraform (AWS)" %}} -1. Download the the [sample configuration][1]. +1. Download the [sample configuration][1]. 1. Set up the Worker module in your existing Terraform using the sample configuration. Make sure to update the values in `vpc-id`, `subnet-ids`, and `region` to match your AWS deployment in the configuration. Also,update the values in `datadog-api-key` and `pipeline-id` to match your pipeline. See [Configurations][2] for more information about the source, transform, and sink used in the sample configuration. diff --git a/content/en/observability_pipelines/legacy/setup/datadog.md b/content/en/observability_pipelines/legacy/setup/datadog.md index ca8128bd33137..cb3ee3caf3ed0 100644 --- a/content/en/observability_pipelines/legacy/setup/datadog.md +++ b/content/en/observability_pipelines/legacy/setup/datadog.md @@ -297,7 +297,7 @@ The Observability Pipelines Worker Docker image is published to Docker Hub [here {{% /tab %}} {{% tab "Terraform (AWS)" %}} -1. Download the the [sample configuration][1]. +1. Download the [sample configuration][1]. 1. Set up the Worker module in your existing Terraform using the sample configuration. Make sure to update the values in `vpc-id`, `subnet-ids`, and `region` to match your AWS deployment in the configuration. Also, update the values in `datadog-api-key` and `pipeline-id` to match your pipeline. [1]: /resources/yaml/observability_pipelines/datadog/terraform_opw_datadog.tf diff --git a/content/en/observability_pipelines/legacy/setup/datadog_with_archiving.md b/content/en/observability_pipelines/legacy/setup/datadog_with_archiving.md index 3e6a2069ae5f7..3b8342277eb71 100644 --- a/content/en/observability_pipelines/legacy/setup/datadog_with_archiving.md +++ b/content/en/observability_pipelines/legacy/setup/datadog_with_archiving.md @@ -335,7 +335,7 @@ The Observability Pipelines Worker Docker image is published to Docker Hub [here {{% /tab %}} {{% tab "Terraform (AWS)" %}} -1. Download the the [sample configuration][1]. +1. Download the [sample configuration][1]. 1. Set up the Worker module in your existing Terraform using the sample configuration. Make sure to update the values in `vpc-id`, `subnet-ids`, and `region` to match your AWS deployment in the configuration. Also, update the values in `datadog-api-key` and `pipeline-id` to match your pipeline. [1]: /resources/yaml/observability_pipelines/archives/terraform_opw_archives.tf diff --git a/content/en/observability_pipelines/sources/_index.md b/content/en/observability_pipelines/sources/_index.md index 1f10c419012bf..bf58f1f9fce0d 100644 --- a/content/en/observability_pipelines/sources/_index.md +++ b/content/en/observability_pipelines/sources/_index.md @@ -34,11 +34,11 @@ Sources have different prerequisites and settings. Some sources also need to be {{< nextlink href="observability_pipelines/sources/google_pubsub/" >}}Google Pub/Sub{{< /nextlink >}} {{< nextlink href="observability_pipelines/sources/http_client/" >}}HTTP/S Client{{< /nextlink >}} {{< nextlink href="observability_pipelines/sources/http_server/" >}}HTTP/S Server{{< /nextlink >}} - {{< nextlink href="observability_pipelines/sources/logstash/" >}}Logstash{{< /nextlink >}} + {{< nextlink href="observability_pipelines/sources/logstash/" >}}Logstash (includes Filebeat){{< /nextlink >}} {{< nextlink href="observability_pipelines/sources/splunk_hec/" >}}Splunk HTTP Event Collector (HEC){{< /nextlink >}} {{< nextlink href="observability_pipelines/sources/splunk_tcp/" >}}Splunk Heavy or Universal Forwarders (TCP){{< /nextlink >}} {{< nextlink href="observability_pipelines/sources/sumo_logic/" >}}Sumo Logic{{< /nextlink >}} - {{< nextlink href="observability_pipelines/sources/syslog/" >}}rsyslog or syslog-ng{{< /nextlink >}} + {{< nextlink href="observability_pipelines/sources/syslog/" >}}rsyslog or syslog-ng (includes Fortinet and Palo Alto Networks){{< /nextlink >}} {{< /whatsnext >}} ## Standard metadata fields @@ -81,4 +81,4 @@ After events are ingested by the source, they get sent to different processors a {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/observability-pipelines -[2]: /observability_pipelines/troubleshooting/#use-tap-to-see-your-data \ No newline at end of file +[2]: /observability_pipelines/troubleshooting/#use-tap-to-see-your-data diff --git a/content/en/observability_pipelines/update_existing_pipelines.md b/content/en/observability_pipelines/update_existing_pipelines.md index 429bd8e592a16..d28209fa80964 100644 --- a/content/en/observability_pipelines/update_existing_pipelines.md +++ b/content/en/observability_pipelines/update_existing_pipelines.md @@ -18,7 +18,7 @@ For existing pipelines in Observability Pipelines, you can update and deploy cha ### Update source or destination variables -On the the Worker installation page: +On the Worker installation page: 1. Select your platform in the **Choose your installation platform** dropdown menu. 1. If you want to update source environment variables, update the information for your log source. {{< tabs >}} diff --git a/content/en/opentelemetry/guide/otel_demo_to_datadog.md b/content/en/opentelemetry/guide/otel_demo_to_datadog.md index 5aacbb98e787b..caf424d2bc3b2 100644 --- a/content/en/opentelemetry/guide/otel_demo_to_datadog.md +++ b/content/en/opentelemetry/guide/otel_demo_to_datadog.md @@ -64,7 +64,7 @@ git clone https://github.com/open-telemetry/opentelemetry-demo.git ### Configuring the OpenTelemetry Collector -To send the demo's telemetry data to Datadog you need to add three components to the the OpenTelemetry Collector configuration: +To send the demo's telemetry data to Datadog you need to add three components to the OpenTelemetry Collector configuration: - `Resource Processor` is an `optional` component which is recommended, used to set the `env` tag for Datadog. - `Datadog Connector` is responsible for computing Datadog APM Trace Metrics. @@ -226,7 +226,7 @@ If you have make installed, you can use the following command to start the demo: make start ``` -If you don't have `make` installed, you can use the the `docker compose` command directly: +If you don't have `make` installed, you can use the `docker compose` command directly: ```shell docker compose up --force-recreate --remove-orphans --detach diff --git a/content/en/opentelemetry/integrations/docker_metrics.md b/content/en/opentelemetry/integrations/docker_metrics.md index 446b1732409fb..e772d67c34ac1 100644 --- a/content/en/opentelemetry/integrations/docker_metrics.md +++ b/content/en/opentelemetry/integrations/docker_metrics.md @@ -107,31 +107,11 @@ The Docker Stats receiver generates container metrics for the OpenTelemetry Coll - `container.name` - `container.id` - Learn more about [mapping between OpenTelemetry and Datadog semantic conventions for resource attributes][5]. +Learn more about [mapping between OpenTelemetry and Datadog semantic conventions for resource attributes][5]. The following table shows what Datadog container metric names are associated with corresponding OpenTelemetry container metric names -| Datadog Metric Name | OTel Docker Stats Metric Name | Metric Description | -|-------------------------|--------------------------------|----------------------| -| `container.cpu.usage` | `container.cpu.usage.total` | The container total CPU Usage | -| `container.cpu.user` | `container.cpu.usage.usermode` | The container userspace CPU usage | -| `container.cpu.system` | `container.cpu.usage.system` | The container system CPU usage | -| `container.cpu.throttled` | `container.cpu. throttling_data.throttled_time` | The total cpu throttled time | -| `container.cpu.throttled.periods` | `container.cpu. throttling_data.throttled_periods` | The number of periods during which the container was throttled | -| `container.memory.usage` | `container.memory.usage.total` | The container total memory usage | -| `container.memory.kernel` | `container.memory.active_anon` | The container kernel memory usage | -| `container.memory.limit` | `container.memory. hierarchical_memory_limit` | The container memory limit | -| `container.memory.soft_limit` | `container.memory.usage.limit` | The container memory soft limit | -| `container.memory.cache` | `container.memory.total_cache` | The container cache usage | -| `container.memory.swap` | `container.memory.total_swap` | The container swap usage | -| `container.io.write` | `container.blockio. io_service_bytes_recursive`
Attribute Filter operation=`write` | The number of bytes written to disks by this container | -| `container.io.read` | `container.blockio. io_service_bytes_recursive`
Attribute Filter operation=`read` | The number of bytes read from disks by this container | -| `container.io.write.operations` | `container.blockio. io_serviced_recursive`
Attribute Filter operation=`write` | The number of write operations done by this container | -| `container.io.read.operations` | `container.blockio. io_serviced_recursive`
Attribute Filter operation=`read` | The number of read operations done by this container | -| `container.net.sent` | `container.network.io. usage.tx_bytes` | The number of network bytes sent (per interface) | -| `container.net.sent.packets` | `container.network.io. usage.tx_packets` | The number of network packets sent (per interface) | -| `container.net.rcvd` | `container.network.io. usage.rx_bytes` | The number of network bytes received (per interface) | -| `container.net.rcvd.packets` | `container.network.io. usage.rx_packets` | The number of network packets received (per interface) | +{{< mapping-table resource="dockerstats.csv">}} See [OpenTelemetry Metrics Mapping][2] for more information. diff --git a/content/en/opentelemetry/integrations/host_metrics.md b/content/en/opentelemetry/integrations/host_metrics.md index 811b4fedce2d8..b11285bd3534a 100644 --- a/content/en/opentelemetry/integrations/host_metrics.md +++ b/content/en/opentelemetry/integrations/host_metrics.md @@ -103,23 +103,7 @@ The metrics, mapped to Datadog metrics, are used in the following views: The following table shows which Datadog host metric names are associated with corresponding OpenTelemetry host metric names, and, if applicable, what math is applied to the OTel host metric to transform it to Datadog units during the mapping. -| Datadog metric name | OTel metric name | Metric description | Transform done on OTel metric | -|-----------------------|-----------------------|----------------------------|--------------------------| -| `system.load.1` | `system.cpu.load_average.1m` | The average system load over one minute. (Linux only) | | -| `system.load.5` | `system.cpu.load_average.5m` | The average system load over five minutes. (Linux only) | | -| `system.load.15` | `system.cpu.load_average.15m` | The average system load over 15 minutes. (Linux only) | | -| `system.cpu.idle` | `system.cpu.utilization`
Attribute Filter state: `idle` | Fraction of time the CPU spent in an idle state. Shown as percent. | Multiplied by 100 | -| `system.cpu.user` | `system.cpu.utilization`
Attribute Filter state: `user` | Fraction of time the CPU spent running user space processes. Shown as percent. | Multiplied by 100 | -| `system.cpu.system` | `system.cpu.utilization`
Attribute Filter state: `system` | Fraction of time the CPU spent running the kernel. | Multiplied by 100 | -| `system.cpu.iowait` | `system.cpu.utilization`
Attribute Filter state: `wait` | The percent of time the CPU spent waiting for IO operations to complete. | Multiplied by 100 | -| `system.cpu.stolen` | `system.cpu.utilization`
Attribute Filter state: `steal` | The percent of time the virtual CPU spent waiting for the hypervisor to service another virtual CPU. Only applies to virtual machines. Shown as percent.| Multiplied by 100 | -| `system.mem.total` | `system.memory.usage` | The total amount of physical RAM in bytes. | Converted to MB (divided by 2^20) | -| `system.mem.usable` | `system.memory.usage`
Attributes Filter state: `(free, cached, buffered)` | Value of `MemAvailable` from `/proc/meminfo` if present. If not present, falls back to adding `free + buffered + cached memory`. In bytes. | Converted to MB (divided by 2^20) | -| `system.net.bytes_rcvd` | `system.network.io`
Attribute Filter direction: `receive` | The number of bytes received on a device per second. | | -| `system.net.bytes_sent` | `system.network.io`
Attribute Filter direction: `transmit` | The number of bytes sent from a device per second. | | -| `system.swap.free` | `system.paging.usage`
Attribute Filter state: `free` | The amount of free swap space, in bytes | Converted to MB (divided by 2^20) | -| `system.swap.used` | `system.paging.usage`
Attribute Filter state: `used` | The amount of swap space in use, in bytes. | Converted to MB (divided by 2^20) | -| `system.disk.in_use` | `system.filesystem.utilization` | The amount of disk space in use as a fraction of the total. | | +{{< mapping-table resource="host.csv">}} See [OpenTelemetry Metrics Mapping][2] for more information. diff --git a/content/en/opentelemetry/integrations/kafka_metrics.md b/content/en/opentelemetry/integrations/kafka_metrics.md index 3ed98ef9e50ad..c94e21e82b167 100644 --- a/content/en/opentelemetry/integrations/kafka_metrics.md +++ b/content/en/opentelemetry/integrations/kafka_metrics.md @@ -255,55 +255,7 @@ In order to ensure this attribute only gets added to your Kafka logs, use [inclu ## Data collected - -| OpenTelemetry Metric | Datadog Metric | Source | Transform done on Datadog Metric | -|---|---|---|---| -| otel.kafka.producer.request-rate | kafka.producer.request_rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| otel.kafka.producer.response-rate | kafka.producer.response_rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| otel.kafka.producer.request-latency-avg|kafka.producer.request_latency_avg | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer}| | -| kafka.producer.outgoing-byte-rate | kafka.producer.outgoing-byte-rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer}| | -| kafka.producer.io-wait-time-ns-avg | kafka.producer.io_wait | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer}| | -| kafka.producer.byte-rate | kafka.producer.bytes_out | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| kafka.consumer.total.bytes-consumed-rate | kafka.consumer.bytes_in | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-consumer} | | -| kafka.consumer.total.records-consumed-rate | kafka.consumer.messages_in | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-consumer} | | -| kafka.network.io{state:out} | kafka.net.bytes_out.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.network.io{state:in} | kafka.net.bytes_in.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.purgatory.size{type:produce} | kafka.request.producer_request_purgatory.size | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.purgatory.size{type:fetch} | kafka.request.fetch_request_purgatory.size | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.partition.under_replicated | kafka.replication.under_replicated_partitions | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.isr.operation.count{operation:shrink} | kafka.replication.isr_shrinks.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.isr.operation.count{operation:expand} | kafka.replication.isr_expands.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.leader.election.rate | kafka.replication.leader_elections.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.partition.offline | kafka.replication.offline_partitions_count | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.request.time.avg{type:produce} | kafka.request.produce.time.avg | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.request.time.avg{type:fetchconsumer} | kafka.request.fetch_consumer.time.avg | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.request.time.avg{type:fetchfollower} | kafka.request.fetch_follower.time.avg |JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.message.count |kafka.messages_in.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.request.failed{type:produce} | kafka.request.produce.failed.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.request.failed{type:fetch} | kafka.request.fetch.failed.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.request.time.99p{type:produce} | kafka.request.produce.time.99percentile | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.request.time.99p{type:fetchconsumer} | kafka.request.fetch_consumer.time.99percentile | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.request.time.99p{type:fetchfollower} | kafka.request.fetch_follower.time.99percentile | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.partition.count | kafka.replication.partition_count | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.max.lag | kafka.replication.max_lag | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.controller.active.count | kafka.replication.active_controller_count | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.unclean.election.rate | kafka.replication.unclean_leader_elections.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.request.queue | kafka.request.channel.queue.size | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | | -| kafka.logs.flush.time.count | kafka.log.flush_rate.rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka} | Compute rate per second and submitted as Gauge | -| kafka.consumer.bytes-consumed-rate | kafka.consumer.bytes_consumed | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-consumer} | | -| kafka.consumer.records-consumed-rate | kafka.consumer.records_consumed | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-consumer} | | -| otel.kafka.consumer.fetch-size-avg | kafka.consumer.fetch_size_avg | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-consumer} | | -| otel.kafka.producer.compression-rate | kafka.producer.compression-rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| otel.kafka.producer.record-error-rate | kafka.producer.record_error_rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| otel.kafka.producer.record-retry-rate | kafka.producer.record_retry_rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| otel.kafka.producer.record-send-rate | kafka.producer.record_send_rate | JMX Receiver / JMX Metrics Gatherer {target_system:kafka-producer} | | -| kafka.partition.current_offset | kafka.broker_offset | kafkametricsreceiver | | -| kafka.consumer_group.lag | kafka.consumer_lag | kafkametricsreceiver -| kafka.consumer_group.offset | kafka.consumer_offset | kafkametricsreceiver -| jvm.gc.collections.count{name:Copy && name:PS Scavenge && name:ParNew && name:G1 Young Generation} | jvm.gc.min&&_collection_count | JMX Receiver / JMX Metrics Gatherer {target_system:jvm} | Compute rate per second and submitted as Gauge | -| jvm.gc.maj&&_collection_count{name:MarkSweepCompact && name:PS MarkSweep &&name:ConcurrentMarkSweep &&name:G1 Mixed Generation && G1 Old Generation && Shenandoah Cycles && ZGC} | jvm.gc.maj&&_collection_count | JMX Receiver / JMX Metrics Gatherer {target_system:jvm} | Compute rate per second and submitted as Gauge | -| jvm.gc.collections.elapsed{name:Copy && name:PS Scavenge && name:ParNew && name:G1 Young Generation} | jvm.gc.min&&_collection_time | JMX Receiver / JMX Metrics Gatherer {target_system:jvm} | Compute rate per second and submitted as Gauge | -| jvm.gc.collections.elapsed{name:MarkSweepCompact && name:PS MarkSweep &&name:ConcurrentMarkSweep &&name:G1 Mixed Generation && G1 Old Generation && Shenandoah Cycles && ZGC} | jvm.gc.major_collection_time | JMX Receiver / JMX Metrics Gatherer {target_system:jvm} | Compute rate per second and submitted as Gauge +{{< mapping-table resource="kafka.csv">}} **Note:** In Datadog `-` gets translated to `_`. For the metrics prepended by `otel.`, this means that the OTel metric name and the Datadog metric name are the same (for example, `kafka.producer.request-rate` and `kafka.producer.request_rate`). In order to avoid double counting for these metrics, the OTel metric is then prepended with `otel.`. diff --git a/content/en/product_analytics/journeys/funnel_analysis.md b/content/en/product_analytics/journeys/funnel_analysis.md index dab7257dcb38f..e23fb9972b05f 100644 --- a/content/en/product_analytics/journeys/funnel_analysis.md +++ b/content/en/product_analytics/journeys/funnel_analysis.md @@ -78,7 +78,7 @@ You can analyze conversion by **session count** or **users**, which means you ca You can measure conversion by the following attributes: - **Conversion count** - A count of users who went through the funnel you've defined. -- **Conversion rate** - A conversion refers to the moment when a user responds to a call to action. This rate is the percentage of the total number of users that visited your site or application and converted. +- **Conversion rate** - A conversion refers to the moment when a user responds to a call to action. This rate is the percentage of users who have entered the funnel and converted. **Note**: Only completed RUM sessions contribute to conversion rates. diff --git a/content/en/quality_gates/_index.md b/content/en/quality_gates/_index.md index cd9241d3b074f..af4bc16dbf4df 100644 --- a/content/en/quality_gates/_index.md +++ b/content/en/quality_gates/_index.md @@ -141,7 +141,7 @@ For more information, see the [Audit Trail documentation][4]. [8]: /quality_gates/explorer/ [9]: /tests/ [10]: /continuous_integration/ -[11]: /code_analysis/static_analysis -[12]: /code_analysis/software_composition_analysis +[11]: /security/code_security/static_analysis +[12]: /security/code_security/software_composition_analysis [13]: /integrations/github/ [14]: https://app.datadoghq.com/ci/quality-gates/executions diff --git a/content/en/quality_gates/search/_index.md b/content/en/quality_gates/search/_index.md index a6513b5bf8b45..119f8b723ebd4 100644 --- a/content/en/quality_gates/search/_index.md +++ b/content/en/quality_gates/search/_index.md @@ -31,11 +31,11 @@ Click into a specific rule execution to see the results for past rule execution, {{< img src="quality_gates/executions_sidepanel.png" alt="Quality Gate rule displaying the rule execution status over time and rule executions" style="width:100%" >}} -To pivot to related Static Analysis or Software Composition Analysis results in [Datadog Code Analysis][2], click `See related events`. You can edit the Quality Gate rule according to your execution results by clicking **Manage Rule**. +To pivot to related Static Analysis or Software Composition Analysis results in [Datadog Code Security][2], click `See related events`. You can edit the Quality Gate rule according to your execution results by clicking **Manage Rule**. ## Further reading {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/ci/quality-gates -[2]: /code_analysis/ +[2]: /security/code_security/ diff --git a/content/en/real_user_monitoring/browser/data_collected.md b/content/en/real_user_monitoring/browser/data_collected.md index 4526628615414..da7778648a692 100644 --- a/content/en/real_user_monitoring/browser/data_collected.md +++ b/content/en/real_user_monitoring/browser/data_collected.md @@ -116,7 +116,7 @@ Detailed network timing data for the loading of an application's resources are c | Metric | Type | Description | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | number | Entire time spent loading the resource. | +| `resource.duration` | number | Entire time spent loading the resource. | | `resource.size` | number (bytes) | Resource size. | | `resource.connect.duration` | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). | | `resource.ssl.duration` | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this metric does not appear (connectEnd - secureConnectionStart). | diff --git a/content/en/real_user_monitoring/browser/monitoring_resource_performance.md b/content/en/real_user_monitoring/browser/monitoring_resource_performance.md index ba9c2207586f0..991175c0fe1f0 100644 --- a/content/en/real_user_monitoring/browser/monitoring_resource_performance.md +++ b/content/en/real_user_monitoring/browser/monitoring_resource_performance.md @@ -37,7 +37,7 @@ Detailed network timing data for resources is collected from the Fetch and XHR n | Attribute | Type | Description | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | number | Entire time spent loading the resource. | +| `resource.duration` | number | Entire time spent loading the resource. | | `resource.size` | number (bytes) | Resource size. | | `resource.connect.duration` | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). | | `resource.ssl.duration` | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this metric does not appear (connectEnd - secureConnectionStart).| diff --git a/content/en/real_user_monitoring/mobile_and_tv_monitoring/android/data_collected.md b/content/en/real_user_monitoring/mobile_and_tv_monitoring/android/data_collected.md index ca9fa0e36545e..78594c24fe938 100644 --- a/content/en/real_user_monitoring/mobile_and_tv_monitoring/android/data_collected.md +++ b/content/en/real_user_monitoring/mobile_and_tv_monitoring/android/data_collected.md @@ -171,7 +171,7 @@ RUM action, error, resource, and long task events contain information about the | Metric | Type | Description | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | number (ns) | Entire time spent loading the resource. | +| `resource.duration` | number (ns) | Entire time spent loading the resource. | | `resource.size` | number (bytes) | Resource size. | | `resource.connect.duration` | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). | | `resource.ssl.duration` | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this metric does not appear (connectEnd - secureConnectionStart). | diff --git a/content/en/real_user_monitoring/mobile_and_tv_monitoring/ios/advanced_configuration.md b/content/en/real_user_monitoring/mobile_and_tv_monitoring/ios/advanced_configuration.md index b94dda5a2f242..1618dae5303b5 100644 --- a/content/en/real_user_monitoring/mobile_and_tv_monitoring/ios/advanced_configuration.md +++ b/content/en/real_user_monitoring/mobile_and_tv_monitoring/ios/advanced_configuration.md @@ -793,6 +793,7 @@ Depending on the event's type, only some specific properties can be modified: | | `RUMResourceEvent.view.url` | URL of the view linked to this resource. | | RUMViewEvent | `RUMViewEvent.view.name` | Name of the view. | | | `RUMViewEvent.view.url` | URL of the view. | +| | `RUMViewEvent.view.referrer` | URL that linked to the initial view of the page.| ## Retrieve the RUM session ID @@ -904,4 +905,4 @@ public init( [10]: /real_user_monitoring/error_tracking/mobile/ios/#add-app-hang-reporting [11]: /real_user_monitoring/mobile_and_tv_monitoring/ios/setup [12]: https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1411499-connectionproxydictionary -[13]: https://www.ntppool.org/en/ \ No newline at end of file +[13]: https://www.ntppool.org/en/ diff --git a/content/en/real_user_monitoring/mobile_and_tv_monitoring/mobile_vitals/_index.md b/content/en/real_user_monitoring/mobile_and_tv_monitoring/mobile_vitals/_index.md index 72a99f4b738ab..d06cb80e55d72 100644 --- a/content/en/real_user_monitoring/mobile_and_tv_monitoring/mobile_vitals/_index.md +++ b/content/en/real_user_monitoring/mobile_and_tv_monitoring/mobile_vitals/_index.md @@ -75,7 +75,7 @@ The following telemetry provide insight into your mobile application's performan | Refresh rate | To ensure a smooth, jank-free user experience, your application should render frames in under 60Hz.

RUM tracks the application's main thread display refresh rate using `@view.refresh_rate_average` and `@view.refresh_rate_min` view attributes.

**Note:** Refresh rates are normalized on a range of zero to 60fps. For example, if your application runs at 100fps on a device capable of rendering 120fps, Datadog reports 50fps in **Mobile Vitals**. | | Slow renders | To ensure a smooth, jank-free user experience, your application should render frames in under 60Hz.

RUM tracks the application's display refresh rate using `@view.refresh_rate_average` and `@view.refresh_rate_min` view attributes.

With slow rendering, you can monitor which views are taking longer than 16ms or 60Hz to render.
**Note:** Refresh rates are normalized on a range of zero to 60fps. For example, if your application runs at 100fps on a device capable of rendering 120fps, Datadog reports 50fps in **Mobile Vitals**. | | Frozen frames | Frames that take longer than 700ms to render appear as stuck and unresponsive in your application. These are classified as frozen frames.

RUM tracks `long task` events with the duration for any task taking longer then 100ms to complete.

With frozen frames, you can monitor which views appear frozen (taking longer than 700ms to render) to your end users and eliminate jank in your application. | -| Crash-free sessions by version | An [application crash][1] is reported due to an unexpected exit in the application typically caused by an unhandled exception or signal. Crash-free user sessions in your application directly correspond to your end user's experience and overall satisfaction.

RUM tracks complete crash reports and presents trends over time with [Error Tracking][2].

With crash-free sessions, you can stay up to speed on industry benchmarks and ensure that your application is ranked highly on the Google Play Store. | +| Crash-free sessions by version | An [application crash][1] is reported due to an unexpected exit in the application typically caused by an unhandled exception or signal. Crash-free user sessions in your application directly correspond to your end user's experience and overall satisfaction.

RUM tracks complete crash reports and presents trends over time with [Error Tracking][2].

With crash-free sessions, you can stay up to speed on industry benchmarks and ensure that your application is ranked highly on the Apple App Store. | | Hang rate | As defined by Apple, the hang rate of an application corresponds to "the number of seconds per hour that the app is unresponsive, while only counting periods of unresponsiveness of more than 250 ms." To compute the hang rate of your application on Datadog, enable [app hang reporting][4] and follow the [dedicated section][5]. | CPU ticks per second | High CPU usage impacts the [battery life][3] on your users' devices.

RUM tracks CPU ticks per second for each view and the CPU utilization over the course of a session. The recommended range is <40 for good and <60 for moderate.

You can see the top views with the most number of CPU ticks on average over a selected time period under **Mobile Vitals** in your application's Overview page. | | Memory utilization | High memory usage can lead to [watchdog terminations][6], which causes a poor user experience.

RUM tracks the amount of physical memory used by your application in bytes for each view, over the course of a session. The recommended range is <200MB for good and <400MB for moderate.

You can see the top views with the most memory consumption on average over a selected time period under **Mobile Vitals** in your application's Overview page. | diff --git a/content/en/real_user_monitoring/mobile_and_tv_monitoring/roku/data_collected.md b/content/en/real_user_monitoring/mobile_and_tv_monitoring/roku/data_collected.md index c13ceadec93c6..654cfe5a39260 100644 --- a/content/en/real_user_monitoring/mobile_and_tv_monitoring/roku/data_collected.md +++ b/content/en/real_user_monitoring/mobile_and_tv_monitoring/roku/data_collected.md @@ -156,7 +156,7 @@ RUM action, error, resource, and long task events contain information about the | Metric | Type | Description | | ------------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `duration` | number (ns) | Entire time spent loading the resource. | +| `resource.duration` | number (ns) | Entire time spent loading the resource. | | `resource.size` | number (bytes) | Resource size. | | `resource.connect.duration` | number (ns) | Time spent establishing a connection to the server (connectEnd - connectStart). | | `resource.ssl.duration` | number (ns) | Time spent for the TLS handshake. If the last request is not over HTTPS, this metric does not appear (connectEnd - secureConnectionStart). | diff --git a/content/en/real_user_monitoring/mobile_and_tv_monitoring/unity/advanced_configuration.md b/content/en/real_user_monitoring/mobile_and_tv_monitoring/unity/advanced_configuration.md index de6228f516033..0d603eac9e2d4 100644 --- a/content/en/real_user_monitoring/mobile_and_tv_monitoring/unity/advanced_configuration.md +++ b/content/en/real_user_monitoring/mobile_and_tv_monitoring/unity/advanced_configuration.md @@ -66,7 +66,7 @@ When using `DdRum.StartAction` and `DdRum.StopAction`, the `type` action must be ### Track resources -Datadog provides `DatadogTrackedWebRequest` as a drop in replacement for `UnityWebRequest` to enable tracking of resources and and HTTP calls from your RUM views. +Datadog provides `DatadogTrackedWebRequest` as a drop in replacement for `UnityWebRequest` to enable tracking of resources and HTTP calls from your RUM views. You can use it the same way as you would any other `UnityWebRequest`: diff --git a/content/en/security/application_security/_index.md b/content/en/security/application_security/_index.md index fbbcd6bf29811..ec51c3edafeda 100644 --- a/content/en/security/application_security/_index.md +++ b/content/en/security/application_security/_index.md @@ -14,7 +14,7 @@ further_reading: - link: "/security/application_security/threats/" tag: "Documentation" text: "Threat Management" -- link: "/security/application_security/software_composition_analysis/" +- link: "/security/code_security/software_composition_analysis/" tag: "Documentation" text: "Software Composition Analysis" - link: "https://www.datadoghq.com/product/security-platform/application-security-monitoring/" @@ -106,8 +106,8 @@ For information on disabling ASM or its features, see the following: [4]: /security/default_rules/?category=cat-application-security [6]: https://app.datadoghq.com/security [7]: https://dashcon.io/appsec -[8]: /security/application_security/software_composition_analysis/ -[9]: /security/application_security/code_security/ +[8]: /security/code_security/software_composition_analysis/ +[9]: /security/code_security/iast/ [10]: /security/application_security/troubleshooting/#disabling-threat-management-and-protection [11]: /security/application_security/troubleshooting/#disabling-software-composition-analysis [12]: /security/application_security/troubleshooting/#disabling-code-security \ No newline at end of file diff --git a/content/en/security/application_security/api-inventory/_index.md b/content/en/security/application_security/api-inventory/_index.md index 0a2d38bb85117..2d7444b657f00 100644 --- a/content/en/security/application_security/api-inventory/_index.md +++ b/content/en/security/application_security/api-inventory/_index.md @@ -129,8 +129,8 @@ Counts the [Code Security][8] vulnerabilities on the endpoint , in addition to t [1]: /agent/remote_config/?tab=configurationyamlfile#enabling-remote-configuration [2]: /security/application_security/threats/ -[3]: /security/application_security/software_composition_analysis/ +[3]: /security/code_security/software_composition_analysis/ [4]: /agent/remote_config/ [6]: /security/application_security/threats/library_configuration/#configuring-a-client-ip-header [7]: https://app.datadoghq.com/security/appsec/inventory/apis -[8]: /security/application_security/code_security/ +[8]: /security/code_security/iast/ diff --git a/content/en/security/application_security/code_security/setup/_index.md b/content/en/security/application_security/code_security/setup/_index.md deleted file mode 100644 index 39dbcbbb6cc23..0000000000000 --- a/content/en/security/application_security/code_security/setup/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Code Security Setup -disable_toc: false -aliases: -- /security/application_security/enabling/single_step/code_security/ -- /security/application_security/enabling/tracing_libraries/code_security/ -further_reading: -- link: "logs/processing/pipelines" - tag: "Documentation" - text: "Log processing pipelines" -- link: "/security/application_security/code_security" - tag: "Documentation" - text: "Code Security" -- link: "https://www.datadoghq.com/blog/iast-datadog-code-security/" - tag: "Blog" - text: "Enhance application security in production with Datadog Code Security" -- link: "https://www.datadoghq.com/blog/code-security-owasp-benchmark/" - tag: "Blog" - text: "Datadog Code Security achieves 100 percent accuracy in OWASP Benchmark by using an IAST approach" ---- - -## Prerequisites -Before setting up Code Security, ensure the following prerequisites are met: - -1. **Datadog Agent Installation:** The Datadog Agent is installed and configured for your application's operating system or container, cloud, or virtual environment. -2. **Datadog APM Configuration:** Datadog APM is configured for your application or service, and web traces (`type:web`) are being received by Datadog. -3. **Supported Tracing Library:** The Datadog Tracing Library used by your application or service supports Code Security capabilities for the language of your application or service. For more details, refer to the [Library Compatibility][1] page. - -## Using Datadog Tracing Libraries - -Select your application language for details on how to enable Code Security for your language and infrastructure types. - -{{< partial name="security-platform/appsec-languages-code-security.html" >}}
- -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - - - -[1]: /security/application_security/code_security/setup/compatibility/ diff --git a/content/en/security/application_security/guide/_index.md b/content/en/security/application_security/guide/_index.md index b705212b3c051..ac05c55464fc7 100644 --- a/content/en/security/application_security/guide/_index.md +++ b/content/en/security/application_security/guide/_index.md @@ -6,11 +6,9 @@ disable_toc: true {{< whatsnext desc="Getting Started" >}} {{< nextlink href="/getting_started/application_security/" >}}First steps with Application Security Management{{< /nextlink >}} - - {{< nextlink href="/getting_started/application_security/software_composition_analysis" >}}Getting started with Software Composition Analysis{{< /nextlink >}} {{< /whatsnext >}} {{< whatsnext desc="Software Composition Analysis" >}} - {{< nextlink href="/security/application_security/guide/automate_risk_reduction_sca/" >}}Automate open source risk reduction with Datadog SCA{{< /nextlink >}} + {{< nextlink href="/security/code_security/guides/automate_risk_reduction_sca/" >}}Automate open source risk reduction with Datadog SCA{{< /nextlink >}} {{< /whatsnext >}} diff --git a/content/en/security/application_security/guide/automate_risk_reduction_sca.md b/content/en/security/application_security/guide/automate_risk_reduction_sca.md index dad8c23f7c9ea..7ad4be908f1b1 100644 --- a/content/en/security/application_security/guide/automate_risk_reduction_sca.md +++ b/content/en/security/application_security/guide/automate_risk_reduction_sca.md @@ -37,7 +37,7 @@ The catalog surfaces all library details using several public data sources (Guar To use the Libraries catalog, see [Libraries][1] or select **Security > Application Security > Catalogs > Libraries**. -{{< img src="/security/application_security/software_composition_analysis/libraries_catalog.png" alt="Libraries catalog dashboard" style="width:100%;" >}} +{{< img src="/security/code_security/software_composition_analysis/libraries_catalog.png" alt="Libraries catalog dashboard" style="width:100%;" >}} In the Libraries catalog, you can: @@ -55,7 +55,7 @@ In the Libraries catalog, you can: In the **Vulnerabilities** explorer, you can view the vulnerabilities and risks for the libraries you are using. -{{< img src="/security/application_security/software_composition_analysis/vulnerabilities_library_vulnerabilities.png" alt="Libraries vulnerabilities dashboard" style="width:100%;" >}} +{{< img src="/code_security/software_composition_analysis/vulnerabilities_library_vulnerabilities.png" alt="Libraries vulnerabilities dashboard" style="width:100%;" >}} ### Library vulnerabilities @@ -63,7 +63,7 @@ A library vulnerability is a security bug in a library. To view your library vulnerabilities, see [Library Vulnerabilities][3] or navigate to **Security > Vulnerabilities > Library Vulnerabilities**. -{{< img src="/security/application_security/software_composition_analysis/vulnerabilities_library_vulnerabilities_detail.png" alt="Libraries vulnerability example expanded in dashboard" style="width:100%;" >}} +{{< img src="/code_security/software_composition_analysis/vulnerabilities_library_vulnerabilities_detail.png" alt="Libraries vulnerability example expanded in dashboard" style="width:100%;" >}} In **Library Vulnerabilities**, you can: @@ -77,7 +77,7 @@ In **Library Vulnerabilities**, you can: - Severity breakdown - Remediation steps -{{< img src="/security/application_security/software_composition_analysis/vulnerabilities_library_vulnerabilities_remediation_steps.png" alt="Libraries vulnerability remediation steps" style="width:100%;" >}} +{{< img src="/code_security/software_composition_analysis/vulnerabilities_library_vulnerabilities_remediation_steps.png" alt="Libraries vulnerability remediation steps" style="width:100%;" >}} ### Library risks @@ -85,7 +85,7 @@ A library's risks are a group of weaknesses that are not directly tied to securi To view your library risks, see [Library Risks][4] or select **Security > Vulnerabilities > Library Risks**. -{{< img src="/security/application_security/software_composition_analysis/library_risks.png" alt="library risks example" style="width:100%;" >}} +{{< img src="/code_security/software_composition_analysis/library_risks.png" alt="library risks example" style="width:100%;" >}} In Library Risks, you can: - In **View**, select **Runtime** to view risks detected at runtime. diff --git a/content/en/security/application_security/how-appsec-works.md b/content/en/security/application_security/how-appsec-works.md index e86aa6c7eff0b..c2b8d5dbb7582 100644 --- a/content/en/security/application_security/how-appsec-works.md +++ b/content/en/security/application_security/how-appsec-works.md @@ -149,7 +149,7 @@ Datadog Application Security identifies Log4j Log4Shell attack payloads and prov [2]: /tracing/service_catalog/#security-view [3]: /tracing/services/service_page/#security [4]: /tracing/trace_explorer/trace_view/?tab=security#more-information -[5]: /security/application_security/software_composition_analysis/ +[5]: /security/code_security/software_composition_analysis/ [6]: /tracing/trace_collection/ [8]: /security/application_security/serverless/ [9]: /tracing/trace_pipeline/trace_retention/ @@ -164,4 +164,4 @@ Datadog Application Security identifies Log4j Log4Shell attack payloads and prov [25]: /security/application_security/threats/add-user-info#adding-business-logic-information-login-success-login-failure-any-business-logic-to-traces [26]: /agent/remote_config/#enabling-remote-configuration [27]: /tracing/api_catalog/ -[28]: /security/application_security/code_security/ +[28]: /security/code_security/iast/ diff --git a/content/en/security/application_security/software_composition_analysis/_index.md b/content/en/security/application_security/software_composition_analysis/_index.md deleted file mode 100644 index a0af1e8673270..0000000000000 --- a/content/en/security/application_security/software_composition_analysis/_index.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Software Composition Analysis -aliases: - - /security/application_security/risk_management/ - - /security/application_security/vulnerability_management/ -further_reading: -- link: "/getting_started/application_security/software_composition_analysis" - tag: "Guide" - text: "Getting started with Software Composition Analysis" -- link: "/security/application_security/code_security" - tag: "documentation" - text: "Enable code security vulnerability detection on your services" -- link: "/code_analysis/software_composition_analysis/" - tag: "documentation" - text: "Setup Software Composition Analysis on your CI pipelines" -- link: "https://www.datadoghq.com/blog/datadog-software-composition-analysis/" - tag: "Blog" - text: "Mitigate vulnerabilities from third-party libraries with Datadog Software Composition Analysis" -- link: "https://www.datadoghq.com/blog/iast-datadog-application-vulnerability-management/" - tag: "Blog" - text: "Enhance application security in production with Application Vulnerability Management" -- link: "https://securitylabs.datadoghq.com/articles/guarddog-identify-malicious-pypi-packages/" - tag: "Blog" - text: "Finding malicious PyPI packages through static code analysis: Meet GuardDog" -- link: "https://www.datadoghq.com/blog/sca-prioritize-vulnerabilities/" - tag: "Blog" - text: "Prioritize vulnerability remediation with Datadog SCA" -- link: "https://www.datadoghq.com/blog/smart-vulnerability-remediation/" - tag: "Blog" - text: "Datadog delivers smarter vulnerability remediation" -algolia: - tags: ['Software Composition Analysis', 'Vulnerability Management', 'SCA', 'AVM', 'GuardDog'] ---- - -{{< site-region region="gov" >}} -
Application Security Management is not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
-{{< /site-region >}} - -## Overview - -Datadog Software Composition Analysis (SCA) helps you leverage open source with confidence. The capabilities of SCA include vulnerability detection, business risk (library inventory and licensing information), and quality evaluation of the open source libraries in your services. - -What makes Datadog SCA unique is its end-to-end coverage of your software development lifecycle: from the code that your developers commit, to the production applications already running in your Datadog deployment. - -Datadog SCA uses a curated proprietary database. The database is sourced from Open Source Vulnerabilities (OSV), National Vulnerability Database (NVD), GitHub advisories, and other language ecosystem advisories. Additionally, the Datadog Security research team evaluates vulnerabilities and malware findings. For more information, see the [GuardDog][13] GitHub project. - - -Check the ASM Compatibility for each ASM product to see if your service is supported. - - -## Library Inventory - -The Datadog SCA Library Inventory helps you understand the list of libraries and its versions that compose your application. To access the Library Explorer, navigate to [**Security** > **Application Security** > **Catalog** > **Libraries**][8]. - -With Datadog SCA spanning your software development lifecycle from code to production, it detects libraries throughout the lifecycle of an application and alerts you to vulnerabilities, risks, licenses, and more. - -{{< img src="/security/application_security/software_composition_analysis/asm_library_explorer.png" alt="Software Composition Analysis (SCA) library explorer page showing library vulnerabilities grouped by library." style="width:100%;" >}} - -## Explore and manage SCA vulnerabilities - -
Datadog Software Composition Analysis can find vulnerable libraries across the software development lifecycle (SDLC). Application Security summarizes results found in the default branches of your repositories and in your running services. To view vulnerabilities found in different branches and commits, see Code Analysis for more details.
- -The [Vulnerability Explorer][3] shows a complete list of the open source libraries detected by Datadog SCA and reports security vulnerabilities associated with them. - -Datadog SCA leverages two techniques to analyze your services: - -- Static code analysis in your repositories (static point of view) -- Runtime analysis in your deployed services (runtime point of view) - -Combining both techniques monitors open source libraries end-to-end, from the code repository commit (static point of view), to the applications running in production (runtime point of view). - -To switch to the code repository commit point of view, select **Static**. The static view shows vulnerabilities from the _source code_ in your repositories. - -To switch to the _real-time_ point of view for the applications already running, select **Runtime**. The runtime view is the live view of the services monitored by Datadog. - -{{< img src="/security/application_security/software_composition_analysis/asm_sca_vulnerabilities.png" alt="Software Composition Analysis (SCA) explorer page showing vulnerabilities sorted by static or runtime." style="width:100%;" >}} - -Select a specific vulnerability to see its details, including the affected services, severity breakdown score, and recommended remediation steps. - -On the Details Explorer for a vulnerability, you can view impacted infrastructure. This view gives you better insights to your overall attack exposure. - -## Datadog Severity Score - -Each vulnerability has a defined base severity score. To assist in prioritizing remediation, Datadog modifies the base CVSS score into the Datadog Severity Score by considering evidence of suspicious requests or attacks, the business sensitivity or internet exposure of the environment, and the risk of a successful exploit. - -Four score modifiers may apply to a base score. Two are provided by runtime context: - - Vulnerability is in production - - Service affected by vulnerability is under attack - -Two are provided by CVE context: - - Whether an exploit is available - - The exploitation probability - -Datadog shows how the base CVSS score is adjusted to the Datadog Severity Score based on the factors above. - -{{< img src="security/application_security/vulnerability-score-modified_3.png" alt="Vulnerability details page showing a modified severity score" style="width:100%;" >}} - -See [Getting Started with Software Composition Analysis][7] for more information on the adjusted vulnerability score. - -## Remediation - -The Vulnerability Explorer offers remediation recommendations for detected vulnerabilities. Recommendations enable you to change the status of a vulnerability, assign it to a team member for review, and create a Jira issue for tracking. They also include a collection of links and references to websites or information sources to help you understand the context behind each vulnerability. - -**Note**: To create Jira issues for SCA vulnerabilities, you must configure the Jira integration, and have the `manage_integrations` permission. For detailed instructions, see the [Jira integration][11] documentation, as well as the [Role Based Access Control][10] documentation. - -{{< img src="getting_started/appsec/appsec-vuln-remediation_3.png" alt="Application Vulnerability Management vulnerability details page showing affected services, links to infrastructure, suggested remediation, and links to more information." style="width:100%;" >}} - -## Configure Software Composition Analysis - -Software Composition Analysis (SCA) contains additional capabilities to allow you to scan for vulnerabilities in your CI pipelines by using [Code Analysis][9]. With SCA for Code Analysis, you can identify vulnerable open source libraries that have been imported into your codebase. - -To configure vulnerabilities in your CI pipelines, navigate to [Security -> Application Security -> Settings][12]. - -In **Software Composition Analysis (SCA)**, click **Get Started** to enable Software Composition Analysis, and select your repositories and services. - -See [Getting Started with Software Composition Analysis][7] for more detailed instructions. - -## Risk information in APM views - -Software Composition Analysis enriches the information APM is already collecting, and flags libraries that match with current vulnerability advisories. Potentially vulnerable services are highlighted directly in the **Security** view embedded in the [APM Service Catalog][2]. - -{{< img src="security/application_security/threats/threats-on-svc-cat_3.png" alt="Vulnerability information shown in the APM Service Catalog" style="width:100%;" >}} - -## Disable Software Composition Analysis - -For information on disabling Software Composition Analysis, see [Disabling Software Composition Analysis][14]. - -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /help/ -[2]: https://app.datadoghq.com/services?lens=Security -[3]: https://app.datadoghq.com/security/appsec/vm -[4]: https://app.datadoghq.com/security/appsec -[5]: https://app.datadoghq.com/security/appsec/landing -[7]: /getting_started/application_security/software_composition_analysis -[8]: https://app.datadoghq.com/security/appsec/inventory/libraries -[9]: /code_analysis/software_composition_analysis/setup/?tab=githubactions -[10]: /account_management/rbac/permissions/#integrations -[11]: /integrations/jira/ -[12]: https://app.datadoghq.com/security/configuration/asm/setup -[13]: https://github.com/DataDog/guarddog -[14]: /security/application_security/troubleshooting/#disabling-software-composition-analysis \ No newline at end of file diff --git a/content/en/security/application_security/terms.md b/content/en/security/application_security/terms.md index d03c9dc0eb135..f599340167ba0 100644 --- a/content/en/security/application_security/terms.md +++ b/content/en/security/application_security/terms.md @@ -8,7 +8,7 @@ further_reading: - link: "/security/application_security/threats/" tag: "Documentation" text: "Threat Management" -- link: "/security/application_security/software_composition_analysis/" +- link: "/security/code_security/software_composition_analysis/" tag: "Documentation" text: "Software Composition Analysis" - link: "https://www.datadoghq.com/blog/datadog-threat-intelligence/" @@ -93,6 +93,14 @@ flagged attackers : IPs that send large amounts of attack traffic. We recommend reviewing and blocking Flagged IPs. Thresholds are not user-configurable. : See [Attacker Explorer][17] +attacker fingerprint +: Identifiers computed from request characteristics to track an attacker across multiple requests. +: See [Attacker Fingerprint][18] + +attacker cluster +: A set of attributes identifying an attacker across a distributed attack. +: See [Attacker Clustering][19] + ## Attacks and known vulnerabilities terms Open Web Application Security Project (OWASP) @@ -147,3 +155,5 @@ Object-Graph Navigation Language Injection (OGNLi) [15]: /security/application_security/threats/trace_qualification/ [16]: /security/application_security/threats/threat-intelligence/ [17]: /security/application_security/threats/attacker-explorer/ +[18]: /security/application_security/threats/attacker_fingerprint/ +[19]: /security/application_security/threats/attacker_clustering/ diff --git a/content/en/security/application_security/threats/_index.md b/content/en/security/application_security/threats/_index.md index 0cd47a1fb529d..b3c8defe7e7f0 100644 --- a/content/en/security/application_security/threats/_index.md +++ b/content/en/security/application_security/threats/_index.md @@ -7,7 +7,7 @@ further_reading: - link: "/security/application_security/threats/library_configuration/" tag: "Documentation" text: "Configuring your ASM setup" -- link: "/security/application_security/software_composition_analysis/" +- link: "/security/code_security/software_composition_analysis/" tag: "Documentation" text: "Software Composition Analysis" - link: "/security/application_security/how-appsec-works/" diff --git a/content/en/security/application_security/threats/attacker_clustering.md b/content/en/security/application_security/threats/attacker_clustering.md new file mode 100644 index 0000000000000..eb2546e6c5660 --- /dev/null +++ b/content/en/security/application_security/threats/attacker_clustering.md @@ -0,0 +1,69 @@ +--- +title: Attacker Clustering +disable_toc: false +further_reading: +- link: "/security/application_security/threats/attacker_fingerprint" + tag: "Documentation" + text: "Attacker Fingerprint" +- link: "/security/application_security/threats/threat-intelligence/" + tag: "Documentation" + text: "Threat Intelligence" +- link: "/security/application_security/threats/event_rules" + tag: "Documentation" + text: "In-App WAF Rules" +- link: "/security/application_security/threats/security_signals/" + tag: "Documentation" + text: "Security Signals" +--- + + +## Overview + +Attacker Clustering improves distributed attack blocking. Datadog Application Security Management (ASM) identifies security signal traffic attacker patterns and to help you mitigate distributed attacks more efficiently. + +Attacker clustering highlights a set of common attributes shared by a significant portion of traffic and suggests blocking based on those attributes. + +Blocking on attacker attributes means you keep your application or API protected even as the attacker rotates between IPs. + +## What signals are used for attacker clusters? + +The attacker clustering is computed for every [ASM security signal][4] emitted from a detection rule tagged with `category:account_takeover` or `category:fraud` + +Out of the box, attacker clustering is computed for the ASM detection rules that detect API abuse, credential stuffing, or brute force attacks. + +If you want the attacker clustering executed on custom detection rules, add these tags in the detection rule editor (see screenshot below). + +{{< img src="security/application_security/threats/tag-on-detection-rule.png" alt="Screenshot of the Detection rule editor showing where to add tags" >}} + +## Attacker clustering attributes + +Attacker clustering is computed using the following request attributes: +* Browser name +* Browser version +* OS name +* OS version +* User agent header +* [Datadog attacker fingerprinting][2] + +When the attacker attributes are identified, they are displayed on the signal side panel and **Signals** page. Attacker attributes can be a combination of the attributes listed above. + +{{< img src="security/application_security/threats/attacker-attributes.png" alt="Screenshot of an ASM signals with attacker attributes identified" >}} + +## Attacker clustering mechanism + +The clustering algorithm analyzes the frequency of attributes in the attack traffic. It selects attributes that appear frequently while also filtering out typical traffic noise. This process results in attributes that can be blocked to stop or slow the attacker. + +The algorithm tracks the changes in the attack traffic by identifying emerging trends as the attacker changes tactics (for example, changing headers, tool, etc.). The attacker cluster is updated with the latest traffic trends. + +Traffic associated with threat intelligence is also considered in the clustering mechanism. The more an attribute is correlated with [Threat Intelligence][1], the higher the chance to create an attacker cluster around this attribute. + +The attacker clustering attributes selected are then shown as regular expressions that can be used to block with ASM's [In-App WAF][3] or to filter out traffic in ASM Traces explorer for investigation. + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /security/application_security/threats/threat-intelligence/ +[2]: /security/application_security/threats/attacker_fingerprint +[3]: /security/application_security/threats/event_rules +[4]: /security/application_security/threats/security_signals/ diff --git a/content/en/security/application_security/threats/attacker_fingerprint.md b/content/en/security/application_security/threats/attacker_fingerprint.md new file mode 100644 index 0000000000000..7b699545cdf7b --- /dev/null +++ b/content/en/security/application_security/threats/attacker_fingerprint.md @@ -0,0 +1,73 @@ +--- +title: Attacker Fingerprint +disable_toc: false +further_reading: +- link: "/security/application_security/threats/attacker_clustering" + tag: "Documentation" + text: "Attacker Clustering" +--- + +This topic describes a feature called **Datadog Attacker Fingerprint** to identify attackers beyond IP addresses. + +## Overview + +Datadog Attacker Fingerprint identifies attackers beyond IP addresses. Datadog Attacker fingerprints are automatically computed and added to your traces on attack or login attempts when Application Security Management (ASM) is enabled on your service. + +Datadog Attacker fingerprints are composed of several fragments: +* Endpoint Identifier +* Session Identifier +* Header Identifier +* Network Identifier + +Each fragment identifies request specifics by looking for certain headers and query body fields, and by hashing cookie values and query parameters. + +## Attacker Fingerprint fragment details + +### Endpoint identifier + +The endpoint identifier fragment provides information about a specific endpoint, as well as the parameters used to call it. This fragments uses the following information: +* HTTP method +* Hash of request URI +* Hash of query parameter fields +* Hash of body fields + +### Session identifier + +The session identifier fragment tracks users based on their session information and whether they are authenticated. This fragment uses the following information: +* Hash of user ID +* Hash of cookie fields +* Hash of cookie values +* Hash of session ID + +If all of the fields are unavailable, the fragment is omitted as it does not provide meaningful information. + +### Header identifier + +The header identifier fragment provides information about the headers used in the request. This particular fragment uses the following information: +* Presence of known headers: Referer, Connection, Accept-Encoding, etc. +* Hash of user agent +* The number of unknown headers +* Hash of unknown headers. The list of unknown headers excludes all XFF headers, cookies and x-datadog headers. + + +### Network identifier + +The network identifier fragment provides information about the network part of the request. This fragment uses the following information: +* The number of IPs in the XFF header used by the caller to determine the client’s IP. +* The presence or absence of the known XFF headers + + +## How to use Attacker Fingerprints + +Fragments can be used as filters in the ASM Traces explorer by filtering on the desired fingerprint field. For example: `@appsec.fingerprint.header.ua_hash:e462fa45` will filter on all requests that have the same user agent hash. + +{{< img src="security/application_security/threats/attacker-fingerprint-trace.png" alt="Screenshot of an ASM trace with attacker fingerprint in the trace side panel" >}} + +Attacker fingerprints are used in the [Attacker Clustering][1] feature. If a significant portion of your traffic presents the same fingerprint attributes, attacker clustering will show it has a common attack attribute. + + +## Further reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /security/application_security/threats/attacker_clustering diff --git a/content/en/security/application_security/troubleshooting.md b/content/en/security/application_security/troubleshooting.md index 9138b7685b10a..6c3bbc2ce45d6 100644 --- a/content/en/security/application_security/troubleshooting.md +++ b/content/en/security/application_security/troubleshooting.md @@ -631,8 +631,8 @@ If you continue to have issues with ASM, contact [Datadog support][1] with the f [9]: /tracing/glossary/#spans [10]: /tracing/troubleshooting/#tracer-debug-logs [12]: https://app.datadoghq.com/security/appsec/vm -[13]: /security/application_security/code_security/ -[14]: /security/application_security/software_composition_analysis +[13]: /security/code_security/iast/ +[14]: /security/code_security/software_composition_analysis [15]: https://app.datadoghq.com/security/configuration/asm/services-config [16]: https://app.datadoghq.com/organization-settings/remote-config [17]: https://ddtrace.readthedocs.io/en/stable/integrations.html#flask diff --git a/content/en/security/cloud_security_management/misconfigurations/frameworks_and_benchmarks/supported_frameworks.md b/content/en/security/cloud_security_management/misconfigurations/frameworks_and_benchmarks/supported_frameworks.md index 354794bf1b510..a033e115fd622 100644 --- a/content/en/security/cloud_security_management/misconfigurations/frameworks_and_benchmarks/supported_frameworks.md +++ b/content/en/security/cloud_security_management/misconfigurations/frameworks_and_benchmarks/supported_frameworks.md @@ -20,30 +20,34 @@ further_reading: CSM Misconfigurations comes with more than 1,000 out-of-the-box compliance rules that evaluate the configuration of your cloud resources and identify potential misconfigurations. Each [compliance rule][1] maps to one or more controls within the following compliance standards and industry benchmarks: -| Framework | Framework Tag | Rule Type | -|---------------------------------------------|-------------------|--------------------------| -| [CIS AWS Foundations Benchmark v1.5.0*][2] | `cis-aws` | Cloud | -| [CIS Azure Foundations Benchmark v2.0.0][3] | `cis-azure` | Cloud | -| [CIS GCP Foundations Benchmark v1.3.0][22] | `cis-gcp` | Cloud | -| [CIS Docker Benchmark v1.2.0][4] | `cis-docker ` | Infrastructure | -| [CIS Kubernetes Benchmark v1.7.0**][5] | `cis-kubernetes` | Infrastructure | -| [CIS Kubernetes (AKS) Benchmark v1.4.0**][5] | `cis-aks` | Cloud and Infrastructure | -| [CIS Kubernetes (EKS) Benchmark v1.3.0 **][5] | `cis-eks` | Cloud and Infrastructure | -| [CIS Ubuntu 20.04 v1.0.0][23] | `cis-ubuntu2004` | Infrastructure | -| [CIS Ubuntu 22.04 v1.0.0][23] | `cis-ubuntu2204 ` | Infrastructure | -| [CIS Red Hat Linux 7 v3.1.1][24] | `cis-rhel7` | Infrastructure | -| [CIS Red Hat Linux 8 v2.0.0][24] | `cis-rhel8` | Infrastructure | -| [CIS Red Hat Linux 9 v1.0.0][24] | `cis-rhel9` | Infrastructure | -| [CIS Amazon Linux 2 v1.0.0][25] | `cis-amzn2` | Infrastructure | -| [CIS Amazon Linux 2023 v1.0.0][25] | `cis-al2023` | Infrastructure | -| [PCI DSS v4.0][6] | `pci-dss` | Cloud | -| [AICPA SOC 2][7] | `soc-2` | Cloud | -| [ISO/IEC 27001 v2][8] | `iso-27001` | Cloud | -| [HIPAA][9] | `hipaa` | Cloud | -| [GDPR][10] | `gdpr` | Cloud | -| [NIST 800-53][30] | `nist-800-53` | Cloud | -| [NIST 800-171][31] | `nist-800-171` | Cloud | -| [NIST Cybersecurity Framework v1.1][32] | `nist-csf` | Cloud | +| Framework | Supported Versions | Framework Tag | Rule Type | +|-------------------------------------------------|------------------------|-------------------------------------|--------------------------| +| [CIS AWS Foundations Benchmark*][2] | v1.5.0, v3.0.0, v4.0.0 | `cis-aws` | Cloud | +| [CIS Azure Foundations Benchmark][3] | v2.0.0 | `cis-azure` | Cloud | +| [CIS GCP Foundations Benchmark][22] | v3.0.0 | `cis-gcp` | Cloud | +| [CIS Docker Benchmark][4] | v1.0.0 | `cis-docker ` | Infrastructure | +| [CIS Kubernetes Benchmark**][5] | v1.9.0 | `cis-kubernetes` | Infrastructure | +| [CIS Kubernetes (AKS) Benchmark**][5] | v1.4.0 | `cis-aks` | Cloud and Infrastructure | +| [CIS Kubernetes (EKS) Benchmark**][5] | v1.4.0 | `cis-eks` | Cloud and Infrastructure | +| [CIS Ubuntu 20.04][23] | v1.0.0 | `cis-ubuntu2004` | Infrastructure | +| [CIS Ubuntu 22.04][23] | v1.0.0 | `cis-ubuntu2204 ` | Infrastructure | +| [CIS Red Hat Linux 7][24] | v3.1.1 | `cis-rhel7` | Infrastructure | +| [CIS Red Hat Linux 8][24] | v2.0.0 | `cis-rhel8` | Infrastructure | +| [CIS Red Hat Linux 9][24] | v1.0.0 | `cis-rhel9` | Infrastructure | +| [CIS Amazon Linux 2][25] | v3.0.0 | `cis-amzn2` | Infrastructure | +| [CIS Amazon Linux 2023][25] | v1.0.0 | `cis-al2023` | Infrastructure | +| [CIS GKE][34] | v1.6.0 | `cis-gke` | Cloud | +| [PCI DSS][6] | v4.0 | `pci-dss` | Cloud | +| [AICPA SOC 2][7] | | `soc-2` | Cloud | +| [ISO/IEC 27001][8] | 2013 | `iso-27001` | Cloud | +| [HIPAA][9] | | `hipaa` | Cloud | +| [GDPR][10] | | `gdpr` | Cloud | +| [NIST 800-53][30] | v5 | `nist-800-53` | Cloud | +| [NIST 800-171][31] | v2 | `nist-800-171` | Cloud | +| [NIST Cybersecurity Framework][32] | v1.1 | `nist-csf` | Cloud | +| [Essential Cloud Security Controls][33] | v2 | `essential-cloud-security-controls` | Cloud | +| [Digital Operational Resilience Act (DORA)][35] | C(2024) 1532 | `dora` | Cloud | +| [FedRAMP High][36] (Preview) | v5 | `fedramp-high` | Cloud | *To pass the Monitoring Section of the [CIS AWS Foundations benchmark][2], you **must** enable [Cloud SIEM][11] and forward [CloudTrail logs to Datadog][12]. @@ -78,3 +82,7 @@ CSM Misconfigurations comes with more than 1,000 out-of-the-box compliance rules [30]: https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final [31]: https://csrc.nist.gov/pubs/sp/800/171/r2/upd1/final [32]: https://www.nist.gov/cyberframework/framework +[33]: https://www.datadoghq.com/blog/essential-cloud-security-controls-ruleset-v2/ +[34]: https://www.cisecurity.org/benchmark/kubernetes +[35]: https://www.eiopa.europa.eu/digital-operational-resilience-act-dora_en +[36]: https://www.fedramp.gov/ \ No newline at end of file diff --git a/content/en/security/cloud_security_management/setup/agentless_scanning/cloudformation.md b/content/en/security/cloud_security_management/setup/agentless_scanning/cloudformation.md index 0a260e6ca9ba6..06974517262df 100644 --- a/content/en/security/cloud_security_management/setup/agentless_scanning/cloudformation.md +++ b/content/en/security/cloud_security_management/setup/agentless_scanning/cloudformation.md @@ -27,8 +27,8 @@ If you've already [set up Cloud Security Management][3] and want to add a new cl 1. At the bottom of the AWS section, click **Add AWS accounts by following these steps**. The **Add New AWS Account(s)** dialog is displayed. 1. Select the AWS region where you want to create the CloudFormation stack. 1. Select an API key that is already configured for Remote Configuration. If the API key you select does not have Remote Configuration enabled, Remote Configuration is automatically enabled for that key upon selection. -1. Send **AWS Logs to Datadog** and **Enable Cloud Security Management** are automatically selected by default. Leave the selections as is. -1. In the **Agentless Scanning** section, toggle **Host Vulnerability Scanning**, **Container Vulnerability Scanning**, **Lambda Vulnerability Scanning**, and **Data Security Scanning** to the on position. +1. **Send AWS Logs to Datadog** and **Detect security issues** are automatically selected by default. Leave the selections as-is. +1. The **Enable Vulnerability Management (Host, Container and Lambda)** switch is also enabled by default. Leave this selection as-is. 1. Click **Launch CloudFormation Template**. A new window opens, displaying the AWS CloudFormation screen. Use the provided CloudFormation template to create a stack. The template includes the IAM permissions required to deploy and manage Agentless scanners. [1]: https://app.datadoghq.com/security/configuration/csm/setup diff --git a/content/en/security/cloud_security_management/setup/agentless_scanning/quick_start.md b/content/en/security/cloud_security_management/setup/agentless_scanning/quick_start.md index f65258184ee97..34106e4bde002 100644 --- a/content/en/security/cloud_security_management/setup/agentless_scanning/quick_start.md +++ b/content/en/security/cloud_security_management/setup/agentless_scanning/quick_start.md @@ -27,8 +27,8 @@ For existing users who want to add a new AWS account or enable Agentless Scannin 1. Click **Start Using Cloud Security Management** to continue. 1. Select the AWS region where you want to create the CloudFormation stack. 1. Select an API key that is already configured for Remote Configuration. If the API key you select does not have Remote Configuration enabled, Remote Configuration is automatically enabled for that key upon selection. -1. Send **AWS Logs to Datadog** and **Enable Cloud Security Management** are automatically selected by default. Leave the selections as is. -1. In the **Agentless Scanning** section, toggle **Host Vulnerability Scanning**, **Container Vulnerability Scanning**, **Lambda Vulnerability Scanning**, and **Data Security Scanning** to the on position. +1. **Send AWS Logs to Datadog** and **Detect security issues** are automatically selected by default. Leave the selections as-is. +1. The **Enable Vulnerability Management (Host, Container and Lambda)** switch is also enabled by default. Leave this selection as-is. 1. Click **Launch CloudFormation Template**. A new window opens, displaying the AWS CloudFormation screen. Use the provided CloudFormation template to create a stack. The template includes the IAM permissions required to deploy and manage Agentless scanners. ## Exclude resources from scans diff --git a/content/en/security/cloud_security_management/vulnerabilities/_index.md b/content/en/security/cloud_security_management/vulnerabilities/_index.md index 75b31d3a26049..b35ca26c85541 100644 --- a/content/en/security/cloud_security_management/vulnerabilities/_index.md +++ b/content/en/security/cloud_security_management/vulnerabilities/_index.md @@ -131,10 +131,10 @@ The following video provides an overview of how to enable and use CSM Vulnerabil [2]: https://app.datadoghq.com/containers/images [3]: https://app.datadoghq.com/security/csm [4]: https://app.datadoghq.com/security/infra-vulnerability?query=asset_type%3AHost&group=none -[5]: /security/application_security/software_composition_analysis/ +[5]: /security/code_security/software_composition_analysis/ [6]: https://www.datadoghq.com/product/infrastructure-monitoring/ [9]: https://www.cisa.gov/known-exploited-vulnerabilities-catalog -[10]: /security/application_security/code_security/ +[10]: /security/code_security/iast/ [11]: /security/cloud_security_management/setup/agentless_scanning/ [12]: /security/cloud_security_management/setup/agent [13]: /security/cloud_security_management/vulnerabilities/hosts_containers_compatibility diff --git a/content/en/security/cloud_security_management/vulnerabilities/hosts_containers_compatibility.md b/content/en/security/cloud_security_management/vulnerabilities/hosts_containers_compatibility.md index f4e292122af4b..d789fe45152f2 100644 --- a/content/en/security/cloud_security_management/vulnerabilities/hosts_containers_compatibility.md +++ b/content/en/security/cloud_security_management/vulnerabilities/hosts_containers_compatibility.md @@ -48,4 +48,4 @@ Cloud Security Management Vulnerabilities supports vulnerability scanning for th **Note**: For Agent-based vulnerability management in application libraries, see [Software Composition Analysis][1]. -[1]: /security/application_security/software_composition_analysis/ +[1]: /security/code_security/software_composition_analysis/ diff --git a/content/en/security/code_security/_index.md b/content/en/security/code_security/_index.md new file mode 100644 index 0000000000000..81454fce61817 --- /dev/null +++ b/content/en/security/code_security/_index.md @@ -0,0 +1,51 @@ +--- +title: Code Security +disable_toc: false +aliases: +- /code_analysis/ +--- + +Code Security scans your pre-production code, open source libraries, and repositories to find security vulnerabilities and code quality issues. It encompasses the following capabilities: + +- [Static Code Analysis (SAST)][1] for your first-party code +- [Software Composition Analysis][2] for open source dependencies in your codebase +- [Runtime Code Analysis (IAST)][3] for code-level vulnerabilities in your services + +## Static Code Analysis (SAST) + +SAST analyzes static pre-production code to identify maintainability and security issues. + +SAST has benefits for multiple people in your organization: + +- **Developers:** early vulnerablity detection, code quality improvements, faster development as developers spend less time debugging and patching. +- **Site Reliability Engineers (SREs):** system resilience, security compliance, automated security checks as SAST integrates with CI/CD pipelines. Overall, SAST reduces manual overhead for SREs and ensures that each release is thoroughly tested for vulnerabilities. +- **Administrators:** enhanced security posture, improved patch management in response to early vulnerability alerts, and compliance monitoring. +- **Support Representatives:** incident prevention, faster issue resolutions, and customer assurance. + +You supports scanning for multiple languages and you can integrate SAST into your development lifecycle using CI providers, source code management tools, and IDEs. + +See [Static Code Analysis Setup][6] for more details. + +## Software Composition Analysis + +Software Composition Analysis (SCA) analyzes open source libraries in both your repositories and running services, providing end-to-end visibility of library vulnerabilities and license management from development to production. + +SCA supports [static][4] and [runtime][5] scanning and provides libraries in the most common languages and technologies. + +## Runtime Code Analysis (IAST) + +Datadog Runtime Code Analysis (IAST) identifies code-level vulnerabilities in your services and provides actionable insights and recommended fixes. + +IAST enables Datadog to identify vulnerabilities using legitimate application traffic instead of relying on external tests that could require extra configuration or periodic scheduling. It also monitors your code’s interactions with other components of your stack, such as libraries and infrastructure, providing an up-to-date view of your attack surface area. + +For a list of supported services, see [Runtime Code Analysis][3]. + +[1]: /security/code_security/static_analysis/ +[2]: /security/code_security/software_composition_analysis/ +[3]: /security/code_security/iast/ +[4]: /security/code_security/software_composition_analysis/setup_static/ +[5]: /security/code_security/software_composition_analysis/setup_runtime/ +[6]: /security/code_security/static_analysis/setup/ + + + diff --git a/content/en/security/code_security/dev_tool_int/_index.md b/content/en/security/code_security/dev_tool_int/_index.md new file mode 100644 index 0000000000000..1fe094abee91d --- /dev/null +++ b/content/en/security/code_security/dev_tool_int/_index.md @@ -0,0 +1,12 @@ +--- +title: Dev tool integrations +disable_toc: false + +--- + +{{< whatsnext desc="You can integrate Code Security with several types of tools and receive real-time feedback on the quality and security of your code as it’s written." >}} + {{< nextlink href="/security/code_security/dev_tool_int/github_pull_requests/" >}}GitHub Pull Requests +{{< /nextlink >}} + {{< nextlink href="/security/code_security/dev_tool_int/ide_plugins/" >}}Datadog IDE Plugins for Code Security{{< /nextlink >}} + {{< nextlink href="/security/code_security/dev_tool_int/git_hooks/" >}}Git Hooks{{< /nextlink >}} +{{< /whatsnext >}} \ No newline at end of file diff --git a/content/en/code_analysis/git_hooks/_index.md b/content/en/security/code_security/dev_tool_int/git_hooks/_index.md similarity index 76% rename from content/en/code_analysis/git_hooks/_index.md rename to content/en/security/code_security/dev_tool_int/git_hooks/_index.md index a7e1c71c468d9..3d810dcd1848a 100644 --- a/content/en/code_analysis/git_hooks/_index.md +++ b/content/en/security/code_security/dev_tool_int/git_hooks/_index.md @@ -1,16 +1,8 @@ --- title: Git Hooks description: Prevent the merging of code with errors -further_reading: -- link: "/code_analysis/" - tag: "Documentation" - text: "Learn about Code Analysis" -- link: "/code_analysis/static_analysis/" - tag: "Documentation" - text: "Learn about Static Analysis" -- link: "/code_analysis/software_composition_analysis/" - tag: "Documentation" - text: "Learn about Software Composition Analysis" +aliases: + - /code_analysis/git_hooks/ --- ## Overview @@ -19,8 +11,8 @@ A [Git hook](https://git-scm.com/docs/githooks) is a program executed before a u or pushes code to a remote location. A Git hook is generally used to run verifications and enforce requirements on the code before it is pushed to the remote branch. -Datadog Code Analysis provides a Git hook to check for static analysis -violations or secrets before code is pushed or committed. The Datadog Code Analysis Git hook +Datadog Code Security provides a Git hook to check for static analysis +violations or secrets before code is pushed or committed. The Datadog Code Security Git hook checks the code from the latest commit and the default branch and surfaces any errors it detects. @@ -28,7 +20,7 @@ The Datadog Git hook warns developers before they push any code containing coding errors, vulnerabilities, or secrets. When you commit code with an error, a prompt like the following appears in the user terminal: -{{< img src="code_analysis/git_hooks/git_hook.png" alt="Datadog Git Hook detecting vulnerabilities" style="width:100%;">}} +{{< img src="code_security/git_hooks/git_hook.png" alt="Datadog Git Hook detecting vulnerabilities" style="width:100%;">}} ## Setup @@ -61,11 +53,7 @@ The program accepts the following parameters: - `--confirmation`: Ask the user for confirmation to override the Git hook check - `--default-branch`: Specify the name of the default branch. - - `--static-analysis`: Enable static analysis. + - `--static-analysis`: Enable Static Code Analysis. - `--secrets`: Enable secrets detection (private beta). - `--output `: Export the findings found in the commit into a SARIF file. -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - diff --git a/content/en/code_analysis/github_pull_requests.md b/content/en/security/code_security/dev_tool_int/github_pull_requests/_index.md similarity index 51% rename from content/en/code_analysis/github_pull_requests.md rename to content/en/security/code_security/dev_tool_int/github_pull_requests/_index.md index a0d755127e849..8fa9c8074f4bc 100644 --- a/content/en/code_analysis/github_pull_requests.md +++ b/content/en/security/code_security/dev_tool_int/github_pull_requests/_index.md @@ -1,37 +1,31 @@ --- title: GitHub Pull Requests -description: Learn how to use Code Analysis in GitHub pull requests. +description: Learn how to use Code Security in GitHub pull requests. aliases: - /static_analysis/github_pull_requests -further_reading: -- link: "/integrations/github/" - tag: "Documentation" - text: "Learn about the GitHub integration" -- link: "/code_analysis/" - tag: "Documentation" - text: "Learn about Code Analysis" +- /code_analysis/github_pull_requests/ --- ## Overview -Code Analysis integrates with GitHub pull requests in two ways: -- [Pull request comments to flag violations](#enable-code-analysis-pr-comments-for-your-repositories): During code reviews on GitHub, Datadog can automatically check for Static Analysis violations in pull requests for repositories that have at least one ruleset applied. Violations are flagged with an inline review comment on the relevant line(s) of code, along with suggested fixes (when applicable) that can be applied directly in the pull request. This is only available for Static Analysis (SAST). -{{< img src="ci/static-analysis-pr-comment-example.png" alt="Example of a Code Analysis comment on a pull request" style="width:90%;" >}} +Code Security integrates with GitHub pull requests in two ways: +[Pull request comments to flag violations](#enable-code-security-pr-comments-for-your-repositories) +{{< img src="ci/static-analysis-pr-comment-example.png" alt="Example of a Code Security comment on a pull request" style="width:90%;" >}} -- [Open a pull request to fix an issue directly from Datadog](#fixing-a-vulnerability-directly-from-datadog): You can create a pull request from the UI to fix a security vulnerability or code quality issue based on Datadog's suggested code fix. This is only available for Static Analysis (SAST). -{{< img src="ci/sast_one_click_light.png" alt="Example of one-click remediation for Code Analysis" style="width:90%;" >}} +- [Open a pull request to fix an issue directly from Datadog](#fixing-a-vulnerability-directly-from-datadog): You can create a pull request from the UI to fix a security vulnerability or code quality issue based on Datadog's suggested code fix. This is only available for Static Code Analysis (SAST). +{{< img src="ci/sast_one_click_light.png" alt="Example of one-click remediation for Code Security" style="width:90%;" >}} To enable these features, ensure you have the required GitHub permissions (Read & Write) for your repository. -## Set up Code Analysis for GitHub pull requests +## Set up Code Security for GitHub pull requests -### Enable Datadog Code Analysis +### Enable Datadog Code Security -To use Datadog Code Analysis, add the appropriate configuration files to your repository, as described in the [setup instructions][1]. +To use Datadog Code Security, add the appropriate configuration files to your repository, as described in the [setup instructions][1]. ### Configure a GitHub App -To use Code Analysis on GitHub, you can do one of the following: +To use Code Security on GitHub, you can do one of the following: - Create a GitHub App in Datadog. - Update an existing GitHub App, if you have already created one in Datadog. @@ -42,7 +36,7 @@ The permissions you grant to the GitHub App determine which [GitHub integration] 1. In Datadog, navigate to [**Integrations > GitHub Applications > Add New GitHub Application**][3]. 1. Fill out any required details, such as the GitHub organization name. -1. Under **Select Features**, check the **Code Analysis: Pull Request Review Comments** box. +1. Under **Select Features**, check the **Code Security: Pull Request Review Comments** box. 1. Under **Edit Permissions**, verify that the **Pull Requests** permission is set to **Read & Write**. 1. Click **Create App in GitHub**. 1. Enter a name for your app, and submit it. @@ -53,49 +47,36 @@ The permissions you grant to the GitHub App determine which [GitHub integration] #### Update an existing GitHub App -1. In Datadog, navigate to [**Integrations > GitHub Applications**][5], and search for the GitHub App you want to use for Code Analysis. -{{< img src="ci/static-analysis-existing-github-app.png" alt="Example of a Static Analysis comment on a pull request" style="width:90%;" >}} -1. On the **Features** tab, look at the **Code Analysis: Pull Request Comments** section to determine whether your GitHub App needs additional permissions. If so, click **Update permissions in GitHub** to edit the app settings. +1. In Datadog, navigate to [**Integrations > GitHub Applications**][5], and search for the GitHub App you want to use for Code Security. +{{< img src="ci/static-analysis-existing-github-app.png" alt="Example of a Static Code Analysis comment on a pull request" style="width:90%;" >}} +1. On the **Features** tab, look at the **Code Security: Pull Request Comments** section to determine whether your GitHub App needs additional permissions. If so, click **Update permissions in GitHub** to edit the app settings. 1. Under **Repository permissions**, set the **Pull Requests** access to **Read and write**. {{< img src="ci/static-analysis-pr-read-write-permissions.png" alt="The dropdown for the pull request read and write permission" style="width:90%;" >}} 1. Under the **Subscribe to events** heading, check the **Pull request** box. {{< img src="ci/static-analysis-pr-review-comment.png" alt="The checkbox for the pull request review comment permission" style="width:90%;" >}} -### Enable Code Analysis PR comments for your repositories +### Enable Code Security PR comments for your repositories -1. In Datadog, navigate to [**CI Settings** > **Code Analysis Settings**][4]. -1. Click the toggle switch next to a given repository to enable **GitHub Comments**. In the example below, comments are enabled for the `demo-static-analysis-gates` repository. - -{{< img src="ci/static-analysis-github-comments.png" alt="Example of a Code Analysis comment on a pull request" style="width:100%;" >}} +1. In Datadog, navigate to [**Security** > **Code Security** > **Settings**][4]. +2. In **Enable scanning for your repositories**, select **Edit** next to a given repository. +3. Toggle **Enable Static Analyis** to on. **Note:** If you are using [GitHub Actions][6] to run your scans, trigger the action on `push` in order for comments to appear. ### Fixing a vulnerability directly from Datadog -If your GitHub app's **Pull Requests** permission is set to **Read & Write**, one-click remediation is enabled for all Static Analysis findings with an available suggested fix. +If your GitHub app's **Pull Requests** permission is set to **Read & Write**, one-click remediation is enabled for all Static Code Analysis findings with an available suggested fix. Follow these steps to fix a vulnerability and open a pull request: -1. View a specific result in Code Analysis. -2. Click **Fix Violation** in the side panel of the result. -3. Select **Open a Pull Request**. -4. Enter a pull request title and commit message. -5. Click **Create PR**. - -You can also fix a vulnerability by committing directly to the branch the result was found on. - -To commit a suggested fix: - -1. View a specific result in Code Analysis. -2. Click **Fix Violation** in the side panel of the result. -3. Click **Commit to current branch**. - -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} +1. Go to **Code Security > Repositories**. +2. Click a repo. +3. On the repo's page, click the **Code Vulnerabilities** or **Code Quality** tabs. +4. Click a violation. +5. If a suggested fix is available for that violation, one-click remediation is available in the side panel. -[1]: /code_analysis#setup +[1]: /security/code_security/ [2]: /integrations/github/ [3]: https://app.datadoghq.com/integrations/github/add -[4]: https://app.datadoghq.com/ci/settings/static-analysis +[4]: https://app.datadoghq.com/security/configuration/code-security/setup [5]: https://app.datadoghq.com/integrations/github/configuration -[6]: /code_analysis/static_analysis/github_actions/ +[6]: /security/code_security/static_analysis/github_actions/ diff --git a/content/en/code_analysis/ide_plugins/_index.md b/content/en/security/code_security/dev_tool_int/ide_plugins/_index.md similarity index 61% rename from content/en/code_analysis/ide_plugins/_index.md rename to content/en/security/code_security/dev_tool_int/ide_plugins/_index.md index 6740f76c58e10..68fb324bf50b8 100644 --- a/content/en/code_analysis/ide_plugins/_index.md +++ b/content/en/security/code_security/dev_tool_int/ide_plugins/_index.md @@ -1,18 +1,14 @@ --- -title: Datadog IDE Plugins for Code Analysis -description: Learn how to set up Datadog IDE plugins for enhanced code analysis and quality assurance in your development environment. +title: Datadog IDE Plugins for Code Security +description: Learn how to set up Datadog IDE plugins for enhanced code security and quality assurance in your development environment. +aliases: + - /code_analysis/ide_plugins/ disable_toc: false -further_reading: -- link: "/developers/ide_plugins" - tag: "Documentation" - text: "Learn about Datadog IDE Plugins" -algolia: - tags: ['code analysis', 'datadog code analysis', 'static analysis', 'ide plugins', 'SAST'] --- ## Overview -[Code Analysis][1] integrates directly with integrated development environment (IDE) tools to provide real-time feedback on the quality and security of your first-party code as it's being written. +[Code Security][1] integrates directly with integrated development environment (IDE) tools to provide real-time feedback on the quality and security of your first-party code as it's being written. {{< whatsnext desc="See the documentation for information about the following integrations:">}} {{< nextlink href="developers/ide_plugins/idea/#static-analysis" >}}JetBrains IDEs: IntelliJ IDEA, GoLand, PhpStorm, and PyCharm{{< /nextlink >}} @@ -20,8 +16,5 @@ algolia: {{< nextlink href="developers/ide_plugins/visual_studio/#static-analysis" >}}Visual Studio{{< /nextlink >}} {{< /whatsnext >}} -## Further Reading -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /code_analysis/ \ No newline at end of file +[1]: /security/code_security/ \ No newline at end of file diff --git a/content/en/security/code_security/guides/_index.md b/content/en/security/code_security/guides/_index.md new file mode 100644 index 0000000000000..b6b4eb69a2069 --- /dev/null +++ b/content/en/security/code_security/guides/_index.md @@ -0,0 +1,12 @@ +--- +title: Guides +disable_toc: false + +--- + + + +{{< whatsnext desc="Software Composition Analysis" >}} + {{< nextlink href="/security/code_security/guides/automate_risk_reduction_sca/" >}}Automate open source risk reduction with Datadog SCA{{< /nextlink >}} + +{{< /whatsnext >}} \ No newline at end of file diff --git a/content/en/security/code_security/guides/automate_risk_reduction_sca.md b/content/en/security/code_security/guides/automate_risk_reduction_sca.md new file mode 100644 index 0000000000000..aafaf5fa65c45 --- /dev/null +++ b/content/en/security/code_security/guides/automate_risk_reduction_sca.md @@ -0,0 +1,98 @@ +--- +title: Automate open source risk reduction with Datadog SCA +disable_toc: false +aliases: + - /security/application_security/guide/automate_risk_reduction_sca/ +--- + +Datadog Software Composition Analysis (SCA) enables you to identify, prioritize, and resolve vulnerabilities and other risks in the third-party, open source software (OSS) libraries used in your application services. + +This topic describes how to use SCA to view and resolve vulnerabilities and risks in your open source libraries. + +## Benefits of SCA + +SCA addresses the following risks associated with open source libraries: + +- **Security vulnerabilities:** Known vulnerabilities, particularly those with CVEs (Common Vulnerabilities and Exposures). +- **Malware:** Malicious actors using techniques like typosquatting and hijacking to distribute malware. +- **Licensing issues:** Non-compliance with varied open source licenses can lead to legal problems. +- **Deprecated libraries:** Using outdated components can introduce unpatched vulnerabilities and compatibility issues. +- **Unmaintained libraries:** Lack of active development can lead to unresolved bugs and security flaws. +- **Poor security hygiene:** Some projects lack best practices in security, such as proper code reviews. + +Datadog SCA helps automate risk reduction processes, enhancing productivity in the following ways: + +- **Integration across development lifecycle:** Analyzes open source and third-party components, providing a detailed library catalog. +- **Continuous evaluation:** Offers real-time visibility into deployed services, enhancing the security posture by enabling prioritization of vulnerabilities in sensitive environments. +- **Collaboration:** Breaks down silos and involves more teams in security (DevOps, Operations, SREs), fostering a culture of collaboration. + + +## View the libraries used in your services + +The Libraries catalog displays the libraries and versions used across your services. + +The catalog surfaces all library details using several public data sources (GuardDog, NIST, osv.dev, OpenSSF scores, etc.) and private data sources (including Datadog’s Security Research group). + +To use the Libraries catalog, see [Libraries][1] or select **Security > Code Security > Vulnerabilities**, and then select **Libraries**. + +In **Libraries**, you can: + +- View all of the libraries used in each of your services. +- Use the **Datadog Severity** facet to filter libraries according to vulnerability rating. +- View the source repository for each library. +- See library details such as the current version used in a service and the latest version available. +- View the [OpenSSF Scorecard][2] for the library. + + +## View vulnerabilities and risks in libraries + +In the **Vulnerabilities** explorer, you can view the vulnerabilities and risks for the libraries you are using. + +### Library vulnerabilities + +A library vulnerability is a security bug in a library. + +To view your library vulnerabilities, see [Library Vulnerabilities][3] or navigate to **Security > Code Security > Vulnerabilities > Libraries**. + +In **Libraries**, you can: + +- Use **Libraries** to view different vulnerability types. + - For example, every vulnerability has an associated CVE ID, displayed in the explorer and each library detail. You can use the Vulnerability facet to sort by CVE ID. +- View vulnerability details like: + - Explanation + - Service and environment + - First and last detection + - Window of exposure + - Severity breakdown + - Remediation steps + +### Library risks + +A library's risks are a group of weaknesses that are not directly tied to security. For example, the library is deprecated, the licensing of the project is too restrictive, or the team follows poor security practices. + +To view your library risks, see [Library Risks][4] or select **Security > Inventory > Libraries**. + +In **Libraries**, you can: +- In **View**, select **Runtime** to view risks detected at runtime. +- In **View**, select **Static** to view risks detected in your source code repositories. +- View risk details like: + - Explanation + - Service and environment + - First and last detection + - Window of exposure + - Severity breakdown + + +## Best practices to mitigate risks + +To mitigate risks, follow these best practices: + + - **Due diligence:** Evaluate open source projects thoroughly before use. + - **Stay updated:** Regularly update components and subscribe to security advisories. + - **Vulnerability management:** Establish processes to triage and remediate vulnerabilities. + - **Measurement:** Track metrics to understand and improve the security posture over time. + +[1]: https://app.datadoghq.com/security/appsec/vm/summary/sca?query=source%3Alibrary +[2]: https://github.com/ossf/scorecard?tab=readme-ov-file#what-is-scorecard +[3]: https://app.datadoghq.com/security/appsec/vm/library?query=status%3A%28Open%20OR%20%22In%20progress%22%29&group=library +[4]: https://app.datadoghq.com/security/appsec/inventory/libraries?column=uniqueVulnerabilitySeverityScore&detection=runtime&group=library-version&order=desc&page=1 \ No newline at end of file diff --git a/content/en/security/application_security/code_security/_index.md b/content/en/security/code_security/iast/_index.md similarity index 67% rename from content/en/security/application_security/code_security/_index.md rename to content/en/security/code_security/iast/_index.md index 2224d3024de19..ba8ade1157d5d 100644 --- a/content/en/security/application_security/code_security/_index.md +++ b/content/en/security/code_security/iast/_index.md @@ -1,35 +1,19 @@ --- -title: Code Security -further_reading: -- link: "/security/application_security/how-appsec-works/" - tag: "Documentation" - text: "How Application Security Management Works" -- link: "https://www.datadoghq.com/blog/iast-datadog-code-security/" - tag: "Blog" - text: "Enhance application security in production with Datadog Code Security" -- link: "https://www.datadoghq.com/blog/application-code-vulnerability-detection/" - tag: "Blog" - text: "Find vulnerabilities in your code with Datadog Code Security" -- link: "https://www.datadoghq.com/blog/code-security-owasp-benchmark/" - tag: "Blog" - text: "Datadog Code Security achieves 100 percent accuracy in OWASP Benchmark by using an IAST approach" +title: Runtime Code Analysis (IAST) +disable_toc: false +aliases: +- /security/application_security/code_security/ --- ## Overview -Datadog Code Security identifies code-level vulnerabilities in your services and provides actionable insights and recommended fixes. +Datadog Runtime Code Analysis (IAST) identifies code-level vulnerabilities in your services and provides actionable insights and recommended fixes. For a list of supported services, see the [Library Compatibility Requirements][5]. -Code Security uses an Interactive Application Security Testing (IAST) approach to find vulnerabilities within your application code. IAST uses instrumentation embedded in your code like application performance monitoring (APM). +Runtime Code Analysis uses an Interactive Application Security Testing (IAST) approach to find vulnerabilities within your application code based on your Datadog application instrumentation. -Code Security also monitors your code’s interactions with other components of your stack, such as libraries and infrastructure. - -IAST enables Datadog to identify vulnerabilities using legitimate application traffic instead of relying on external tests that could require extra configuration or periodic scheduling. - -Code Security's runtime application monitoring provides an up-to-date view of your attack surface that enables you to quickly identify potential issues. - -## Code-level vulnerabilities list +IAST enables Datadog to identify vulnerabilities using legitimate application traffic instead of relying on external tests that could require extra configuration or periodic scheduling. It also monitors your code’s interactions with other components of your stack, such as libraries and infrastructure, providing an up-to-date view of your attack surface area. The Code Security detection rules support the following languages. @@ -74,7 +58,7 @@ The Code Security detection rules support the following languages. The [Vulnerability Explorer][1] uses real-time threat data to help you understand vulnerabilities endangering your system. Vulnerabilities are ordered by severity. -{{< img src="/security/application_security/code_security/vulnerability_explorer_code_vulnerabilities.png" alt="Code Security in the Vulnerability Explorer" style="width:100%;" >}} +{{< img src="/code_security/vulnerability_explorer_code_vulnerabilities.png" alt="Code Security in the Vulnerability Explorer" style="width:100%;" >}} To triage vulnerabilities, each vulnerability contains a brief description of the issue, including: @@ -83,37 +67,37 @@ To triage vulnerabilities, each vulnerability contains a brief description of th - First detection. - The exact file and line number where the vulnerability was found. -{{< img src="/security/application_security/code_security/vulnerability-details.png" alt="Code Security vulnerability details" style="width:100%;" >}} +{{< img src="/code_security/vulnerability-details.png" alt="Code Security vulnerability details" style="width:100%;" >}} Each vulnerability detail includes a risk score (see screenshot below) and a severity rating: critical, high, medium, or low. The risk score is tailored to the specific runtime context, including factors such as where the vulnerability is deployed and whether the service is targeted by active attacks. -{{< img src="/security/application_security/code_security/vulnerability_prioritization.png" alt="Code Security vulnerability prioritization" style="width:100%;" >}} +{{< img src="/code_security/vulnerability_prioritization.png" alt="Code Security vulnerability prioritization" style="width:100%;" >}} ## Remediation Datadog Code Security automatically provides the information teams need to identify where a vulnerability is in an application, from the affected filename down to the exact method and line number. -{{< img src="/security/application_security/code_security/code_security_remediation.png" alt="Code Security vulnerability remediation" style="width:100%;" >}} +{{< img src="/code_security/code_security_remediation.png" alt="Code Security vulnerability remediation" style="width:100%;" >}} When the [GitHub integration][7] is enabled, Code Security shows the first impacted version of a service, the commit that introduced the vulnerability, and a snippet of the vulnerable code. This information gives teams insight into where and when a vulnerability occurred and helps to prioritize their work. -{{< img src="/security/application_security/code_security/vulnerability_code_snippet.png" alt="Code vulnerability snippet" style="width:100%;" >}} +{{< img src="/code_security/vulnerability_code_snippet.png" alt="Code vulnerability snippet" style="width:100%;" >}} Detailed remediation steps are provided for each detected vulnerability. -{{< img src="/security/application_security/code_security/remediation_recommendations.png" alt="Remediation recommendations" style="width:100%;" >}} +{{< img src="/code_security/remediation_recommendations.png" alt="Remediation recommendations" style="width:100%;" >}} Recommendations enable you to change the status of a vulnerability, assign it to a team member for review, and create a Jira issue for tracking. -{{< img src="/security/application_security/code_security/vulnerability_jira_ticket.png" alt="creating a Jira ticket from a vulnerability" style="width:100%;" >}} +{{< img src="/code_security/vulnerability_jira_ticket.png" alt="creating a Jira ticket from a vulnerability" style="width:100%;" >}} **Note:** To create Jira issues for vulnerabilities, you must configure the Jira integration, and have the `manage_integrations` permission. For detailed instructions, see the [Jira integration][3] documentation, as well as the [Role Based Access Control][4] documentation. ## Enabling Code Security -To enable Code Security configure the [Datadog Tracing Library][9]. Detailed instructions for both methods can be found in the [**Security > Application Security > Settings**][10] section. +To enable Code Security configure the [Datadog Tracing Library][9]. Detailed instructions for both methods can be found in the [**Security > Code Security > Settings**][10] section. If you need additional help, contact [Datadog support][11]. @@ -121,18 +105,15 @@ If you need additional help, contact [Datadog support][11]. For information on disabling Code Security, see [Disabling Code Security][12]. -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/security/appsec/vm/code -[2]: /security/application_security/code_security/setup/java/ +[2]: /security/code_security/iast/setup/java/ [3]: /integrations/jira/ [4]: /account_management/rbac/permissions/#integrations -[5]: /security/application_security/code_security/setup/compatibility/ +[5]: /security/code_security/iast/setup/ [6]: https://docs.google.com/forms/d/1wsgbd80eImvJSjXe5y5VCjAW0zzn5p3CoCLsOy0vqsk/ [7]: /integrations/github/ -[9]: /security/application_security/code_security/setup/ -[10]: https://app.datadoghq.com/security/configuration/asm/setup +[9]: /security/code_security/iast/setup/ +[10]: https://app.datadoghq.com/security/configuration/code-security/setup [11]: https://www.datadoghq.com/support/ [12]: /security/application_security/troubleshooting/#disabling-code-security diff --git a/content/en/security/code_security/iast/setup/_index.md b/content/en/security/code_security/iast/setup/_index.md new file mode 100644 index 0000000000000..be60a513bc827 --- /dev/null +++ b/content/en/security/code_security/iast/setup/_index.md @@ -0,0 +1,954 @@ +--- +title: Runtime Code Analysis Setup +disable_toc: false +aliases: +- /security/application_security/enabling/single_step/code_security/ +- /security/application_security/enabling/tracing_libraries/code_security/ +- /security/application_security/code_security/setup/ +--- + +## Prerequisites +Before setting up Code Security, ensure the following prerequisites are met: + +1. **Datadog Agent Installation:** The Datadog Agent is installed and configured for your application's operating system or container, cloud, or virtual environment. +2. **Datadog APM Configuration:** Datadog APM is configured for your application or service, and web traces (`type:web`) are being received by Datadog. +3. **Supported Tracing Library:** The Datadog Tracing Library used by your application or service supports Code Security capabilities for the language of your application or service. For more details, refer to the **Compatibility Requirements** section below. + +## Using Datadog Tracing Libraries + +Select your application language for details on how to enable Code Security for your language and infrastructure types. + + +{{% collapse-content title="Java" level="h4" %}} + +You can detect code-level vulnerabilities and monitor application security in Java applications running in Docker, Kubernetes, Amazon ECS, and AWS Fargate. + +Follow these steps to enable Code Security in your service: + +1. [Update your Datadog Agent][6] to at least version 7.41.1. +2. Update your Datadog Tracing Library to at least the minimum version needed to turn on Code Security. For details, see the **Compatibility Requirements** below. +3. Add the `DD_IAST_ENABLED=true` environment variable to your application configuration. + + From the command line: + + ```shell + java -javaagent:/path/to/dd-java-agent.jar -Ddd.iast.enabled=true -Ddd.service= -Ddd.env= -jar path/to/app.jar + ``` + + Or one of the following orchestration tool methods, depending on where your application runs. + + **Note**: Read-only file systems are not supported. The application must have access to a writable `/tmp` directory. + + +#### Docker CLI + +Update your configuration container for APM by adding the following argument in your `docker run` command: + + +```shell +docker run [...] -e DD_IAST_ENABLED=true [...] +``` + +#### Dockerfile + +Add the following environment variable value to your container Dockerfile: + +```Dockerfile +DD_IAST_ENABLED=true +``` + +#### Kubernetes + +Update your deployment configuration file for APM and add the IAST environment variable: + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` + +#### Amazon ECS + +Update your ECS task definition JSON file, by adding this in the environment section: + +```json +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` + +[1]: https://github.com/DataDog/dd-trace-java/releases +[2]: /security/code_security/iast/setup/ +[3]: /security/code_security/iast/setup/ +[4]: https://app.datadoghq.com/security/appsec/vm +[5]: /help +[6]: /agent/versions/upgrade_between_agent_minor_versions/ + + +{{% /collapse-content %}} + +{{% collapse-content title=".NET" level="h4" %}} + +You can detect code-level vulnerabilities and monitor application security in .NET applications running in Docker, Kubernetes, Amazon ECS, and AWS Fargate. + +Follow these steps to enable Code Security in your service: + +1. [Update your Datadog Agent][3] to at least version 7.41.1. +2. Update your Datadog Tracing Library to at least the minimum version needed to turn on Code Security. For details, see the **Compatibility Requirements** below. +3. Add the `DD_IAST_ENABLED=true` environment variable to your application configuration. For example, on Windows self-hosted, run the following PowerShell snippet as part of your application start-up script: + + ```sh + $target=[System.EnvironmentVariableTarget]::Process + [System.Environment]::SetEnvironmentVariable("DD_IAST_ENABLED","true",$target) + ``` + +Or one of the following methods, depending on where your application runs: + +#### Windows-Self-Hosted + +In a Windows console: + +```sh +rem Set environment variables +SET DD_IAST_ENABLED=true + +rem Start application +dotnet.exe example.dll +``` + +#### IIS + +Run the following PowerShell command as administrator to configure the necessary environment variables in the registry `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment` and restart IIS. + +```sh +$target=[System.EnvironmentVariableTarget]::Machine +[System.Environment]::SetEnvironmentVariable("DD_IAST_ENABLED","true",$target) +net stop was /y +net start w3svc +``` + +#### Linux + +Add the following to your application configuration: + +``` +DD_IAST_ENABLED=true +``` + +#### Docker CLI + +Update your configuration container for APM by adding the following argument in your docker run command: + +``` +docker run -d --name app -e DD_IAST_ENABLED=true company/app:latest +``` + +#### Dockerfile + +Add the following environment variable value to your container Dockerfile: + +``` +ENV DD_IAST_ENABLED=true +``` + +#### Kubernetes + +Update your deployment configuration file for APM and add the ASM environment variable: + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` + +#### AWS ECS + +Update your ECS task definition JSON file, by adding this in the environment section: + +```yaml +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` + +#### AWS Fargate + +Add the following line to your container Dockerfile: + +``` +ENV DD_IAST_ENABLED=true +``` + +To see Code Security in action, browse your service and find code-level vulnerabilities in the [Vulnerability Explorer][4]. + +{{< img src="/security/application_security/Code-Level-Vulnerability-Details-New.mp4" alt="Video showing Code Vulnerabilities" video="true" >}} + +If you need additional assistance, contact [Datadog support][5]. + +[1]: https://github.com/DataDog/dd-trace-dotnet/releases/latest +[2]: /security/code_security/iast/setup/ +[3]: /agent/versions/upgrade_between_agent_minor_versions/ +[4]: /security/code_security/iast/setup/ +[5]: /help + +{{% /collapse-content %}} + +{{% collapse-content title="Node.js" level="h4" %}} + +You can detect code-level vulnerabilities and monitor application security in Node.js applications running in Docker, Kubernetes, Amazon ECS, and AWS Fargate. + +Follow these steps to enable Code Security in your service: + +1. [Update your Datadog Agent][4] to at least version 7.41.1. +2. Update your Datadog Tracing Library to at least the minimum version needed to turn on Code Security. For details, see the **Compatibility Requirements** below. +3. Add the `DD_IAST_ENABLED=true` environment variable to your application configuration. + + If you initialize the APM library on the command line using the `--require` option to Node.js: + + ```shell + node --require dd-trace/init app.js + ``` + Then use environment variables to enable ASM: + ```shell + DD_IAST_ENABLED=true node app.js + ``` + How you do this varies depending on where your service runs: + +#### Docker CLI + +Update your configuration container for APM by adding the following argument in your `docker run` command: + +```shell +docker run [...] -e DD_IAST_ENABLED=true [...] +``` + +#### Dockerfile + +Add the following environment variable value to your container Dockerfile: + +```Dockerfile +ENV DD_IAST_ENABLED=true +``` + +#### Kubernetes + +Update your configuration yaml file container for APM and add the AppSec env variable: + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` + +#### Amazon ECS + +Update your ECS task definition JSON file, by adding this in the environment section: + +```json +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` + +[1]: https://github.com/DataDog/dd-trace-js/blob/master/MIGRATING.md +[2]: /security/code_security/iast/setup/nodejs/ +[3]: /security/code_security/iast/setup/ +[4]: /agent/versions/upgrade_between_agent_minor_versions/ +[5]: https://app.datadoghq.com/security/appsec/vm/code +[6]: /help + +{{% /collapse-content %}} + +{{% collapse-content title="Python" level="h4" %}} + +You can detect code-level vulnerabilities and monitor application security in Python applicationss running in Docker, Kubernetes, Amazon ECS, and AWS Fargate. + +NOTE: Code-Level Vulnerability detection in Python is in Preview. + +Follow these steps to enable Code Security in your service: + +1. [Update your Datadog Agent][6] to at least version 7.41.1. +2. Update your Datadog Tracing Library to at least the minimum version needed to turn on Code Security. For details, see the **Compatibility Requirements** below. +3. Add the `DD_IAST_ENABLED=true` environment variable to your application configuration. + + From the command line: + + ```shell + DD_IAST_ENABLED=true ddtrace-run python app.py + ``` + + Or one of the following methods, depending on where your application runs: + + +#### Docker CLI + +Update your configuration container for APM by adding the following argument in your `docker run` command: + + +```shell +docker run [...] -e DD_IAST_ENABLED=true [...] +``` + +#### Dockerfile + +Add the following environment variable value to your container Dockerfile: + +```Dockerfile +DD_IAST_ENABLED=true +``` + +#### Kubernetes + +Update your deployment configuration file for APM and add the IAST environment variable: + +```yaml +spec: + template: + spec: + containers: + - name: + image: / + env: + - name: DD_IAST_ENABLED + value: "true" +``` + +#### Amazon ECS + +Update your ECS task definition JSON file, by adding this in the environment section: + +```json +"environment": [ + ..., + { + "name": "DD_IAST_ENABLED", + "value": "true" + } +] +``` + +#### Third-Party Library Compatibility Note + +Code Security modifies Python code at runtime. This could cause conflicts with other third-party Python libraries that perform similar code transformations, particularly with the following, though not limited to them: + +- Numba +- JAX +- TorchScript +- TensorFlow +- Bytecode +- Codetransformer +- PyPy + +Additionally, Code Security does not correctly propagate taint ranges over native (compiled) code. Therefore, if your codebase heavily relies on modules written in C or C++, +using the CPython API, or on intermediate language systems like Cython, the results might be less accurate than expected. + + +[1]: https://github.com/DataDog/dd-trace-py/releases +[2]: /security/code_security/iast/setup/python +[3]: /security/code_security/iast/setup/ +[4]: https://app.datadoghq.com/security/appsec/vm/code +[5]: /help +[6]: /agent/versions/upgrade_between_agent_minor_versions/ + +{{% /collapse-content %}} + +### Finishing setup + +1. Restart your service. +2. To see Code Security in action, browse your service and find code-level vulnerabilities in the [Vulnerability Explorer][4]. + +{{< img src="/security/application_security/Code-Level-Vulnerability-Details-New.mp4" alt="Video showing Code Vulnerabilities" video="true" >}} + +If you need additional assistance, contact [Datadog support][5]. + +[1]: /security/code_security/iast/setup/ +[4]: https://app.datadoghq.com/security/appsec/vm +[5]: /help + +## Compatibility Requirements + +The following ASM capabilities are supported relative to each language's tracing library: + +| Application Security capability | Java | .NET | Node.js | Python | Go | Ruby | PHP | +|-----------------------------------------------|---------|----------|----------------|---------------|-----------------|---------------|---------------| +| Code Security | 1.15.0 | 2.42.0 | 4.18.0 | Preview | not supported | not supported | not supported | + +Select your application language for details about framework compatibility and feature support. + +{{% collapse-content title="Java" level="h4" %}} + +### Application Security capabilities + +The following application security capabilities are supported in the Java library, for the specified tracer version: + +| Application Security capability | Minimum Java tracer version | +| -------------------------------- | ----------------------------| +| Threat Detection | 1.8.0 | +| API Security | 1.31.0 | +| Threat Protection| 1.9.0 | +| Customize response to blocked requests | 1.11.0 | +| Software Composition Analysis (SCA) | 1.1.4 | +| Code Security | 1.15.0| +| Automatic user activity event tracking | 1.20.0 | + +The minimum tracer version to get all supported application security capabilities for Java is 1.31.0. + +**Note**: Threat Protection requires enabling [Remote Configuration][2], which is included in the listed minimum tracer version. + +#### Supported deployment types +| Type | Threat Detection support | Software Composition Analysis | +|-------------------|--------------------------|-------------------------------| +| Docker | | | +| Kubernetes | | | +| Amazon ECS | | | +| AWS Fargate | | | +| AWS Lambda | | | +| Azure App Service | | | + +**Note**: Azure App Service is supported for **web applications only**. Application Security doesn't support Azure Functions. + +### Language and framework compatibility + +#### Supported Java versions +The Java Tracer supports automatic instrumentation for the following Oracle JDK and OpenJDK JVM runtimes. + +| JVM versions | Operating Systems | Support level | Tracer version | +| -------------| ------------------------------------------------------------------------------- | ----------------------------------- | -------------- | +| 8 to 17 | Windows (x86-64)
Linux (glibc, musl) (arm64, x86-64)
MacOS (arm64, x86-64) | Supported | Latest | + + +Datadog does not officially support any early-access versions of Java. + +#### Web framework compatibility + +- Attacker source HTTP request details +- Tags for the HTTP request (status code, method, etc) +- Distributed Tracing to see attack flows through your applications + +##### Application Security Capability Notes +- **Software Composition Analysis** is supported on all frameworks +- If **Code Security** does not support your framework, it will still detect Weak Cipher, Weak Hashing, Insecure Cookie, Cookie without HttpOnly Flag, and Cookie without SameSite Flag vulnerabilities. + + + +| Framework | Versions | Threat Detection supported? | Threat Protection supported? |Code Security? | +| ----------------------- | ---------- | --------------- | ---------------------------------------------- | ---------------------------------------------- | +| Grizzly | 2.0+ | | | | +| Glassfish | | | | | +| Java Servlet | 2.3+, 3.0+ | | | | +| Jetty | 7.0-9.x, 10.x | | | | +| Spring Boot | 1.5 | | | | +| Spring Web (MVC) | 4.0+ | | | | +| Spring WebFlux | 5.0+ | | | | +| Tomcat | 5.5+ | | | | +| Vert.x | 3.4-3.9.x | | | | + +**Note**: Many application servers are Servlet compatible and are automatically covered by that instrumentation, such as Websphere, Weblogic, and JBoss. Also, frameworks like Spring Boot (version 3) inherently work because they usually use a supported embedded application server, such as Tomcat, Jetty, or Netty. + +
If you don't see your framework of choice listed, let us know! Fill out this short form to send details.
+ +#### Networking framework compatibility + +`dd-java-agent` includes support for automatically tracing the following networking frameworks. + +**Networking tracing provides:** + +- Distributed tracing through your applications +- Request-based blocking + +##### Application Security Capability Notes +- **Software Composition Analysis** is supported on all frameworks +- If **Code Security** does not support your framework, it will still detect Weak Cipher, Weak Hashing, Insecure Cookie, Cookie without HttpOnly Flag, and Cookie without SameSite Flag vulnerabilities. + + +| Framework | Versions | Threat Detection supported? | Threat Protection supported? | Code Security? | +| ------------------------ | ----------- | --------------- | ---------------------------------------------- | ---------------------------------------------- | +| Apache HTTP Client | 4.0+ | | | | +| gRPC | 1.5+ | | | | +| HttpURLConnection | all | | | | +| Jax RS Clients | 2.0+ | | | | +| Jersey Server | 1.9-2.29 | | | | +| Netty HTTP Server | 3.8+ | | | | +| RESTEasy | 3.0.x | | | | +| Spring SessionAwareMessageListener | 3.1+ | | | | + +
If you don't see your framework of choice listed, let us know! Fill out this short form to send details.
+ +#### Data store compatibility + +`dd-java-agent` includes support for automatically tracing the following database frameworks/drivers. + +**Datastore tracing provides:** + +- Timing request to response +- Query info (for example, a sanitized query string) +- Error and stacktrace capturing + +##### Application Security Capability Notes +- **Software Composition Analysis** is supported on all frameworks +- **Threat Protection** also works at the HTTP request (input) layer, and so works for all databases by default, even those not listed in the table below. +- If your framework is not supported below, **Code Security** won’t detect SQL Injection vulnerabilities, but will still detect the rest of vulnerability types listed [here][3]. + +| Database | Versions | Threat Detection supported? | Code Security? | +| ----------------------- | -------- | ------------------------| ---------------------------------------------------------------- | +| Aerospike | 4.0+ | | | +| Couchbase | 2.0+ | | | +| JDBC | N/A | | | +| MongoDB | 3.0-4.0+ | | | + +`dd-java-agent` is also compatible with common JDBC drivers for Threat Detection, such as: + +- Apache Derby +- Firebird SQL +- H2 Database Engine +- HSQLDB +- IBM DB2 +- MariaDB +- MSSQL (Microsoft SQL Server) +- MySQL +- Oracle +- Postgres SQL +- ScalikeJDBC + +
If you don't see your framework of choice listed, let us know! Fill out this short form to send details.
+ +#### User Authentication Frameworks compatibility + +Integrations to User Authentication Frameworks provide: + +- User login events, including the user IDs +- Account Takeover detection monitoring for user login events + +| Framework | Minimum Framework Version | +|-------------------|---------------------------| +| Spring Security | 5.5+ | + + +[1]: /tracing/trace_collection/compatibility/java/ +[2]: /agent/remote_config/?tab=configurationyamlfile#enabling-remote-configuration +[3]: /security/application_security/vulnerability_management/#manage-code-level-vulnerabilities + +{{% /collapse-content %}} + +{{% collapse-content title=".NET" level="h4" %}} + +### Application Security capabilities support + +The following application security capabilities are supported in the .NET library, for the specified tracer version: + +| Application Security capability | Minimum .NET tracer version | +| -------------------------------- | ----------------------------| +| Threat Detection | 2.23.0| +| Threat Protection | 2.26.0| +| Customize response to blocked requests | 2.27.0 | +| Software Composition Analysis (SCA) | 2.16.0 | +| Code Security | 2.42.0 | +| Automatic user activity event tracking | 2.32.0 | +| API Security | 2.42.0 | + +The minimum tracer version to get all supported application security capabilities for .NET is 2.42.0. + +**Note**: Threat Protection requires enabling [Remote Configuration][3], which is included in the listed minimum tracer version. + +#### Supported deployment types +| Type | Threat Detection support | Software Composition Analysis | +|-------------------|--------------------------|------------------------------------------| +| Docker | | | +| Kubernetes | | | +| Amazon ECS | | | +| AWS Fargate | | | +| AWS Lambda | | | +| Azure App Service | | | + +**Note**: Azure App Service is supported for **web applications only**. Application Security capabilities are not supported for Azure Functions. + +### Language and framework compatibility + +#### Supported .NET versions + +| .NET Framework Version | Microsoft End of Life | Support level | Package version | +| ----------------------- | --------------------- | ----------------------------------- | --------------------------- | +| 4.8 | | GA | latest | +| 4.7.2 | | GA | latest | +| 4.7 | | GA | latest | +| 4.6.2 | | GA | latest | +| 4.6.1 | 04/26/2022 | GA | latest | + + +These are supported on the following architectures: +- Linux (GNU) x86-64, ARM64 +- Alpine Linux (musl) x86-64, ARM64 +- macOS (Darwin) x86-64, ARM64 +- Windows (msvc) x86, x86-64 + + + +#### Web framework compatibility + +- Attacker source HTTP request details +- Tags for the HTTP request (status code, method, etc) +- Distributed Tracing to see attack flows through your applications + +##### Application Security capability notes + +- **Software Composition Analysis** is supported on all frameworks. +- If your framework is not listed below, **Code Security** will still detect Insecure Cookie vulnerabilities. + + +| Framework | Threat Detection supported? | Threat Protection supported? | Code Security? | +| ----------------------- | --------------- | ---------------------------------------------- | ---------------------------------------------- | +| ASP.NET MVC | | | | +| ASP.NET Web API 2 | | | | + +
If you don't see your framework of choice listed, let us know! Fill out this short form to send details.
+ +#### Data store compatibility + +**Datastore tracing provides:** + +- SQL attack detection +- query info (for example, a sanitized query string) +- error and stacktrace capturing + +##### Application Security Capability Notes +- **Threat Protection** also works at the HTTP request (input) layer, and so works for all databases by default, even those not listed in the table below. + +| Framework | Threat Detection supported? | Threat Protection supported? | Code Security? | +|-------------------|-----------------|---------------------|---| +| OracleDB | | | | +| ADO.NET | | | | +| SQL Server | | | | +| MySQL | | | | +| SQLite | | | | + +#### User Authentication Frameworks compatibility + +Integrations to **User Authentication Frameworks provides:** + +- User login events including the user IDs +- User signup events (apps using built-in SignInManager) +- Account Takeover detection monitoring for user login events + +| Framework | +|-------------------| +| > .Net Core 2.1 | + +[1]: /tracing/trace_collection/compatibility/dotnet-core/ +[2]: /tracing/trace_collection/compatibility/dotnet-framework/ +[3]: /agent/remote_config/#enabling-remote-configuration + + +{{% /collapse-content %}} + +{{% collapse-content title="Node.js" level="h4" %}} + +### Application Security capabilities + +The following application security capabilities are supported in the Node.js library, for the specified tracer version: + +| Application Security capability | Minimum Node.js tracer version | +|----------------------------------------|----------------------------------------------------| +| Threat Detection | 4.0.0 | +| Threat Protection | 4.0.0 | +| Customize response to blocked requests | 4.1.0 | +| Software Composition Analysis (SCA) | 4.0.0 | +| Code Security | 4.18.0 for Node.js 16+, or 5.0.0 for Node.js 18+ | +| Automatic user activity event tracking | 4.4.0 for Node.js 16+ | +| API Security | 4.30.0 for Node.js 16+, or 5.6.0 for Node.js 18+ | + +The minimum tracer version to get all supported application security capabilities for Node.js is 4.30.0. + + +**Note**: +- Threat Protection requires enabling [Remote Configuration][2], which is included in the listed minimum tracer version. + +#### Supported deployment types +| Type | Threat Detection support | Software Composition Analysis | +|-------------|--------------------------|-------------------------------| +| Docker | | | +| Kubernetes | | | +| Amazon ECS | | | +| AWS Fargate | | | +| AWS Lambda | | | + +### Language and framework compatibility + +#### Node.js Version Support + +When the Node.js project drops support for an LTS major release line (when it goes End of Life), support for it is dropped in the next major version of `dd-trace`. +The last major supporting release line of `dd-trace` library supports that EOL version of Node.js for at least another year on a maintenance mode basis. + +Some issues cannot be solved in `dd-trace` and instead must be solved in Node.js. When this happens and the Node.js release in question is EOL, it's not possible to solve the issue without moving to another non-EOL release. +Datadog does not make new releases of `dd-trace` to provide specific support for non-LTS Node.js major release lines (odd numbered versions). + +For the best level of support, always run the latest LTS release of Node.js, and the latest major version of `dd-trace`. Whatever release line of Node.js you use, also use the latest version of Node.js on that release line, to ensure you have the latest security fixes. + +For more information about Node.js release, see the [official Node.js documentation][4]. + + + +#### Operating system support + +The following operating systems are officially supported by `dd-trace`. Any operating system not listed is still likely to work, but with some features missing, for example application security capabilities, profiling, and runtime metrics. Generally speaking, operating systems that are actively maintained at the time of initial release for a major version are supported. + + +| Operating System | Architectures | Minimum Versions | +|------------------|---------------|------------------------------------------| +| Linux (glibc) | arm64, x64 | CentOS 7, Debian 9, RHEL 7, Ubuntu 14.04 | +| Linux (musl) | arm64, x64 | Alpine 3.13 | +| macOS | arm64, x64 | Catalina (10.15) | +| Windows | x64 | Windows 8.1, Windows Server 2012 | + + + + + +#### Web framework compatibility + +- Attacker source HTTP request details +- Tags for the HTTP request (status code, method, etc) +- Distributed Tracing to see attack flows through your applications + +##### Application Security Capability Notes +- **Software Composition Analysis** is supported on all frameworks +- If your framework is not listed below, **Code Security** will still detect Weak Cipher, Weak Hashing, Insecure Cookie, Cookie without HttpOnly Flag, and Cookie without SameSite Flag vulnerabilities. + + +| Framework | Versions | Threat Detection supported? | Threat Protection supported? | Code Security? | +|-----------|----------|-----------------------------|------------------------------|----------------------------------------------------| +| express | >=4 | | | | +| nextjs | >=11.1 | | | | + + +
If you would like to see support added for any of the unsupported capabilities or for your Node.js framework, let us know! Fill out this short form to send details.
+ + +### Networking framework compatibility + +Networking tracing provides: + +- Distributed tracing through your applications +- Request-based blocking + +##### Application Security capability notes + +- **Software Composition Analysis** is supported on all frameworks + + + +| Framework | Threat Detection supported? | Threat Protection supported? | Code Security? | +|-----------|-----------------------------|------------------------------|----------------------------------------------------| +| http | | | | +| https | | | | + + +
If you don't see your framework of choice listed, let us know! Fill out this short form to send details.
+ +### Data store compatibility + +Datastore tracing provides: + +- Timing request to response +- Query info (for example, a sanitized query string) +- Error and stacktrace capturing + +##### Application Security capability notes + +- **Software Composition Analysis** is supported on all frameworks +- **Threat Protection** also works at the HTTP request (input) layer, and so works for all databases by default, even those not listed in the table below. + + +| Framework | Versions | Threat Detection supported? | Threat Protection supported? | Code Security? | +|--------------------------|-----------|-----------------------------|------------------------------|----------------------------------------------------| +| [@apollo/server][43] | `>=4` | | | | +| [apollo-server-core][44] | `>=3` | | | | +| [cassandra-driver][28] | `>=3` | | | | +| [couchbase][29] | `^2.4.2` | | | | +| [elasticsearch][30] | `>=10` | | | | +| [ioredis][31] | `>=2` | | | | +| [knex][32] | `>=0.8` | | | | +| [mariadb][5] | `>=3` | | | | +| [memcached][33] | `>=2.2` | | | | +| [mongodb-core][34] | `>=2` | | | | +| [mysql][35] | `>=2` | | | | +| [mysql2][36] | `>=1` | | | | +| [oracledb][37] | `>=5` | | | | +| [pg][38] | `>=4` | | | | +| [redis][39] | `>=0.12` | | | | +| [sharedb][40] | `>=1` | | | | +| [tedious][41] | `>=1` | | | | +| [sequelize][42] | `>=4` | | | | + + +### User authentication frameworks compatibility + +Integrations to User Authentication Frameworks provide: + +- User login events, including the user IDs +- The Account Takeover detection monitoring the user login events + +| Framework | Minimum Framework Version | +|-----------------|---------------------------| +| passport-local | 1.0.0 | +| passport-http | 0.3.0 | + +[1]: /tracing/trace_collection/compatibility/nodejs/ +[2]: /agent/remote_config/#enabling-remote-configuration +[4]: https://github.com/nodejs/release#release-schedule +[5]: https://github.com/mariadb-corporation/mariadb-connector-nodejs +[28]: https://github.com/datastax/nodejs-driver +[29]: https://github.com/couchbase/couchnode +[30]: https://github.com/elastic/elasticsearch-js +[31]: https://github.com/luin/ioredis +[32]: https://knexjs.org +[33]: https://github.com/3rd-Eden/memcached +[34]: http://mongodb.github.io/node-mongodb-native/core +[35]: https://github.com/mysqljs/mysql +[36]: https://github.com/sidorares/node-mysql2 +[37]: https://oracle.github.io/node-oracledb/ +[38]: https://node-postgres.com +[39]: https://github.com/NodeRedis/node_redis +[40]: https://share.github.io/sharedb/ +[41]: http://tediousjs.github.io/tedious +[42]: https://github.com/sequelize/sequelize +[43]: https://github.com/apollographql/apollo-server +[44]: https://www.npmjs.com/package/apollo-server-core + + +{{% /collapse-content %}} + +{{% collapse-content title="Python" level="h4" %}} + +### Application Security capabilities support + +The following application security capabilities are supported in the Python library, for the specified tracer version: + +| Application Security capability | Minimum Python tracer version | +| -------------------------------- | ----------------------------| +| Threat Detection | 1.9.0 | +| Threat Protection | 1.10.0 | +| Customize response to blocked requests | 1.19.0 | +| Software Composition Analysis (SCA) | 1.5.0 | +| Code Security | Preview (2.9.3) | +| Automatic user activity event tracking | 1.17.0 | +| API Security | 2.6.0 | + +**Note**: Threat Protection requires enabling [Remote Configuration][2], which is included in the listed minimum tracer version. + +#### Supported deployment types +| Type | Threat Detection support | Software Composition Analysis | +|-------------|--------------------------|-------------------------------| +| Docker | | | +| Kubernetes | | | +| Amazon ECS | | | +| AWS Fargate | | | +| AWS Lambda | | | + + +### Language and framework compatibility + +#### Supported Python versions + +The Python Application Security Client library follows a [versioning policy][3] that specifies the support level for the different versions of the library and Python runtime. + +Two release branches are supported: + +| Release | Support level | +|------------|----------------------| +| `<1` | Maintenance | +| `>=1.0,<2` | General Availability | + +And the library supports the following runtimes: + +| OS | CPU | Runtime | Runtime version | Support ddtrace versions | +|---------|-----------------------|---------|-----------------|--------------------------| +| Linux | x86-64, i686, AArch64 | CPython | 2.7, 3.5-3.11 | `<2` | +| MacOS | Intel, Apple Silicon | CPython | 2.7, 3.5-3.11 | `<2` | +| Windows | 64bit, 32bit | CPython | 2.7, 3.5-3.11 | `<2` | + + +#### Web framework compatibility + +- Attacker source HTTP request details +- Tags for the HTTP request (status code, method, etc) +- Distributed Tracing to see attack flows through your applications + +##### Application Security Capability Notes + +- **Software Composition Analysis** is supported on all frameworks + +#### Supported frameworks + + +| Framework | Versions | Threat Detection supported? | Threat Protection supported? | +| ------------------------ | ----------- | --------------- | ---------------------------------------------- | +| Django | 1.8 | | | +| Flask | 0.10 | | | + +Support for query strings is not available for Flask. + +
If you don't see your framework of choice listed, let us know! Fill out this short form to send details.
+ +#### Data store compatibility + +Datastore tracing provides: + +- timing request to response +- query info (for example, a sanitized query string) +- error and stacktrace capturing + +##### Application Security capability notes + +- **Software Composition Analysis** is supported on all frameworks. +- **Threat Protection** also works at the HTTP request (input) layer, and so works for all databases by default, even those not listed in the table below. +- +The Python library supports the [database API specifications][4] and supports all generic SQL databases. This includes databases such as SQLite, Mysql, Postgres and MariaDB. + +#### User Authentication Frameworks compatibility + +Integrations to User Authentication Frameworks provide: + +- User login events, including the user IDs +- Account Takeover detection monitoring for user login events + +| Framework | Framework Versions | +|-------------------| --------------------------- | +| Django | 1.11, 2.2, 3.2, >= 4.0 + +[1]: /tracing/trace_collection/compatibility/python/ +[2]: /agent/remote_config/#enabling-remote-configuration +[3]: https://ddtrace.readthedocs.io/en/stable/versioning.html +[4]: https://peps.python.org/pep-0249/ + + +{{% /collapse-content %}} diff --git a/content/en/security/application_security/code_security/setup/compatibility/_index.md b/content/en/security/code_security/iast/setup/compatibility/_index.md similarity index 93% rename from content/en/security/application_security/code_security/setup/compatibility/_index.md rename to content/en/security/code_security/iast/setup/compatibility/_index.md index 1c525791d18c3..cd6d12e7ec9bb 100644 --- a/content/en/security/application_security/code_security/setup/compatibility/_index.md +++ b/content/en/security/code_security/iast/setup/compatibility/_index.md @@ -20,9 +20,3 @@ Select your application language for details about framework compatibility and f {{< partial name="security-platform/appsec-languages-code-security.html" >}} -
- -## Further Reading - -{{< partial name="whats-next/whats-next.html" >}} - diff --git a/content/en/security/application_security/code_security/setup/compatibility/dotnet.md b/content/en/security/code_security/iast/setup/compatibility/dotnet.md similarity index 74% rename from content/en/security/application_security/code_security/setup/compatibility/dotnet.md rename to content/en/security/code_security/iast/setup/compatibility/dotnet.md index 28de28b0a78eb..c56c36a493274 100644 --- a/content/en/security/application_security/code_security/setup/compatibility/dotnet.md +++ b/content/en/security/code_security/iast/setup/compatibility/dotnet.md @@ -41,32 +41,19 @@ The minimum tracer version to get all supported application security capabilitie | .NET Framework Version | Microsoft End of Life | Support level | Package version | | ----------------------- | --------------------- | ----------------------------------- | --------------------------- | -| 4.8.1 | | GA | latest | -| 4.8 | | GA | latest | +| 4.8 | | GA | latest | | 4.7.2 | | GA | latest | -| 4.7.1 | | GA | latest | | 4.7 | | GA | latest | -| 4.6.2 | 01/12/2027 | GA | latest | -| 4.6.1 | 04/26/2022 | GA | latest | - -| .NET Core Version | Microsoft End of Life | Support level | Package version | -| ----------------------- | --------------------- | ----------------------------------- | --------------------------- | -| 9 | 04/12/2026 | GA | latest | -| 8 | 11/10/2026 | GA | latest | -| 7 | 04/14/2024 | GA | latest | -| 6 | 11/12/2024 | GA | latest | -| 5 | 04/10/2022 | GA | latest | -| 3.1 | 12/13/2022 | GA | latest | -| 3.0 | 03/03/2020 | GA | latest | -| 2.2 | 23/10/2019 | GA | latest | -| 2.1 | 08/21/2021 | GA | latest | +| 4.6.2 | | GA | latest | +| 4.6.1 | 04/26/2022 | GA | latest | These are supported on the following architectures: -- Linux (GNU) x64, ARM64 - (.Net Core) -- Alpine Linux (musl) x64, ARM64 - (.Net Core) -- macOS (Darwin) x64, ARM64 - (.Net Core) -- Windows (msvc) x86, x86-64 - (.Net Core and .Net Framework) +- Linux (GNU) x86-64, ARM64 +- Alpine Linux (musl) x86-64, ARM64 +- macOS (Darwin) x86-64, ARM64 +- Windows (msvc) x86, x86-64 + ### Web framework compatibility diff --git a/content/en/security/application_security/code_security/setup/compatibility/java.md b/content/en/security/code_security/iast/setup/compatibility/java.md similarity index 100% rename from content/en/security/application_security/code_security/setup/compatibility/java.md rename to content/en/security/code_security/iast/setup/compatibility/java.md diff --git a/content/en/security/application_security/code_security/setup/compatibility/nodejs.md b/content/en/security/code_security/iast/setup/compatibility/nodejs.md similarity index 100% rename from content/en/security/application_security/code_security/setup/compatibility/nodejs.md rename to content/en/security/code_security/iast/setup/compatibility/nodejs.md diff --git a/content/en/security/application_security/code_security/setup/compatibility/python.md b/content/en/security/code_security/iast/setup/compatibility/python.md similarity index 100% rename from content/en/security/application_security/code_security/setup/compatibility/python.md rename to content/en/security/code_security/iast/setup/compatibility/python.md diff --git a/content/en/security/application_security/code_security/setup/dotnet.md b/content/en/security/code_security/iast/setup/dotnet.md similarity index 94% rename from content/en/security/application_security/code_security/setup/dotnet.md rename to content/en/security/code_security/iast/setup/dotnet.md index 2105eaedefe33..e72b4395a4b13 100644 --- a/content/en/security/application_security/code_security/setup/dotnet.md +++ b/content/en/security/code_security/iast/setup/dotnet.md @@ -7,7 +7,7 @@ aliases: - /security_platform/application_security/getting_started/dotnet - /security/application_security/getting_started/dotnet further_reading: - - link: "/security/application_security/code_security/#code-level-vulnerabilities-list" + - link: "/security/code_security/iast/#code-level-vulnerabilities-list" tag: "Documentation" text: "Supported code-level vulnerabilities list" - link: "https://www.datadoghq.com/blog/iast-datadog-code-security/" @@ -146,6 +146,6 @@ If you need additional assistance, contact [Datadog support][5]. {{< partial name="whats-next/whats-next.html" >}} [1]: https://github.com/DataDog/dd-trace-dotnet/releases/latest -[2]: /security/application_security/code_security/setup/compatibility/dotnet/ +[2]: /security/code_security/iast/setup/ [3]: /agent/versions/upgrade_between_agent_minor_versions/ -[4]: /security/application_security/code_security/setup/compatibility/ +[4]: /security/code_security/iast/setup/ diff --git a/content/en/security/application_security/code_security/setup/java.md b/content/en/security/code_security/iast/setup/java.md similarity index 93% rename from content/en/security/application_security/code_security/setup/java.md rename to content/en/security/code_security/iast/setup/java.md index d50c8b58953e3..4823fda57fe36 100644 --- a/content/en/security/application_security/code_security/setup/java.md +++ b/content/en/security/code_security/iast/setup/java.md @@ -7,7 +7,7 @@ aliases: - /security_platform/application_security/getting_started/java - /security/application_security/getting_started/java further_reading: -- link: "/security/application_security/code_security/#code-level-vulnerabilities-list" +- link: "/security/code_security/iast/#code-level-vulnerabilities-list" tag: "Documentation" text: "Supported code-level vulnerabilities list" - link: "https://www.datadoghq.com/blog/iast-datadog-code-security/" @@ -110,8 +110,8 @@ If you need additional assistance, contact [Datadog support][5]. {{< partial name="whats-next/whats-next.html" >}} [1]: https://github.com/DataDog/dd-trace-java/releases -[2]: /security/application_security/code_security/setup/compatibility/java/ -[3]: /security/application_security/code_security/setup/compatibility/java/ +[2]: /security/code_security/iast/setup/ +[3]: /security/code_security/iast/setup/ [4]: https://app.datadoghq.com/security/appsec/vm [5]: /help [6]: /agent/versions/upgrade_between_agent_minor_versions/ diff --git a/content/en/security/application_security/code_security/setup/nodejs.md b/content/en/security/code_security/iast/setup/nodejs.md similarity index 93% rename from content/en/security/application_security/code_security/setup/nodejs.md rename to content/en/security/code_security/iast/setup/nodejs.md index 487476dc03a32..620ff1a10d167 100644 --- a/content/en/security/application_security/code_security/setup/nodejs.md +++ b/content/en/security/code_security/iast/setup/nodejs.md @@ -7,7 +7,7 @@ aliases: - /security_platform/application_security/getting_started/nodejs - /security/application_security/getting_started/nodejs further_reading: - - link: "/security/application_security/code_security/#code-level-vulnerabilities-list" + - link: "/security/code_security/iast/#code-level-vulnerabilities-list" tag: "Documentation" text: "Supported code-level vulnerabilities list" - link: "https://www.datadoghq.com/blog/iast-datadog-code-security/" @@ -107,8 +107,8 @@ If you need additional assistance, contact [Datadog support][6]. {{< partial name="whats-next/whats-next.html" >}} [1]: https://github.com/DataDog/dd-trace-js/blob/master/MIGRATING.md -[2]: /security/application_security/code_security/setup/nodejs/ -[3]: /security/application_security/code_security/setup/compatibility/ +[2]: /security/code_security/iast/setup/nodejs/ +[3]: /security/code_security/iast/setup/ [4]: /agent/versions/upgrade_between_agent_minor_versions/ [5]: https://app.datadoghq.com/security/appsec/vm/code [6]: /help diff --git a/content/en/security/application_security/code_security/setup/python.md b/content/en/security/code_security/iast/setup/python.md similarity index 92% rename from content/en/security/application_security/code_security/setup/python.md rename to content/en/security/code_security/iast/setup/python.md index ca221d1152cb9..61783f2feafb9 100644 --- a/content/en/security/application_security/code_security/setup/python.md +++ b/content/en/security/code_security/iast/setup/python.md @@ -7,9 +7,6 @@ aliases: - /security_platform/application_security/getting_started/python - /security/application_security/getting_started/python further_reading: - - link: "/security/application_security/code_security/#code-level-vulnerabilities-list" - tag: "Documentation" - text: "Supported code-level vulnerabilities list" - link: "https://www.datadoghq.com/blog/iast-datadog-code-security/" tag: "Blog" text: "Enhance application security in production with Datadog Code Security" @@ -127,8 +124,8 @@ using the CPython API, or on intermediate language systems like Cython, the resu {{< partial name="whats-next/whats-next.html" >}} [1]: https://github.com/DataDog/dd-trace-py/releases -[2]: /security/application_security/code_security/setup/python -[3]: /security/application_security/code_security/setup/compatibility/ +[2]: /security/code_security/iast/setup/python +[3]: /security/code_security/iast/setup/ [4]: https://app.datadoghq.com/security/appsec/vm/code [5]: /help [6]: /agent/versions/upgrade_between_agent_minor_versions/ diff --git a/content/en/security/code_security/software_composition_analysis/_index.md b/content/en/security/code_security/software_composition_analysis/_index.md new file mode 100644 index 0000000000000..bf712b41f93cf --- /dev/null +++ b/content/en/security/code_security/software_composition_analysis/_index.md @@ -0,0 +1,119 @@ +--- +title: Software Composition Analysis +disable_toc: false +aliases: +- /security/application_security/software_composition_analysis/setup/ +- /security/application_security/software_composition_analysis/ +- /code_analysis/software_composition_analysis/ +--- +## Overview +Software Composition Analysis (SCA) detects open source libraries in both your repositories and running services, providing end-to-end visibility of library vulnerabilities and license management from development to production. + +Using Software Composition Analysis provides organizations with the following benefits: +- Identification of emerging and known vulnerabilities affecting open source libraries +- Risk-based prioritization and remediation based on runtime detection of vulnerabilities +- Identification of malicious packages, end-of-life libraries, and library riskiness based on OpenSSF standards + +### Vulnerability detection in repositories +SCA supports scanning for libraries in the following languages and technologies: + +{{< partial name="code_security/sca-getting-started.html" >}} + +SCA can also detect vulnerable libraries running in your services based on your Datadog telemetry. + +Runtime detection allows for risk-based prioritization of library vulnerabilities in your deployment environments. + +## Search and filter results + +### Library Catalog + +The Datadog SCA [Library Catalog][8] helps you understand the list of libraries and its versions that compose your application. + +For each library version, you can assess how often it is used across your codebase and running in your services + +### Vulnerability Explorer + +The Vulnerability Explorer lists library vulnerabilities detected by SCA, alongside vulnerabilities detected by other Code Security capabilities (SAST and IAST). + +#### Datadog severity score + +Each vulnerability has a defined base severity score. To assist in prioritizing remediation, Datadog modifies the base CVSS score into the Datadog Severity Score by considering evidence of suspicious requests or attacks, the business sensitivity or internet exposure of the environment, and the risk of a successful exploit. + +Four score modifiers may apply to a base score. Two are provided by runtime context: + - Vulnerability is in production + - Service affected by vulnerability is under attack + +Two are provided by CVE context: + - Whether an exploit is available + - The exploitation probability + +Datadog shows how the base CVSS score is adjusted to the Datadog Severity Score based on the factors above. + +## Track and remediate vulnerabilities +The Repositories page provides a repository-oriented view of your libraries and library vulnerabilities found from static scanning (either from scanning directly with Datadog or through your CI pipelines). +Recommended steps for remediating detected vulnerabilities can be found in the side panel for each vulnerability in SCA. + +Steps are provided for upgrading the library to the safest (non-vulnerable) version, as well as the closest version. + +From the Repositories page, click on a repository to analyze **Library Vulnerabilities** and **Library Catalog** results from SCA. + +* The **Library Vulnerabilities** tab contains the vulnerable library versions found by Datadog SCA. +* The **Library Catalog** tab contains all of the libraries (vulnerable or not) found by Datadog SCA. + +To filter your results, use the facets to the left of the list or the search bar at the top. Results can be filtered by service or team facets. For more information about how results are linked to Datadog services and teams, see [Getting Started with Code Security][5]. + +Every row represents a unique library and version combination. Each combination is associated with the specific commit and branch that is selected in the filters at the top of the page (by default, the latest commit on the default branch of the repository you selected). + +Click on a library with a vulnerability to open a side panel that contains information about remediation steps. + + + +### Library vulnerability context in APM + +SCA enriches the information Application Performance Monitoring (APM) is already collecting by flagging libraries that match with current vulnerability advisories. Potentially vulnerable services are highlighted directly in the **Security** view embedded in the [APM Service Catalog][10]. +- Whether it is reaching end of life +- Whether it is a malicious package +- The health of this library version based on its OpenSSF scorecard breakdown +- Software supply chain & Software Bill of Materials (SBOM) management + +Datadog SCA uses a curated proprietary database. The database is sourced from Open Source Vulnerabilities (OSV), National Vulnerability Database (NVD), GitHub advisories, and other language ecosystem advisories, as well as Datadog's own Security Research team's findings. + +## SCA static scans + +SCA scans open source libraries imported into repositories through package managers such as npm for known vulnerabilities, and creates a catalog of libraries used across your repositories that identifies risky licenses, end-of-life libraries, and vulnerabilities to ensure a high quality, secure codebase. + +SCA scans can be run directly through Datadog (Datadog-hosted) or in your CI pipelines using Code Security to detect library vulnerabilities before they reach production. + +For set up instructions, see [SCA Static Setup][1]. + +## SCA runtime scans + +SCA scans the production applications already running in your Datadog deployment. + +Datadog SCA uses a curated proprietary database. The database is sourced from Open Source Vulnerabilities (OSV), National Vulnerability Database (NVD), GitHub advisories, and other language ecosystem advisories. Additionally, the Datadog Security research team evaluates vulnerabilities and malware findings. For more information, see the GuardDog GitHub project. + +For set up instructions, see [Runtime Setup][2]. + +### Library inventory + +The Datadog SCA [Library Inventory][8] helps you understand the list of libraries and its versions that compose your application. + +With Datadog SCA spanning your software development lifecycle from code to production, it detects libraries throughout the lifecycle of an application and alerts you to vulnerabilities, risks, licenses, and more. + + + + + +## Risk information in APM views + +Software Composition Analysis enriches the information APM is already collecting, and flags libraries that match with current vulnerability advisories. Potentially vulnerable services are highlighted directly in the **Security** view embedded in the [APM Service Catalog][10]. + +[1]: /security/code_security/software_composition_analysis/setup_static/ +[2]: /security/code_security/software_composition_analysis/setup_runtime/ +[3]: https://app.datadoghq.com/security/appsec/vm +[5]: /getting_started/code_security/ +[8]: https://app.datadoghq.com/security/appsec/inventory/libraries +[9]: /account_management/rbac/permissions/#integrations +[10]: https://app.datadoghq.com/services?lens=Security diff --git a/content/en/security/application_security/software_composition_analysis/setup/_index.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/_index.md similarity index 76% rename from content/en/security/application_security/software_composition_analysis/setup/_index.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/_index.md index 4d6989f131811..20fad94521b72 100644 --- a/content/en/security/application_security/software_composition_analysis/setup/_index.md +++ b/content/en/security/code_security/software_composition_analysis/setup_runtime/_index.md @@ -1,39 +1,24 @@ --- -title: Software Composition Analysis Setup +title: Set up SCA in your running services disable_toc: false aliases: - /security/application_security/enabling/tracing_libraries/sca/ -further_reading: -- link: "/security/application_security/software_composition_analysis" - tag: "Documentation" - text: "Software Composition Analysis (SCA)" -- link: "https://www.datadoghq.com/blog/sca-prioritize-vulnerabilities/" - tag: "Blog" - text: "Prioritize vulnerability remediation with Datadog SCA" -- link: "/security/default_rules/?category=cat-application-security" - tag: "Documentation" - text: "OOTB Application Security Management Rules" -- link: "/security/application_security/troubleshooting" - tag: "Documentation" - text: "Troubleshooting Application Security Management" -- link: "/security/application_security/how-appsec-works/" - tag: "Documentation" - text: "How Application Security Management Works in Datadog" -- link: "https://www.datadoghq.com/blog/secure-serverless-applications-with-datadog-asm/" - tag: "Blog" - text: "Secure serverless applications with Datadog ASM" --- -## Prerequisites -Before setting up Software Composition Analysis, ensure the following prerequisites are met: -1. **Datadog Agent Installation:** The Datadog Agent is installed and configured for your application's operating system or container, cloud, or virtual environment. -2. **Datadog APM Configuration:** Datadog APM is configured for your application or service, and web traces (`type:web`) are being received by Datadog. -3. **Supported Tracing Library:** The Datadog Tracing Library used by your application or service supports Software Composition Analysis capabilities for the language of your application or service. For more details, refer to the [Library Compatibility][5] page for each ASM product. +SCA can detect vulnerabilities that affect open source libraries running in your services based on Datadog's application telemetry. +scan dependency management files in your repositories to statically detect open source libraries used in your codebase. + +Before setting up runtime deteciton, ensure the following prerequisites are met: + +1. **Supported Tracing Library:** The Datadog Tracing Library used by your application or service supports Software Composition Analysis capabilities for the language of your application or service. +2. **Datadog Agent Installation:** The Datadog Agent is installed and configured for your application's operating system or container, cloud, or virtual environment. +3. **Datadog APM Configuration:** Datadog APM is configured for your application or service, and web traces (`type:web`) are being received by Datadog. +4. **Supported Tracing Library:** The Datadog Tracing Library used by your application or service supports Software Composition Analysis capabilities for the language of your application or service. For more details, refer to the [Library Compatibility][5] page for each ASM product. ## Software Composition Analysis enablement types -### Quick Start Guide +### Quick start for in-app service enablement 1. Navigate to the [Quick Start Guide][2]: 1. Expand **Enable Vulnerability Detection**. @@ -42,8 +27,8 @@ Before setting up Software Composition Analysis, ensure the following prerequisi 4. Select the services where you want to identify library vulnerabilities, and then click **Next**. 5. Select **Enable for Selected Services**. -### Settings page - +### Settings page for in-app service enablement +### Datadog tracing library configuration Alternatively, you can enable Software Composition Analysis through the [Settings][3] page. 1. Navigate to the [Settings][3] page and select **Get Started** in **Software Composition Analysis (SCA)**. @@ -54,7 +39,7 @@ Alternatively, you can enable Software Composition Analysis through the [Setting 6. Choose the services where you want to identify library vulnerabilities, and select **Next**. 7. Select **Enable for Selected Services**. -### Datadog Tracing Libraries +### Datadog tracing library configuration Add an environment variable or a new argument to your Datadog Tracing Library configuration. @@ -173,13 +158,9 @@ java -javaagent:dd-java-agent.jar \ {{< /tabs >}} -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /security/application_security/software_composition_analysis/setup/compatibility/java +[1]: /security/code_security/software_composition_analysis/setup_runtime/compatibility/java [2]: https://app.datadoghq.com/security/configuration/asm/onboarding [3]: https://app.datadoghq.com/security/configuration/asm/setup [4]: /integrations/github/ -[5]: /security/application_security/software_composition_analysis/setup/compatibility/ +[5]: /security/code_security/software_composition_analysis/setup_runtime/compatibility/ diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/_index.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/_index.md similarity index 75% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/_index.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/_index.md index f27eb60b46ed3..75f3ada1d550c 100644 --- a/content/en/security/application_security/software_composition_analysis/setup/compatibility/_index.md +++ b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/_index.md @@ -1,13 +1,8 @@ --- title: Compatibility Requirements type: multi-code-lang -further_reading: -- link: "/security/application_security/troubleshooting" - tag: "Documentation" - text: "Troubleshooting Application Security Management" -- link: "/security/application_security/how-appsec-works/" - tag: "Documentation" - text: "How Application Security Management Works in Datadog" +aliases: +- /security/application_security/software_composition_analysis/setup/compatibility/ --- The following ASM capabilities are supported relative to each language's tracing library: diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/dotnet.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/dotnet.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/dotnet.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/dotnet.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/go.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/go.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/go.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/go.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/java.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/java.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/java.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/java.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/nginx.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/nginx.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/nginx.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/nginx.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/nodejs.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/nodejs.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/nodejs.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/nodejs.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/php.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/php.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/php.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/php.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/python.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/python.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/python.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/python.md diff --git a/content/en/security/application_security/software_composition_analysis/setup/compatibility/ruby.md b/content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/ruby.md similarity index 100% rename from content/en/security/application_security/software_composition_analysis/setup/compatibility/ruby.md rename to content/en/security/code_security/software_composition_analysis/setup_runtime/compatibility/ruby.md diff --git a/content/en/security/code_security/software_composition_analysis/setup_static/_index.md b/content/en/security/code_security/software_composition_analysis/setup_static/_index.md new file mode 100644 index 0000000000000..afca9930344d3 --- /dev/null +++ b/content/en/security/code_security/software_composition_analysis/setup_static/_index.md @@ -0,0 +1,172 @@ +--- +title: Set up SCA in your repositories +description: Learn about Datadog Software Composition Analysis to scan your imported open-source libraries for known security vulnerabilities before you ship to production. +disable_toc: false +aliases: +- /code_analysis/software_composition_analysis/generic_ci_providers/ +- /code_analysis/software_composition_analysis/github_actions/ +- /code_analysis/software_composition_analysis/setup/ +--- + +SCA can scan dependency management files in your repositories to statically detect open source libraries used in your codebase. SCA supports scanning for libraries in the following languages and lockfiles below: + +| Package Manager | Lockfile | +|-----------------|------------------------------------------| +| C# (.NET) | `packages.lock.json` | +| Go (mod) | `go.mod` | +| JVM (Gradle) | `gradle.lockfile` | +| JVM (Maven) | `pom.xml` | +| Node.js (npm) | `package-lock.json` | +| Node.js (pnpm) | `pnpm-lock.yaml` | +| Node.js (yarn) | `yarn.lock` | +| PHP (composer) | `composer.lock` | +| Python (pip) | `requirements.txt`, `Pipfile.lock` | +| Python (poetry) | `poetry.lock` | +| Ruby (bundler) | `Gemfile.lock` | + + +## Search and filter results + + + +After you configure your CI pipelines to run Datadog SCA, violations are summarized per repository on the [**Code Security Repositories** page][4]. Click on a repository to analyze **Library Vulnerabilities** and **Library Catalog** results from Software Composition Analysis. + +* The **Library Vulnerabilities** tab contains the vulnerable library versions found by Datadog SCA. +* The **Library Catalog** tab contains all of the libraries (vulnerable or not) found by Datadog SCA. + +See the documentation for your CI provider in **GitHub Actions** and **Generic CI Providers** below. + +## GitHub Actions + +Run a Datadog Software Composition Analysis job in your GitHub Action workflows. This action invokes +[Datadog osv-scanner][10] on your codebase and uploads the results into Datadog. + +### Library Inventory Generation + +The GitHub Action generates an inventory of libraries automatically based on the libraries that are declared in your repository. + +The GitHub Action works for the following languages and following files: + + - JavaScript/TypeScript: `package-lock.json` and `yarn.lock` + - Python: `requirements.txt` (with version defined) and `poetry.lock` + - Java: `pom.xml` + - C# + - Ruby + - ... and more languages + +### Setup + +#### Set up keys + +Add `DD_APP_KEY` and `DD_API_KEY` as secrets in your [GitHub Actions Settings][11]. Please ensure your Datadog application key has the `code_analysis_read` scope. For more information, see [API and Application Keys][6]. + +#### Workflow + +Add the following code snippet in `.github/workflows/datadog-sca.yml`. Make sure to replace +the `dd_site` attribute with the [Datadog site][12] you are using. + +```yaml +on: [push] + +name: Datadog Software Composition Analysis + +jobs: + software-composition-analysis: + runs-on: ubuntu-latest + name: Datadog SBOM Generation and Upload + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Check imported libraries are secure and compliant + id: datadog-software-composition-analysis + uses: DataDog/datadog-sca-github-action@main + with: + dd_api_key: ${{ secrets.DD_API_KEY }} + dd_app_key: ${{ secrets.DD_APP_KEY }} + dd_service: my-app + dd_env: ci + dd_site: "datadoghq.com" +``` + +### Related Datadog tools + +[Datadog Static Code Analysis][5] analyzes your code and provides feedback in your IDE, GitHub PR or within the +Datadog environment. Datadog Static Code Analysis can be set up using the [`datadog-static-analyzer-github-action`][13] +GitHub action. + +## Generic CI Providers + +If you don't use GitHub Actions, you can run the Datadog CLI directly in your CI pipeline platform. + +Prerequisites: + +- unzip +- Node.js 14 or later + +Configure the following environment variables: + +| Name | Description | Required | Default | +|--------------|----------------------------------------------------------------------------------------------------------------------------|----------|-----------------| +| `DD_API_KEY` | Your Datadog API key. This key is created by your [Datadog organization][6] and should be stored as a secret. | Yes | | +| `DD_APP_KEY` | Your Datadog application key. This key, created by your [Datadog organization][6], should include the `code_analysis_read` scope and be stored as a secret. | Yes | | +| `DD_SITE` | The [Datadog site][12] to send information to. Your Datadog site is {{< region-param key="dd_site" code="true" >}}. | No | `datadoghq.com` | + +Provide the following inputs: + +| Name | Description | Required | Default | +|----------------|----------------------------------------------------------------------------------------------------------------------------|----------|-----------------| +| `service` | The name of the service to tag the results with. | Yes | | +| `env` | The environment to tag the results with. `ci` is a helpful value for this input. | No | `none` | +| `subdirectory` | The subdirectory path the analysis should be limited to. The path is relative to the root directory of the repository. | No | | + +```bash +# Set the Datadog site to send information to +export DD_SITE="{{< region-param key="dd_site" code="true" >}}" + +# Install dependencies +npm install -g @datadog/datadog-ci + +# Download the latest Datadog OSV Scanner: +# https://github.com/DataDog/osv-scanner/releases +DATADOG_OSV_SCANNER_URL=https://github.com/DataDog/osv-scanner/releases/latest/download/osv-scanner_linux_amd64.zip + +# Install OSV Scanner +mkdir /osv-scanner +curl -L -o /osv-scanner/osv-scanner.zip $DATADOG_OSV_SCANNER_URL +unzip /osv-scanner/osv-scanner.zip -d /osv-scanner +chmod 755 /osv-scanner/osv-scanner + +# Run OSV Scanner and scan your dependencies +/osv-scanner/osv-scanner --skip-git -r --experimental-only-packages --format=cyclonedx-1-5 --paths-relative-to-scan-dir --output=/tmp/sbom.json /path/to/repository + +# Upload results to Datadog +datadog-ci sbom upload /tmp/sbom.json +``` + +## Select your source code management provider +Datadog SCA supports all source code management providers, with native support for GitHub. +### Set up the GitHub integration +If GitHub is your source code management provider, you must configure a GitHub App using the [GitHub integration tile][7] and set up the [source code integration][8] to see inline code snippets and enable [pull request comments][9]. + +When installing a GitHub App, the following permissions are required to enable certain features: + +- `Content: Read`, which allows you to see code snippets displayed in Datadog. +- `Pull Request: Read & Write`, which allows Datadog to add feedback for violations directly in your pull requests using [pull request comments][9]. + +### Other source code management providers +If you are using another source code management provider, configure SCA to run in your CI pipelines using the `datadog-ci` CLI tool and [upload the results][8] to Datadog. +You **must** run an analysis of your repository on the default branch before results can begin appearing on the **Code Security** page. + +[1]: /security/code_security/software_composition_analysis/ +[2]: https://app.datadoghq.com/security/configuration/code-security/setup +[3]: /security/code_security/software_composition_analysis/setup_static +[4]: https://app.datadoghq.com/ci/code-analysis +[5]: /getting_started/code_security/?tab=datadoghosted#linking-services-to-code-violations-and-libraries +[6]: /account_management/api-app-keys/ +[7]: /integrations/github +[8]: /integrations/guide/source-code-integration +[9]: /security/code_security/dev_tool_int/github_pull_requests/ +[10]: https://github.com/DataDog/osv-scanner +[11]: https://docs.github.com/en/actions/security-for-github-actions/security-guides +[12]: /getting_started/site/ +[13]: https://github.com/DataDog/datadog-static-analyzer-github-action \ No newline at end of file diff --git a/content/en/security/code_security/static_analysis/_index.md b/content/en/security/code_security/static_analysis/_index.md new file mode 100644 index 0000000000000..642f321d8fb50 --- /dev/null +++ b/content/en/security/code_security/static_analysis/_index.md @@ -0,0 +1,147 @@ +--- +title: Static Code Analysis (SAST) +description: Learn about Datadog Static Code Analysis to scan code for quality issues and security vulnerabilities before your code reaches production. +aliases: +- /code_analysis/static_analysis +is_beta: false +algolia: + tags: ['static analysis', 'datadog static analysis', 'code quality', 'SAST'] +--- + +{{% site-region region="gov" %}} +
+ Code Security is not available for the {{< region-param key="dd_site_name" >}} site. +
+{{% /site-region %}} + + +## Overview + +Static Code Analysis is Datadog's Static Application Security Testing (SAST) capability. SAST is a clear-box software testing technique that analyzes a program's pre-production code without the need to execute the program, meaning that the program is static because it isn't running. + +Static Code Analysis helps you identify security vulnerabilities and maintainability issues early in the software development life cycle (SDLC) to ensure only the highest quality, most secure code makes it to production. + +Using Static Code Analysis provides organizations with the following benefits: + +* Applications are less vulnerable to security breaches over time, due to new vulnerabilities being caught through SAST scans before code reaches production. +* Takes the guesswork out of adhering to an organization's code standards, enabling your development team to ship compliant code without significant impacts to developer velocity. +* Onboard developers faster because Static Code Analysis enables an organization to maintain a more readable codebase over time. + +## Set up Static Code Analysis + +Static Code Analysis supports scanning for security vulnerabilities and poor coding practices in the following languages and technologies: + +{{< partial name="code_security/languages-getting-started.html" >}} + +
+ +To get started, you can set up Static Code Analysis on the [**Code Security** page][1] or see the [Setup documentation][9]. + +## Integrate Static Code Analysis into your development lifecycle + +### CI providers +{{< whatsnext desc="You can run Static Code Analysis on any CI platform provider of your choice. See provider-specific documentation to set up Static Code Analysis in your CI pipelines:">}} + {{< nextlink href="security/code_security/static_analysis/circleci_orbs" >}}CircleCI Orbs{{< /nextlink >}} + {{< nextlink href="security/code_security/static_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} + {{< nextlink href="security/code_security/static_analysis/generic_ci_providers" >}}Other CI Providers{{< /nextlink >}} +{{< /whatsnext >}} + +### Source code management +{{< whatsnext desc="During code reviews on GitHub, Datadog can automatically flag Static Code Analysis violations in pull requests by adding inline review comments on the relevant line(s) of code. When applicable, Datadog also provides suggested fixes that can be applied directly in the pull request. You can also open a pull request directly from Datadog to fix a vulnerability or quality issue." >}} + {{< nextlink href="static_analysis/github_pull_requests" >}}GitHub Pull Requests{{< /nextlink >}} +{{< /whatsnext >}} + +### IDEs +{{< whatsnext desc="You can identify code vulnerabilities in real time as you edit a file in your Integrated Development Environment (IDE). See integration-specific documentation for more information:">}} + {{< nextlink href="developers/ide_plugins/idea/" >}}Datadog Plugin for JetBrains IDEs{{< /nextlink >}} + {{< nextlink href="developers/ide_plugins/vscode/#static-analysis" >}}Datadog Extension for Visual Studio Code{{< /nextlink >}} + {{< nextlink href="developers/ide_plugins/visual_studio/#static-analysis" >}}Datadog Extension for Visual Studio{{< /nextlink >}} +{{< /whatsnext >}} + +## Search and filter results + +After you configure your CI pipelines to run the Datadog static analyzer, violations are summarized per repository on the [**Code Security Repositories** page][1]. Click on a repository to analyze **Code Vulnerabilities** and **Code Quality** results from Static Code Analysis. + +* The **Code Vulnerabilities** tab contains the violations found by Datadog's rules in the [Security category][2]. +* The **Code Quality** tab contains the violations found by Datadog's rules in the [Best Practices, Code Style, Error Prone, or Performance categories][3]. + +To filter your results, use the facets to the left of the list, or search. Results can be filtered by service or team facets. For more information about how results are linked to Datadog services and teams, see [Getting Started with Code Security][11]. + +Every row represents a violation. Each violation is associated with the specific commit and branch that is selected in the filters at the top of the page (by default, results are shown for the latest commit on the default branch of the repository you are viewing). + +Click on a violation to open a side panel that contains information about the scope of the violation and where it originated. + + + +The content of the violation is shown in tabs: + +- **Details**: A description of the violation and the lines of code that caused it. To see the offending code snippet, configure the [Datadog GitHub App][4]. +- **Remediation**: One or more code fixes that can resolve the violation, with options for remediation. +- **Event**: JSON metadata regarding the Static Code Analysis violation event. + +### Using suggested fixes + + +In Datadog Static Code Analysis, there are two types of suggested fixes: + +1. **Default Suggested Fix:** For simple violations like linting issues, the rule analyzer automatically provides templated fixes. +2. **AI Suggested Fix:** For complex violations, fixes are typically not available beforehand. Instead, you can use AI Suggested Fixes, which use OpenAI's GPT-4 to generate a suggested fix. You can choose between "Text" and "Unified Diff" fixes, which outputs plain text instructions or a code change for resolving the violation, respectively. + +The two types of fixes are distinguished visually in the UI with different labels. + +- Default Suggested Fixes +- AI Suggested Fixes + + + +### Fixing a vulnerability or quality issue directly from Datadog + + + +You can push a code change to fix an issue found by Static Code Analysis directly from a result in Datadog in two ways. + +#### Opening a pull request + +If your GitHub app's **Pull Requests** permission is set to **Read & Write**, one-click remediation is enabled for all Static Code Analysis findings with an available suggested fix. For more information about setting up the GitHub integration, see [GitHub Pull Requests][10]. + +Follow these steps to fix a vulnerability and open a pull request: +1. View a specific SAST result in Code Security. +2. Click **Fix Violation** in the side panel of the result. +3. Select **Open a Pull Request**. +4. Enter a pull request title and commit message. +5. Click **Create PR**. + +#### Committing directly to the current branch +You can also fix a vulnerability by committing directly to the branch the result was found on. + +To commit a suggested fix: + +1. View a specific SAST result in Code Security. +2. Click **Fix Violation** in the side panel of the result. +3. Click **Commit to current branch**. + +### Customizing your configuration + +To customize which Static Code Analysis rules are configured in your repositories, see the [Setup documentation][8]. + +### Reporting false positives +If you believe a specific violation is a false positive, you can flag it as a false positive with a reason for flagging, which sends a report to Datadog. Submissions are reviewed on a regular basis to improve ruleset quality over time. + + + + + +[1]: https://app.datadoghq.com/ci/code-analysis +[2]: /security/code_security/static_analysis_rules?categories=Security +[3]: /security/code_security/static_analysis_rules?categories=Best+Practices&categories=Code+Style&categories=Error+Prone&categories=Performance +[4]: /integrations/github/ +[6]: https://en.wikipedia.org/wiki/Camel_case +[7]: https://en.wikipedia.org/wiki/Snake_case +[8]: /security/code_security/static_analysis/setup/#customize-your-configuration +[9]: /security/code_security/static_analysis/setup +[10]: /security/code_security/dev_tool_int/github_pull_requests/ +[11]: /getting_started/code_security/ diff --git a/content/en/security/code_security/static_analysis/circleci_orbs.md b/content/en/security/code_security/static_analysis/circleci_orbs.md new file mode 100644 index 0000000000000..369159ec27d11 --- /dev/null +++ b/content/en/security/code_security/static_analysis/circleci_orbs.md @@ -0,0 +1,92 @@ +--- +aliases: +- /continuous_integration/static_analysis/circleci_orbs +- /static_analysis/circleci_orbs +description: Use Datadog and CircleCI to run Static Code Analysis jobs in a CI pipeline. +title: Static Code Analysis and CircleCI Orbs +--- + +## Overview + +Run a Datadog Static Code Analysis job in your CircleCI workflows. + +## Setup + +To use Datadog Static Code Analysis, you need to add a `static-analysis.datadog.yml` file in your repository's root directory to specify which rulesets to use. + +```yaml +rulesets: + - + - +``` + +### Example for Python + +You can see an example for Python-based repositories: + +```yaml +rulesets: + - python-code-style + - python-best-practices + - python-inclusive +``` + +## Workflow + +Create a file in `.circleci` to run a Datadog Static Code Analysis job. + +The following is a sample workflow file. + +```yaml +version: 2.1 +orbs: + datadog-static-analysis: datadog/datadog-static-analyzer-circleci-orb@1 +jobs: + run-static-analysis-job: + docker: + - image: cimg/node:current + steps: + - checkout + - datadog-static-analysis/analyze: + service: "my-service" + env: "ci" + site: {{< region-param key="dd_site" code="true" >}} + cpu_count: 2 + enable_performance_statistics: false +workflows: + main: + jobs: + - run-static-analysis-job +``` + +### Environment variables + +Set the following environment variables in the [CircleCI Project Settings page][2]. + +| Name | Description | Required | +|--------------|----------------------------------------------------------------------------------------------------------------------------|----------| +| `DD_API_KEY` | Your Datadog API key. This key is created by your [Datadog organization][3] and should be stored as a secret. | Yes | +| `DD_APP_KEY` | Your Datadog application key. This key is created by your [Datadog organization][4] and should be stored as a secret. | Yes | + +## Inputs + +To customize your workflow, you can set the following parameters for Static Code Analysis. + +| Name | Description | Required | Default | +|--------------|----------------------------------------------------------------------------------------------------------------------------|----------|-----------------| +| `service` | The service you want your results tagged with. | Yes | | +| `env` | The environment you want your results tagged with. Datadog recommends using `ci` as the value for this input. | No | `none` | +| `site` | The [Datadog site][4] to send information to. | No | `datadoghq.com` | +| `cpu_count` | Set the number of CPUs used to by the analyzer. | No | `2` | +| `enable_performance_statistics` | Get the execution time statistics for analyzed files. | No | `false` | + + + +[1]: /security/code_security/ +[2]: https://circleci.com/docs/set-environment-variable/#set-an-environment-variable-in-a-project +[3]: https://docs.datadoghq.com/account_management/api-app-keys/#api-keys +[4]: https://docs.datadoghq.com/account_management/api-app-keys/#application-keys diff --git a/content/en/code_analysis/static_analysis/generic_ci_providers.md b/content/en/security/code_security/static_analysis/generic_ci_providers.md similarity index 90% rename from content/en/code_analysis/static_analysis/generic_ci_providers.md rename to content/en/security/code_security/static_analysis/generic_ci_providers.md index 9950c58d2ab1a..336c8d98a4d09 100644 --- a/content/en/code_analysis/static_analysis/generic_ci_providers.md +++ b/content/en/security/code_security/static_analysis/generic_ci_providers.md @@ -1,6 +1,6 @@ --- title: Generic CI Providers -description: Learn about Datadog Static Analysis to scan code for quality issues and security vulnerabilities before your code reaches production. +description: Learn about Datadog Static Code Analysis to scan code for quality issues and security vulnerabilities before your code reaches production. is_beta: false further_reading: - link: "https://www.datadoghq.com/blog/monitor-ci-pipelines/" @@ -10,10 +10,6 @@ algolia: tags: ['static analysis', 'ci pipeline', 'SAST'] --- -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - {{% site-region region="gov" %}}
Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. @@ -74,7 +70,7 @@ curl -L $DATADOG_STATIC_ANALYZER_URL > /tmp/ddog-static-analyzer.zip unzip /tmp/ddog-static-analyzer.zip -d /tmp mv /tmp/datadog-static-analyzer /usr/local/datadog-static-analyzer -# Run Static Analysis +# Run Static Code Analysis /usr/local/datadog-static-analyzer -i . -o /tmp/report.sarif -f sarif # Upload results @@ -87,7 +83,7 @@ datadog-ci sarif upload /tmp/report.sarif ## Diff-aware scanning -Diff-aware scanning is a feature that enables Datadog Static Analysis to only scan the files modified by a commit in a feature branch. It accelerates scan time significantly by not having the analysis run on every file in the repository for every scan. The first scan performed, as well as default branch scans, always produce an analysis of the full repository (not diff-aware). +Diff-aware scanning is a feature that enables Datadog Static Code Analysis to only scan the files modified by a commit in a feature branch. It accelerates scan time significantly by not having the analysis run on every file in the repository for every scan. The first scan performed, as well as default branch scans, always produce an analysis of the full repository (not diff-aware). If you are using GitHub Actions, diff-aware scanning is enabled by default. @@ -106,9 +102,9 @@ datadog-static-analyzer -i /path/to/directory -g -o sarif.json -f sarif –-diff **Note:** When a diff-aware scan cannot be completed, the entire directory is scanned. -## Further Reading + [1]: /account_management/api-app-keys/#api-keys [2]: /account_management/api-app-keys/#application-keys diff --git a/content/en/security/code_security/static_analysis/github_actions.md b/content/en/security/code_security/static_analysis/github_actions.md new file mode 100644 index 0000000000000..d82d5389d04d6 --- /dev/null +++ b/content/en/security/code_security/static_analysis/github_actions.md @@ -0,0 +1,117 @@ +--- +aliases: +- /continuous_integration/static_analysis/github_actions +- /static_analysis/github_actions +description: Use Datadog and GitHub to run Static Code Analysis jobs in a CI pipeline. +title: Static Code Analysis and GitHub Actions +--- +## Overview + +Run a [Datadog Static Code Analysis][1] job in your GitHub Action workflows. This action wraps the [Datadog Static Analyzer][8], +invokes it against your codebase, and uploads the results to Datadog. + +## Workflow + +Create a file in `.github/workflows` to run a Datadog Static Code Analysis job. + +The following is a sample workflow file. + +```yaml +on: [push] + +jobs: + check-quality: + runs-on: ubuntu-latest + name: Datadog Static Analyzer + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Check code meets quality standards + id: datadog-static-analysis + uses: DataDog/datadog-static-analyzer-github-action@v1 + with: + dd_app_key: ${{ secrets.DD_APP_KEY }} + dd_api_key: ${{ secrets.DD_API_KEY }} + dd_site: "datadoghq.com" + cpu_count: 2 + enable_performance_statistics: false +``` + +You **must** set your Datadog API and application keys as [secrets in your GitHub repository][4] whether at the organization or repository level. Ensure that you add the `code_analysis_read` scope to your Datadog application key. For more information, see [API and Application Keys][2]. + +Make sure to replace `dd_site` with the Datadog site you are using[3]. + +## Inputs + +You can set the following parameters for Static Code Analysis. + +| Name | Description | Required | Default | +|--------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-----------------| +| `dd_api_key` | Your Datadog API key. This key is created by your [Datadog organization][2] and should be stored as a [secret][2]. | Yes | | +| `dd_app_key` | Your Datadog application key. This key is created by your [Datadog organization][2] and should be stored as a [secret][4]. | Yes | | +| `dd_site` | The [Datadog site][3] to send information to. | No | `datadoghq.com` | +| `cpu_count` | Set the number of CPUs used to by the analyzer. | No | `2` | +| `enable_performance_statistics` | Get the execution time statistics for analyzed files. | No | `false` | +| `debug` | Lets the analyzer print additional logs useful for debugging. To enable, set to `yes`. | No | `no` | +| `subdirectory` | A subdirectory pattern or glob (or space-delimited subdirectory patterns) that the analysis should be limited to. For example: "src" or "src packages". | `false` | | +| `architecture` | The CPU architecture to use for the analyzer. Supported values are `x86_64` and `aarch64`. | No | `x86_64` | +| `diff_aware` | Enable [diff-aware scanning mode][5]. | No | `true` | +| `secrets_enabled` | Enable secrets detection (in private beta) | No | `false` | + +### Notes + +1. Diff-aware scanning only scans the files modified by a commit when analyzing feature branches. Diff-aware is enabled by default. To disable diff-aware scanning, set the GitHub action `diff_aware` parameter to `false`. +2. Secrets scanning is in private beta. To enable secrets scanning, please contact your Datadog customer success manager. + +### Deprecated Inputs +The following action inputs have been deprecated and no longer have any effect. Passing these in will emit a warning. +* `dd_service` +* `dd_env` + +## Customizing rules + +By default, [Datadog Static Analyzer][8] detects the languages of your codebase and uses the default rulesets to analyze +your codebase. + +To specify and customize the rulesets, add a `static-analysis.datadog.yml` file to your repository's root directory to define which rulesets to use. + +```yaml +rulesets: + - + - +``` + +Refer to the [Datadog documentation][6] for a complete list of rulesets. + +### Example for Python + +Here is an example for Python-based repositories: + +```yaml +rulesets: + - python-code-style + - python-best-practices + - python-inclusive +``` + + +## Other useful GitHub Actions + +Datadog Software Composition Analysis (SCA) also offers the ability to scan your dependencies +and detect vulnerabilities and licenses. You can use this product with the [`datadog-sca-github-action`][7]. + + + + +[1]: /security/code_security/ +[2]: https://docs.datadoghq.com/account_management/api-app-keys/ +[3]: https://docs.datadoghq.com/getting_started/site/ +[4]: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository +[5]: https://github.com/DataDog/datadog-static-analyzer/blob/main/README.md#diff-aware-scanning +[6]: /security/code_security/static_analysis/static_analysis_rules/ +[7]: https://github.com/DataDog/datadog-sca-github-action +[8]: https://github.com/DataDog/datadog-static-analyzer diff --git a/content/en/code_analysis/static_analysis/setup.md b/content/en/security/code_security/static_analysis/setup/_index.md similarity index 81% rename from content/en/code_analysis/static_analysis/setup.md rename to content/en/security/code_security/static_analysis/setup/_index.md index 8886a7b08f796..c8905760ed32d 100644 --- a/content/en/code_analysis/static_analysis/setup.md +++ b/content/en/security/code_security/static_analysis/setup/_index.md @@ -1,54 +1,40 @@ --- -title: Static Analysis Setup -description: Learn about Datadog Static Analysis to scan code for quality issues and security vulnerabilities before your code reaches production. +title: Static Code Analysis Setup +description: Learn about Datadog Static Code Analysis to scan code for quality issues and security vulnerabilities before your code reaches production. aliases: - /continuous_integration/static_analysis - /static_analysis is_beta: false -further_reading: -- link: "https://www.datadoghq.com/blog/monitor-ci-pipelines/" - tag: "Blog" - text: "Monitor all your CI pipelines with Datadog" -- link: "/integrations/guide/source-code-integration/" - tag: "Documentation" - text: "Learn about the Source Code Integration" algolia: tags: ['static analysis', 'static analysis rules', 'static application security testing', 'SAST'] --- -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - {{% site-region region="gov" %}}
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. + Code Security is not available for the {{< region-param key="dd_site_name" >}} site.
{{% /site-region %}} ## Overview -To set up Datadog Static Analysis, navigate to [**Software Delivery** > **Code Analysis**][1]. +To set up Datadog Static Code Analysis, navigate to [**Security** > **Code Security**][1]. -## Select where to run Static Analysis scans -### Scan with Datadog-hosted scanning +## Select where to run Static Code Analysis scans -{{< callout url="#" header="false" btn_hidden="true" >}} - Datadog-hosted Static Analysis scans are in Preview. Contact your Customer Success Manager to request access. -{{< /callout >}} +### Scan with Datadog-hosted scanning -You can run Datadog Static Analysis scans directly on Datadog's infrastructure. To get started, navigate to the [**Code Analysis** page][1]. +You can run Datadog Static Code Analysis scans directly on Datadog's infrastructure. To get started, navigate to the [**Code Security** page][1]. ### Scan in CI pipelines -Datadog Static Analysis runs in your CI pipelines using the [`datadog-ci` CLI][8]. Configure your [Datadog API and application keys (requires the `code_analysis_read` scope)][3] and run Static Analysis in the respective CI provider. +Datadog Static Code Analysis runs in your CI pipelines using the [`datadog-ci` CLI][8]. Configure your [Datadog API and application keys (requires the `code_analysis_read` scope)][3] and run Static Code Analysis in the respective CI provider. {{< whatsnext desc="See instructions based on your CI provider:">}} - {{< nextlink href="code_analysis/static_analysis/circleci_orbs" >}}CircleCI Orbs{{< /nextlink >}} - {{< nextlink href="code_analysis/static_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} - {{< nextlink href="code_analysis/static_analysis/generic_ci_providers" >}}Generic CI Providers{{< /nextlink >}} + {{< nextlink href="security/code_security/static_analysis/circleci_orbs" >}}CircleCI Orbs{{< /nextlink >}} + {{< nextlink href="security/code_security/static_analysis/github_actions" >}}GitHub Actions{{< /nextlink >}} + {{< nextlink href="security/code_security/static_analysis/generic_ci_providers" >}}Generic CI Providers{{< /nextlink >}} {{< /whatsnext >}} ## Select your source code management provider -Datadog Static Analysis supports all source code management providers, with native support for GitHub. +Datadog Static Code Analysis supports all source code management providers, with native support for GitHub. ### Set up the GitHub integration If GitHub is your source code management provider, you must configure a GitHub App using the [GitHub integration tile][9] and set up the [source code integration][10] to see inline code snippets and enable [pull request comments][11]. @@ -58,11 +44,11 @@ When installing a GitHub App, the following permissions are required to enable c - `Pull Request: Read & Write`, which allows Datadog to add feedback for violations directly in your pull requests using [pull request comments][11], as well as open pull requests to [fix vulnerabilities][12] ### Other source code management providers -If you are using another source code management provider, configure Static Analysis to run in your CI pipelines using the `datadog-ci` CLI tool and [upload the results](#upload-third-party-static-analysis-results-to-datadog) to Datadog. -You **must** run an analysis of your repository on the default branch before results can begin appearing on the **Code Analysis** page. +If you are using another source code management provider, configure Static Code Analysis to run in your CI pipelines using the `datadog-ci` CLI tool and [upload the results](#upload-third-party-static-analysis-results-to-datadog) to Datadog. +You **must** run an analysis of your repository on the default branch before results can begin appearing on the **Code Security** page. ## Customize your configuration -By default, Datadog Static Analysis scans your repositories with [Datadog's rulesets][6] for your programming language(s). To customize which rulesets you want to apply and where, add a `static-analysis.datadog.yml` file to your repository's **root directory**. +By default, Datadog Static Code Analysis scans your repositories with [Datadog's rulesets][6] for your programming language(s). To customize which rulesets you want to apply and where, add a `static-analysis.datadog.yml` file to your repository's **root directory**. You can include the following **global** options in the `static-analysis.datadog.yml` file: @@ -211,7 +197,7 @@ rulesets: #### Ignore for a specific instance -To ignore a specific instance of a violation, comment `no-dd-sa` above the line of code to ignore. This prevents that line from ever producing a violation. For example, in the following Python code snippet, the line `foo = 1` would be ignored by Static Analysis scans. +To ignore a specific instance of a violation, comment `no-dd-sa` above the line of code to ignore. This prevents that line from ever producing a violation. For example, in the following Python code snippet, the line `foo = 1` would be ignored by Static Code Analysis scans. ```python #no-dd-sa @@ -273,18 +259,18 @@ datadog-static-analyzer -i /path/to/directory -g -o sarif.json -f sarif –-diff **Note:** When a diff-aware scan cannot be completed, the entire directory is scanned. -## Further Reading + -[1]: https://app.datadoghq.com/ci/setup/code-analysis +[1]: https://app.datadoghq.com/security/configuration/code-security/setup [2]: https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif [3]: /developers/ide_plugins/idea/#static-analysis [4]: /account_management/api-app-keys/ -[6]: /code_analysis/static_analysis_rules +[6]: /security/code_security/static_analysis/static_analysis_rules [7]: /getting_started/site/ [8]: https://github.com/DataDog/datadog-ci [9]: /integrations/github/#link-a-repository-in-your-organization-or-personal-account [10]: /integrations/guide/source-code-integration -[11]: /code_analysis/github_pull_requests/ -[12]: /code_analysis/github_pull_requests#fixing-a-vulnerability-directly-from-datadog +[11]: /security/code_security/dev_tool_int/github_pull_requests +[12]: /security/code_security/dev_tool_int/github_pull_requests#fixing-a-vulnerability-directly-from-datadog \ No newline at end of file diff --git a/content/en/code_analysis/static_analysis_rules/_index.md b/content/en/security/code_security/static_analysis/static_analysis_rules/_index.md similarity index 88% rename from content/en/code_analysis/static_analysis_rules/_index.md rename to content/en/security/code_security/static_analysis/static_analysis_rules/_index.md index a51890e701425..c08b26c45757c 100644 --- a/content/en/code_analysis/static_analysis_rules/_index.md +++ b/content/en/security/code_security/static_analysis/static_analysis_rules/_index.md @@ -1,9 +1,11 @@ --- -title: Static Analysis Rules -description: View rules for multiple languages for Static Analysis. +title: SAST Rules +description: View rules for multiple languages for Static Code Analysis. aliases: - /continuous_integration/static_analysis/rules - /static_analysis/rules +- /code_analysis/static_analysis_rules +- /security/code_security/static_analysis_rules is_beta: false type: static-analysis rulesets: @@ -99,6 +101,10 @@ rulesets: title: "Enforce Kotlin code style" description: | Rules to enforce Kotlin code style. + kotlin-security: + title: "Enforce secure Kotlin coding" + description: | + Rules focused on finding security issues in your Kotlin code. php-best-practices: title: "Follow best practices for writing PHP code" description: | @@ -166,7 +172,7 @@ rulesets: ruby-code-style: title: "Rules to enforce Ruby code style." description: | - Code Analysis rules to write Ruby rules that follows established coding standards. + Code Security rules to write Ruby rules that follows established coding standards. ruby-inclusive: title: "Rules for inclusive Ruby code" description: | @@ -214,14 +220,14 @@ rulesets: cascade: modal: - title: Try this rule and analyze your code with Datadog Code Analysis + title: Try this rule and analyze your code with Datadog Code Security top_box: title: How to use this rule steps: - Create a static-analysis.datadog.yml with the content above at the root of your repository - - Use our free IDE Plugins or add Code Analysis scans to your CI pipelines + - Use our free IDE Plugins or add Code Security scans to your CI pipelines - Get feedback on your code - footer: For more information, please read the Code Analysis documentation + footer: For more information, please read the Code Security documentation bottom_boxes: - title: VS Code Extension icon: vscode @@ -234,35 +240,31 @@ cascade: cta_title: Download Plugin cta_url: https://plugins.jetbrains.com/plugin/19495-datadog footer: - text: Use Datadog Code Analysis to catch code issues at every step of your development process + text: Use Datadog Code Security to catch code issues at every step of your development process link: - name: Datadog Code Analysis - url: https://www.datadoghq.com/code-analysis/ + name: Datadog Code Security + url: https://www.datadoghq.com/security/code_security/ banner: - title: "Seamless integrations. Try Datadog Code Analysis" + title: "Seamless integrations. Try Datadog Code Security" link: - name: Datadog Code Analysis - url: https://www.datadoghq.com/code-analysis/ + name: Datadog Code Security + url: https://www.datadoghq.com/security/code_security/ further_reading: - - link: "/code_analysis/" + - link: "/security/code_security/" tag: "Documentation" - text: "Learn about Datadog Code Analysis" + text: "Learn about Datadog Code Security" --- -{{< callout url="#" btn_hidden="true" header="Join the Preview!" >}} -Code Analysis is in Preview. -{{< /callout >}} - {{% site-region region="gov" %}}
- Code Analysis is not available for the {{< region-param key="dd_site_name" >}} site. + Code Security is not available for the {{< region-param key="dd_site_name" >}} site.
{{% /site-region %}} ## Overview -Datadog Static Analysis provides out-of-the-box rules to help detect violations in your CI/CD pipelines in code reviews and identify bugs, security, and maintainability issues. For more information, see the [Setup documentation][1]. +Datadog Static Code Analysis provides out-of-the-box rules to help detect violations in your CI/CD pipelines in code reviews and identify bugs, security, and maintainability issues. For more information, see the [Setup documentation][1]. -[1]: /code_analysis/static_analysis/setup +[1]: /security/code_security/static_analysis/setup/ diff --git a/content/en/code_analysis/troubleshooting/_index.md b/content/en/security/code_security/troubleshooting/_index.md similarity index 59% rename from content/en/code_analysis/troubleshooting/_index.md rename to content/en/security/code_security/troubleshooting/_index.md index 0a03bff9b7382..125d7c5bea177 100644 --- a/content/en/code_analysis/troubleshooting/_index.md +++ b/content/en/security/code_security/troubleshooting/_index.md @@ -1,25 +1,15 @@ --- -title: Code Analysis Troubleshooting -description: Learn how to troubleshoot common Code Analysis issues and how to engage with Support. -further_reading: -- link: "/code_analysis/" - tag: "Documentation" - text: "Learn about Code Analysis" -- link: "/code_analysis/static_analysis/" - tag: "Documentation" - text: "Learn about Static Analysis" -- link: "/code_analysis/software_composition_analysis/" - tag: "Documentation" - text: "Learn about Software Composition Analysis" +title: Troubleshooting +disable_toc: false +aliases: + - /code_analysis/troubleshooting/ --- -## Overview +If you experience issues setting up or configuring Datadog Code Security, use this page to start troubleshooting. If you continue to have trouble, [contact Datadog Support][1]. -If you experience issues setting up or configuring Datadog Code Analysis, use this page to start troubleshooting. If you continue to have trouble, [contact Datadog Support][1]. +## Static Code Analysis (SAST) -## Static Analysis - -For issues with the Datadog Static Analyzer, include the following information in a bug report to Support as well as your Customer Success Manager. +For issues with the Datadog static analyzer, include the following information in a bug report to Datadog Support. - Your `static-analysis.datadog.yml` file - The output of your static analysis tool (such as a CLI) that is run locally or in a CI/CD pipeline @@ -89,7 +79,7 @@ It means that you are either: ### Results are not being surfaced in the Datadog UI -**If you are running Code Analysis on a non-GitHub repository**, ensure that the first scan is ran on your default branch (for example, a branch name like +**If you are running Code Security on a non-GitHub repository**, ensure that the first scan is ran on your default branch (for example, a branch name like `master`, `main`, `prod`, or `production`). After you commit on your default branch, non-default branches are analyzed. You can always configure your default branch in-app under [Repository Settings][4]. If you are using Datadog's analyzer, [diff-aware scanning][6] is enabled by default. If you running the tool within your CI pipeline, make sure that `datadog-ci` runs **at the root** of the repository being analyzed. @@ -97,7 +87,7 @@ If you are using Datadog's analyzer, [diff-aware scanning][6] is enabled by defa ## Software Composition Analysis -For issues with Datadog Software Composition Analysis, include the following information in a bug report to Support as well as your Customer Success Manager. +For issues with Datadog Software Composition Analysis (SCA), include the following information in a bug report to Datadog Support. - The output of your SCA tool (such as CLI) that is run locally or in a CI/CD pipeline - The SBOM file produced (if there are any available) @@ -128,7 +118,7 @@ datadog-ci sbom upload /path/to/sbom-file.json ### Results are not being surfaced in the Datadog UI -**If you are running Code Analysis on a non-GitHub repository**, ensure that the first scan is ran on your default branch (for example, a branch name like +**If you are running static scanning on a non-GitHub repository**, ensure that the first scan is ran on your default branch (for example, a branch name like `master`, `main`, `prod`, or `production`). After you commit on your default branch, non-default branches are analyzed. You can always configure your default branch in-app under [Repository Settings][4]. @@ -140,16 +130,58 @@ this file, you can update your project definition to generate it. Follow these [ The generated lock file is used by [`osv-scanner`][7] to extract dependencies and generate an SBOM. -## Further reading +## No vulnerabilities detected by Software Composition Analysis + +There are a series of steps that must run successfully for vulnerability information to appear either in the [Service Catalog Security View][16] or in the [Vulnerability Explorer][12]. It is important to check each step when investigating this issue. + +### Confirming runtime detection is enabled + +If you have enabled runtime vulnerability detection, you can use the metric `datadog.apm.appsec_host` to check if SCA is running. + +1. Go to **Metrics > Summary** in Datadog. +2. Search for the metric `datadog.apm.appsec_host`. If the metric doesn't exist, then there are no services running ASM. If the metric exists, the services are reported with the metric tags `host` and `service`. +3. Select the metric, and in the **Tags** section, search for `service` to see which services are running ASM. + +If you are not seeing `datadog.apm.appsec_host`, check the [in-app instructions][3] to confirm that all steps for the initial setup are complete. + +ASM data is sent with APM traces. See [APM troubleshooting][4] to [confirm APM setup][5] and check for [connection errors][6]. + +### Confirm tracer versions are updated + +See the Application Security product set up documentation to validate you you are using the right version of the tracer. These minimum versions are required to start sending telemetry data that includes library information. + +### Ensure the communication of telemetry data + +Ensure the `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable (`DD_TRACE_TELEMETRY_ENABLED` for Node.js) is set to `true`, or the corresponding system property for your language is enabled. For example in Java: `-Ddd.instrumentation.telemetry.enabled=true`. + +## Disabling Software Composition Analysis + +SCA can be enabled using two methods: the UI or manually using an environment variable. When you disable SCA, you must use the *same method* you used to enable SCA. For example, if you enabled SCA manually, you cannot disable it using the UI. You must disable it manually. + +Typically, SCA is enabled and disabled on a service using the UI. + +To disable [Software Composition Analysis][14] using the UI: + +* Go to [Services][15], select **Software Composition Analysis (SCA)**. Under **Coverage**, hover over a service's SCA icon and then click **Deactivate**. +* To disable Software Composition Analysis on your services in bulk, click the check box in the list header and then under **Bulk Actions** select **Deactivate Software Composition Analysis (SCA) on (number of) services**. + +To disable SCA manually: + +* To disable Software Composition Analysis using the `DD_APPSEC_SCA_ENABLED` environment variable, remove the `DD_APPSEC_SCA_ENABLED=true` environment variable from your application configuration, and restart your service. This does not apply to PHP apps. + +## Disabling IAST -{{< partial name="whats-next/whats-next.html" >}} +To disable IAST, remove the `DD_IAST_ENABLED=true` environment variable from your application configuration or set it to `false` as `DD_IAST_ENABLED=false`, and restart your service. [1]: /help/ -[2]: /code_analysis/static_analysis/github_actions -[3]: /code_analysis/static_analysis/github_actions#inputs +[2]: /security/code_security/static_analysis/github_actions +[3]: /security/code_security/static_analysis/github_actions#inputs [4]: https://app.datadoghq.com/ci/settings/repository [5]: https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif -[6]: https://docs.datadoghq.com/code_analysis/static_analysis/setup/#diff-aware-scanning +[6]: https://docs.datadoghq.com/security/code_security/static_analysis/setup/#diff-aware-scanning [7]: https://github.com/DataDog/osv-scanner [8]: https://github.com/aquasecurity/trivy [9]: https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#enabling-the-lock-file +[12]: https://app.datadoghq.com/security/appsec/vm/library +[15]: https://app.datadoghq.com/security/code-security/inventory/services +[16]: https://app.datadoghq.com/services?&lens=Security diff --git a/content/en/security/guide/aws_fargate_config_guide.md b/content/en/security/guide/aws_fargate_config_guide.md index 25367a6271272..eb203a788f753 100644 --- a/content/en/security/guide/aws_fargate_config_guide.md +++ b/content/en/security/guide/aws_fargate_config_guide.md @@ -427,9 +427,9 @@ For step-by-step instructions, see [AWS Configuration Guide for Cloud SIEM][17]. [15]: /security/application_security/threats/setup/threat_detection/python?tab=awsfargate [16]: /security/application_security/ [17]: /security/cloud_siem/guide/aws-config-guide-for-cloud-siem/ -[18]: /security/application_security/code_security/setup/java/ -[19]: /security/application_security/code_security/setup/dotnet/ -[20]: /security/application_security/code_security/setup/nodejs/ +[18]: /security/code_security/iast/setup/java/ +[19]: /security/code_security/iast/setup/dotnet/ +[20]: /security/code_security/iast/setup/nodejs/ [21]: https://app.datadoghq.com/security/configuration/siem/setup -[22]: /security/application_security/software_composition_analysis/ -[23]: /security/application_security/software_composition_analysis/setup/ +[22]: /security/code_security/software_composition_analysis/ +[23]: /security/code_security/software_composition_analysis/ diff --git a/content/en/security/security_inbox.md b/content/en/security/security_inbox.md index c826c6a3835c1..1ed00bc4a4720 100644 --- a/content/en/security/security_inbox.md +++ b/content/en/security/security_inbox.md @@ -88,8 +88,8 @@ For more information, see [Automation Pipelines][11] and [Add to Security Inbox [1]: /security/default_rules/?category=all#all [2]: /security/cloud_security_management/misconfigurations/ [3]: /security/cloud_security_management/identity_risks/ -[4]: /security/application_security/software_composition_analysis -[5]: /security/application_security/code_security +[4]: /security/code_security/software_composition_analysis +[5]: /security/code_security/iast [6]: /security/cloud_security_management/guide/public-accessibility-logic/ [7]: https://www.cisa.gov/ [8]: https://www.exploit-db.com/ diff --git a/content/en/serverless/step_functions/installation.md b/content/en/serverless/step_functions/installation.md index db8e206cb5fb7..0d2f637a746c7 100644 --- a/content/en/serverless/step_functions/installation.md +++ b/content/en/serverless/step_functions/installation.md @@ -77,7 +77,7 @@ See [Merge Step Functions traces with Lambda traces][11]. Ensure that you have a ### Sample traces -To manage the APM traced invocation sampling rate for serverless functions, set the `DD_TRACE_SAMPLE_RATE` environment variable on the function to a value between 0.000 (no tracing of Step Function invocations) and 1.000 (trace all Step Function invocations). +To manage the APM traced invocation sampling rate for serverless functions, set the `DD_TRACE_SAMPLE_RATE` environment variable on the function to a value between 0.00 (no tracing of Step Function invocations) and 1.00 (trace all Step Function invocations). The dropped traces are not ingested into Datadog. diff --git a/content/en/service_catalog/service_definitions/v3-0.md b/content/en/service_catalog/service_definitions/v3-0.md index ecc86d01c29e8..39ac665597ea4 100644 --- a/content/en/service_catalog/service_definitions/v3-0.md +++ b/content/en/service_catalog/service_definitions/v3-0.md @@ -35,7 +35,7 @@ Schema v3.0 is the latest version of the Definition schema and is in Preview. It - **Inheritance of system metadata**: Components within a system automatically inherit the system's metadata. It's no longer necessary to declare metadata for all related components one-by-one as in v2.1 and v2.2. -- **Precise code location**: You can add the mapping of your code location for your service. The `codeLocations` section in v3.0 specifies the locations of the code with the repository that contains the code and its associated `paths`. The `paths` attribute is a list of [globs][4] that should match paths in the repository. Learn more about how this addition improves your experience with [Datadog Code Analysis.][3] +- **Precise code location**: You can add the mapping of your code location for your service. The `codeLocations` section in v3.0 specifies the locations of the code with the repository that contains the code and its associated `paths`. The `paths` attribute is a list of [globs][4] that should match paths in the repository. ## Metadata Schema v3.0 (in Preview) diff --git a/content/en/service_catalog/software_templates.md b/content/en/service_catalog/software_templates.md index bc683520d2cf0..9e866c38a38be 100644 --- a/content/en/service_catalog/software_templates.md +++ b/content/en/service_catalog/software_templates.md @@ -33,18 +33,34 @@ The [Scaffold New Service blueprint][11] shows an example of scaffolding a new l 1. From the app, customize the form to include the parameters you want to capture from your developers. 2. Click **Save as New App** to save the app. This will also create a corresponding templating workflow. -##### Create S3 Bucket with Terraform +##### Create S3 bucket with Terraform + +The [Create S3 Bucket blueprint][10] shows an example of how to generate Terraform code for an S3 bucket using a form in GitHub. + +##### Provision Kubernetes cluster + +The [Provision EKS Cluster blueprint][12] shows an example of how to generate Terraform code for a Kubernetes cluster in GitHub. + +##### Provision RDS instance + +The [Provision RDS Instance blueprint][13] shows an example of how to provision an RDS instance through direct integration with AWS. -The [Create S3 Bucket with Terraform blueprint][10] shows an example of creating the terraform for an S3 bucket from a form in Github. #### Start from scratch Navigate to the [Workflow Automation][3] page to configure the template in Datadog. -1. [Create a workflow][6] for your template: +1. Create the form for your template: + - Navigate to **Actions** > **App Builder** and select **New App**. + - Enter a name and description, and use the drag-and-drop editor to create a form that collects the required parameters for your template. + - Select **New Query**, and use the **Trigger workflow** action to call your templating workflow and pass in the relevant parameters. + - Create a **Button** that submits the form, triggers your workflow, and passes in the parameters for the template. + - Save and publish the app. + +2. [Create a workflow][6] for your template: - From the [Workflow Automation][3] page, click **New Workflow**. - Enter a name, add relevant tags, and define the input parameters you want to collect from users. -2. Configure the templating workflow: +3. Configure the templating workflow: - Use GitHub, Gitlab, or HTTP [actions][7] to retrieve your template files. - Use Cookiecutter to generate the project files from the template. - Use the Apply Template [action][7] to manipulate your template repository and pass in your input parameters. @@ -53,14 +69,7 @@ Navigate to the [Workflow Automation][3] page to configure the template in Datad {{< img src="tracing/service_catalog/templating-workflow.png" alt="Workflow for building software template automation" style="width:100%;" >}} -3. Create the form for your template: - - Navigate to **Service Mgmt** > **App Builder** and select **New App**. - - Enter a name and description, and use the drag-and-drop editor to create a form that collects the required parameters for your template. - - Select **New Query**, and use the **Trigger workflow** action to call your templating workflow and pass in the relevant parameters. - - Create a **Button** that submits the form, triggers your workflow, and passes in the parameters for the template. - - Save and publish the app. - -4. Run your application and workflow: +4. Test your application and workflow: - Click **View App** to view the app on a standalone page, or **Add to a Dashboard** to place the app in a dashboard. - Navigate to **Service Mgmt** > **App Builder**, and select your app. Fill out the template form, and click the submit button. - Track the success of the workflow templating process in [Workflow Automation][3]. @@ -105,3 +114,5 @@ Below is a comprehensive list of actions available for Service Catalog in Datado [10]: https://app.datadoghq.com/app-builder/apps/edit?activeTab=queries&showActionCatalog=false&template=create-new-s3-bucket&viewMode=edit [11]: https://app.datadoghq.com/app-builder/apps/edit?activeTab=queries&showActionCatalog=false&template=scaffolding&viewMode=edit [12]: /actions/private_actions/ +[13]: https://app.datadoghq.com/app-builder/apps/edit?activeTab=data&showActionCatalog=false&template=provision-eks-cluster&viewMode=edit&visibleDataItemId=createOrUpdateFile0-action +[14]: https://app.datadoghq.com/app-builder/apps/edit?activeTab=data&showActionCatalog=false&template=rds_provision_instance&viewMode=edit&visibleDataItemId=createDbInstance0-action diff --git a/content/en/service_management/app_builder/build.md b/content/en/service_management/app_builder/build.md index 4c73c1494d572..a621bbca09ff9 100644 --- a/content/en/service_management/app_builder/build.md +++ b/content/en/service_management/app_builder/build.md @@ -76,6 +76,18 @@ UI components can trigger reactions on an [Event][11]. You can use [JavaScript Expressions][13] anywhere in App Builder to create custom interactions between the different parts of your app. +## Tag an app + +Tags display in a column on the [app list][14]. + +To add a tag to an app: + +1. Open the **App Properties** tab in your app. +1. Under **Tags**, use the drop-down to select an existing tag, or enter a new value and click **Add option: [your text]**. +1. Save your app. + +The tag displays on the line for this app in the app list. You can click the tag in this list to copy it to your clipboard. + ## Favorite an app To favorite an app and pin it to the top of your list of apps, click the star next to the name of the app in the [app list][14]: diff --git a/content/en/service_management/app_builder/connections/_index.md b/content/en/service_management/app_builder/connections/_index.md deleted file mode 100644 index a59f8e273d9e7..0000000000000 --- a/content/en/service_management/app_builder/connections/_index.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Connections -description: App Builder connections -disable_toc: false -further_reading: -- link: "/service_management/app_builder/build/" - tag: "Documentation" - text: "Build Apps" ---- - -{{< site-region region="gov" >}} -
App Builder is not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
-{{< /site-region >}} - -Because app actions connect with external software systems, you may need to authenticate your Datadog account to the corresponding integration. An app can run successfully only if every app action that requires authentication can verify the identity of your Datadog account. When granting permissions to Datadog, ensure that you're following security best practice and only granting the permissions necessary for an app to run. - -App actions can be authenticated in two ways: -- Credentials and permissions configured in the integration tile -- Connection credentials - -## Integration tile credentials - -Credentials and account authentication that you set up in the following Datadog integration tiles automatically propagate to the corresponding actions in App Builder: -- Jira -- PagerDuty -- Slack -- GitHub - -Configure the integration tiles by following instructions in [Datadog Integrations][6]. - -If the integration you need to set up is not listed above, set up connection credentials. - -## Connection credentials - -App Builder connections extend your installed integrations to give you control over app action authentication. Use connection credentials to authenticate any action for which the integration tile does not offer authentication. For a list of integrations that use the integration tile for authentication, see the [Integration tile credentials](#integration-tile-credentials) section. Connection credentials are only available for use within the App Builder and Workflow Automation products. - -Connections support the following example use cases: -- The integration you need is not available as a built-in connection. -- You wish to authenticate a custom action. For instance, you need to use the HTTP action with your own service. -- The permissions needed are not supported by the integration, such as write permissions on AWS. -- You want granular access control, for example restricting user access to certain apps. - -### Connection security considerations - -Before you create a connection, think about the permissions needed to fulfill the required task and grant the connection only the necessary permissions to fulfill that task. In addition, the connection should be restricted to only the people who need to use it. - -Where possible, use granular connections for different apps. For example, if you have an app that writes to an Amazon S3 bucket and an app that terminates Amazon EC2 instances, do not use the same connection for both apps. Instead, create two respective connections, each corresponding to an IAM role with limited scope. - -## Work with connections - -### View connections - -1. From the [App Builder page][2], click the **Connections** tab. The [connections list][3] opens. -1. Click on a single line to view connection details. - -### Create a connection - -Establishing a connection requires the following information: -- What to connect to (for example, product name, URL) -- How to authenticate (for example, API key, username/password, oauth) - -To create a connection: -1. Navigate to the [connections list][3]. -1. Click **New Connection** in the upper right. The **New Connection** dialog box appears. -1. Click on an icon to choose an integration schema. -1. Fill in the appropriate fields. Click **Create**. - -Alternatively, add a connection from the app page: -1. Navigate to the [App Builder app list][9]. -1. Select the app containing the action you need to add a credential to. The app canvas appears. -1. Click **Edit** in the upper right. -1. Under **Queries** on the left-hand side, click the action to which you need to add a credential. The left side panel populates with the action details. -1. Look for the **Connection** dropdown and click the **+** icon. -1. In the **New Connection** dialog box, name the connection and enter the required authentication details. -1. Click **Save**. - -The example below shows the **New Connection** dialog box for the OpenAI connection. Each connection requires different authentication information. The OpenAI connection requires a valid Connection Name and API Token. - -{{< img src="service_management/new-connection-2.png" alt="The New Connection dialog box for the OpenAI connection" >}} - -### Edit a connection - -1. Navigate to the [connections list][3]. -1. Hover over the connection you would like to edit. **Edit**, **Permissions**, and **Delete** icons appear on the right. -1. Click the pencil (**Edit**) icon. A dialog box appears. -1. Update the fields you would like to change. -1. Click **Save**. - -### Delete a connection - -1. Navigate to the [connections list][3]. -1. Hover over the connection you would like to delete. **Edit**, **Permissions**, and **Delete** icons appear on the right. -1. Click the trash can (**Delete**) icon. "Are you sure?" text appears. -1. Select **Delete**. - -### Restrict connection use - -To learn how to restrict connection use, see [Authentication][4]. - -## HTTP connection - -To connect to an arbitrary service, use the HTTP connection type. For authentication options and setup instructions, see [HTTP requests][10]. - -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - -
Do you have questions or feedback? Join the **#app-builder** channel on the [Datadog Community Slack][11]. - -[2]: https://app.datadoghq.com/app-builder -[3]: https://app.datadoghq.com/app-builder/connections -[4]: /service_management/app_builder/auth/#restrict-access-to-a-specific-connection -[6]: /integrations/ -[9]: https://app.datadoghq.com/app-builder/apps/list -[10]: /service_management/app_builder/connections/http_request/ -[11]: https://datadoghq.slack.com/ diff --git a/content/en/service_management/app_builder/connections/http_request.md b/content/en/service_management/app_builder/connections/http_request.md deleted file mode 100644 index 53905c9c775f5..0000000000000 --- a/content/en/service_management/app_builder/connections/http_request.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: HTTP Requests -disable_toc: false -aliases: -- service_management/app_builder/http_request/ -further_reading: -- link: "/service_management/app_builder/connections/" - tag: "Documentation" - text: "Find out more about connection credentials for App Builder" ---- - -{{< site-region region="gov" >}} -
App Builder is not supported for your selected Datadog site ({{< region-param key="dd_site_name" >}}).
-{{< /site-region >}} - -Use the **Make request** action to make a custom request to an HTTP endpoint. You can control the request method and its contents, how it is authenticated and processed, and how it should respond to scenarios like expired certificates or redirects. If you need to add Datadog IP address ranges to your allowlist so that the HTTP action works as expected, use the IPs listed in the `webhooks` object. See the [IP Ranges API][1] for details. - -To add an HTTP request: - -1. In your app, under **Queries**, click **+** (plus) and search for `HTTP`. -1. Select the **Make request** action to add it to your app. - -Specify the request method and any necessary [authentication][2]. Read the sections below for further information about the available configuration options. - -## Authentication - -If you need to authenticate your request, use the action's **Connection** to configure the authentication method. You can either select a preconfigured connection from the dropdown, or create a connection. - -### Create an AWS connection - -1. In the **Connection** section, click the plus icon (**+**). -1. Select **AWS**. -1. Enter a **Connection Name**, **Account ID**, and **AWS Role Name**. -1. Click **Create**. - -### Create an Azure connection - -1. In the **Connection** section, click the plus icon (**+**). -1. Select **Azure**. -1. Enter a **Connection Name**, **Tenant ID**, **Client ID**, and **Client Secret**. -1. Optionally, enter the **Custom Scope** to be requested from Microsoft when acquiring an OAuth 2 access token. A resource's scope is constructed using the identifier URI for the resource and `.default`, separated by a forward slash (`/`). For example, `{identifierURI}/.default`. For more information, see [the Microsoft documentation on .default scope][3]. -1. Click **Create**. - -### Create an HTTP token authentication connection - -The Token Auth connection uses a bearer token to authenticate the HTTP request. - -1. In the **Connection** section, click the plus icon (**+**). -1. Select **HTTP**. -1. Enter a **Connection Name**. -1. Enter the **Base URL** for authentication. -1. For **Type**, ensure that **Datadog** is selected. -1. From the **Authentication Type** dropdown, select **Token Auth**. -1. Enter a **Token Name** and **Token Value**. You can enter multiple tokens. To reference your token in a header, parameter, or the request body, use the syntax `{{ secretTokenName }}`. -1. Optionally, add additional **Request Headers**, **URL parameters** and a **Body** to your request. -1. Click **Create**. - -### Create an HTTP basic authentication connection - -The Basic Auth connection uses an authorization header with a username and password to authenticate the HTTP request. - -1. In the **Connection** section, click the plus icon (**+**). -1. Select **HTTP**. -1. Enter a **Connection Name**. -1. Enter the **Base URL** for authentication. -1. For **Type**, ensure that **Datadog** is selected. -1. From the **Authentication Type** dropdown, select **Basic Auth**. -1. Enter a **Username** and **Password**. The required authorization request header is automatically populated using your username and password. -1. Click **Create**. - -### Create a 2 Step HTTP authentication connection - -The HTTP 2 step connection allows you to make a preliminary request to retrieve an access token with which to authenticate the HTTP request. This is useful for authenticating JSON Web Token (JWT) and OAuth applications. - -1. In the **Connection** section, click the plus icon (**+**). -1. Select **HTTP**. -1. Enter a **Connection Name**. -1. Enter the **Base URL** for authentication. -1. For **Type**, ensure that **Datadog** is selected. -1. From the **Authentication Type** dropdown, select **2 Step Auth**. - -{{< tabs >}} -{{% tab "Token auth" %}} -Configure the preliminary access token query: -1. From the **Secret Type** dropdown, select **Token Auth**. -1. Enter a Token Name and Token Value -1. Enter the **Request URL** and specify the type of request as either **GET** or **POST**. -1. Optionally, add additional **Request Headers**, **URL parameters** and a **Body** to the request. - -Get the access token from the response: -1. Under **Variable Path to Access Token**, enter the path to the access token in the response. This is the path through which your access token is returned after making the authentication call. For example, if the access token is returned as the body of the access request, use `body`. If the access token is returned in a property called `token` of the response `body`, use `body.token`. Paths are case sensitive. -1. Optionally, enter a **Refresh Interval**. This is the duration until the access token expires, specified in seconds. When the token expires, the connection automatically requests a new access token. Setting an interval of `0` disables token refresh. - -Use your retrieved token to authenticate your connection: -1. Under **Request Detail**, enter **Request Headers**, **URL parameters** and a **Body** to complete your request using the retrieved access token. -1. Click **Create**. -{{% /tab %}} - -{{% tab "Basic auth" %}} -Configure the preliminary authentication query: -1. From the **Secret Type** dropdown, select **Basic Auth**. -1. Enter a **Username** and **Password**. The **Request Headers** section is automatically populated using your username and password. - -Configure the authentication request: -1. Enter the **Request URL** and specify the type of request as either **GET** or **POST**. -1. Optionally, add additional **Request Headers**, **URL parameters** and a **Body** to the request. - -Get the access token from the response: -1. Under **Variable Path to Access Token**, enter the path to the access token in the response. This is the path through which your access token is returned after making the authentication call. For example, if the access token is returned as the body of the access request, use `body`. If the access token is returned in a property called `token` of the response `body`, use `body.token`. Paths are case sensitive. -1. Optionally, enter a **Refresh Interval**. This is the duration until the access token expires, specified in seconds. When the token expires, the connection automatically requests a new access token. Setting an interval of `0` disables token refresh. - -Use your retrieved token to authenticate your connection: -1. Under **Request Detail**, enter **Request Headers**, **URL parameters** and a **Body** to complete your request using the retrieved access token. -1. Click **Create**. -{{% /tab %}} -{{< /tabs >}} - -### Create an HTTP mTLS connection - -The Mutual TLS (mTLS) Auth connection allows you to use a private key and TLS certificate to authenticate the HTTP request. - -
The client certificate (.crt, .pem) and private key (.key, .pem) must use the PEM format.
- -1. In the **Connection** section, click the plus icon (**+**). -1. Select **HTTP**. -1. Enter a **Connection Name**. -1. Enter the **Base URL** for authentication. -1. For **Type**, ensure that **Datadog** is selected. -1. From the **Authentication Type** dropdown, select **mTLS Auth**. -1. Click **Upload File** to upload your **Private Key**. -1. Click **Upload File** to upload your **Certificate**. -1. Click **Create**. - -## Inputs - -A URL and request method are required for your request. Optionally, you can enter: -- URL parameters -- headers -- the content type -- a request body -- cookies - -You can also select whether you want to allow expired certificates, or follow redirects. - -### Response options - -Under **Error on Status**, enter a comma-delineated list of any status codes on which to return an error. Use the **Response Parsing** dropdown to override the default response parsing method inferred from the headers, and **Response Encoding** if the target server specifies the wrong encoding in its response headers. - -## Private actions - -{{< callout url="https://www.datadoghq.com/product-preview/private-actions/" btn_hidden="false" header="Join the Preview!">}} -Private Actions are in Preview. Use this form to request access today. -{{< /callout >}} - -You can use a private HTTP action to interact with services hosted on your private network without exposing your services to the public internet. Private actions make use of a private action runner, which you install on a host in your network using Docker and pair with a Datadog Connection. For more information, see [Private Actions][5]. - -To configure a private HTTP request: -1. Add an HTTP query to your app. -1. In the **Connection** section, click the plus icon (**+**). -1. Select **HTTP**. -1. Enter a **Connection Name**. -1. Enter the **Base URL** for the host in your private network. -1. For **Type**, ensure that **Private Action Runner** is selected. -1. From the **Private Action Runner** drop-down, select your [private action runner][5]. -1. From the **Authentication Type** dropdown, select an Authentication type and fill in the required fields. Private HTTP requests support the following authentication types: - - No authentication - - [Basic authentication](#create-an-http-basic-authentication-connection) - - [Token authentication](#create-an-http-token-authentication-connection) - - For information on configuring credentials for Token authentication, see [Handling Private Action Credentials][6]. -1. Click **Next, Confirm Access** and configure access to the query. -1. Click **Create**. - -## Further reading - -{{< partial name="whats-next/whats-next.html" >}} - -
Do you have questions or feedback? Join the **#app-builder** channel on the [Datadog Community Slack][4]. - -[1]: https://docs.datadoghq.com/api/latest/ip-ranges/#list-ip-ranges -[2]: /service_management/app_builder/auth/ -[3]: https://learn.microsoft.com/en-us/azure/active-directory/develop/scopes-oidc#the-default-scope -[4]: https://datadoghq.slack.com/ -[5]: /actions/private_actions -[6]: /actions/private_actions/private_action_credentials/?tab=httpsaction#credential-files diff --git a/content/en/service_management/on-call/escalation_policies.md b/content/en/service_management/on-call/escalation_policies.md index 9e8cd1a464809..3621e0876eadd 100644 --- a/content/en/service_management/on-call/escalation_policies.md +++ b/content/en/service_management/on-call/escalation_policies.md @@ -14,25 +14,60 @@ In Datadog On-Call, escalation policies ensure that Pages are promptly addressed Datadog creates a default escalation policy when you [onboard a Team to On-Call][1]. -### Create a new escalation policy +## Create a new escalation policy +{{< img src="service_management/oncall/escalation_policy_2.png" alt="A sample escalation policy." style="width:100%;" >}} + 1. Go to [**On-Call** > **Escalation Policies**][2]. 1. Select [**+ New Escalation Policy**][3]. -1. Enter a **Name** for your escalation policy. For example, _Checkout Operations - Primary_. +1. Enter a **Name** for your escalation policy. For example, _Payment's Escalation Policy_. 1. Select the **Teams** that own this escalation policy. -1. Decide the order of who should receive this Page. For each escalation step after **Page is triggered**, select who to notify. Each step can notify individual users and/or schedules. - - For example: After this Page is triggered, it is sent to two recipients: Daljeet, and whoever is on-call for the Checkout Operations - Primary schedule. - {{< img src="service_management/oncall/escalation_policy_step1.png" alt="An escalation policy, showing two steps after 'Page is triggered'. Each step has a 'Notify' input box and 'If the page is not acknowledged after N minutes, escalate.' The first step is configured to notify a user named Daljeet and a schedule named Checkout Operations - Primary, and escalates if the page is not acknowledged after 5 minutes. The second step is configured to notify a schedule named Checkout Operations - Secondary." style="width:100%;" >}} -1. Configure how many minutes to wait for one of the recipients to acknowledge the Page. If no one acknowledges the Page within the timeframe, the Page is escalated. In the example, if neither Daljeet nor the Checkout Operations - Primary on-call person acknowledges the Page within five minutes, the Page is then sent to the Checkout Operations - Secondary on-call person. +1. Now start building the policy out. Decide who or what should receive a Page when this escalation policy is invoked. For each escalation step after, select who to notify. Each step can notify individual users, entire teams, and/or whoever is on-call in a schedule. + For example: After this Page is triggered, it is sent to whoever is currently on-call for the Primary schedule, in this cae John Doe. + {{< img src="service_management/oncall/escalation_policy_2_steps.png" alt="An escalation policy, showing two steps after 'Page is triggered'. Each step has a 'Notify' input box and 'If the page is not acknowledged after N minutes, escalate.' The first step is configured to notify a schedule named Primary, and escalates if the page is not acknowledged after 5 minutes. The second step is configured to notify a user named Jane Doe." style="width:100%;" >}} +1. Configure how many minutes to wait for one of the recipients to acknowledge the Page. If no one acknowledges the Page within the time frame, the Page is escalated. In the example, if the Primary on-call person, John Doe, does not acknowledges the Page within five minutes, the Page is then sent to Jane Doe. 1. Configure how many times these steps should be repeated if no one acknowledges the Page. 1. Select whether Datadog should automatically update the Page status to **Resolved** after executing all rules and repeats. -### Limitations +## Escalation policy targets +In each step of an escalation policy, you can notify individual users, entire teams, or whoever is on-call in a schedule. + +### Schedules +{{< img src="service_management/oncall/escalation_policy_notify_schedule.png" alt="A sample escalation policy step that notifies a schedule." style="width:100%;" >}} + +Escalation policies can notify whoever is on-call according to a predefined schedule. The system checks the schedule and notifies the person or group that is actively on-call during the incident. Using schedules is beneficial for: + +- Routing alerts to on-call responders across different time zones for 24/7 coverage. +- Handling tiered support, where different shifts handle different levels of urgency. +- Dynamic notifications for teams with rotating on-call responsibilities, ensuring the right person is always paged. + +If no one is on-call for a given schedule, the escalation step gracefully skips and the process moves forward without delays or interruptions. The UI indicates a skipped escalation. + +{{< img src="service_management/oncall/escalation_policy_schedule_skipped.png" alt="A sample escalation policy indicating a skipped escalation due to no one being on call." style="width:100%;" >}} + +### Users +{{< img src="service_management/oncall/escalation_policy_notify_user.png" alt="A sample escalation policy that specifies a user in the escalation policy." style="width:100%;" >}} + +You can include specific users in an escalation policy to ensure key individuals are always notified in the event of a Page. Common use cases for directly paging a user are: + +- Notifying a senior engineer for high-severity incidents requiring specialized knowledge. +- Alerting a product manager or director in case of customer-facing incidents. +- Routing alerts to a backup responder if the primary contact is unavailable. + +### Teams +{{< img src="service_management/oncall/escalation_policy_notify_team.png" alt="A sample escalation policy that notifies an entire Team." style="width:100%;" >}} + +Common use cases for paging an entire Team are: + +- Incidents affecting multiple systems where various team members may contribute to the solution. +- Escalating to a DevOps team for infrastructure-related incidents. +- Ensuring that all relevant members of an engineering or security team are alerted for critical outages. + +## Limitations - Maximum escalation steps: 10 -- Maximum number of notify targets (individual or schedule) per escalation step: 10 +- Maximum number of notify targets (individuals, teams, or schedules) per escalation step: 10 - Minimum time before escalation to the next step: one minute [1]: /service_management/on-call/teams [2]: https://app.datadoghq.com/on-call/escalation-policies -[3]: https://app.datadoghq.com/on-call/escalation-policies/create \ No newline at end of file +[3]: https://app.datadoghq.com/on-call/escalation-policies/create diff --git a/content/en/service_management/on-call/pages.md b/content/en/service_management/on-call/pages.md index a277ee240d121..1a709f1eafeb8 100644 --- a/content/en/service_management/on-call/pages.md +++ b/content/en/service_management/on-call/pages.md @@ -27,7 +27,7 @@ If you send a Page through a monitor alert, and your Team's processing rule uses ### Page manually -You can manually send a Page directly in the Datadog platform, through a tool like Slack or Microsoft Teams, or with the Datadog API. +You can manually send a Page directly in the Datadog platform, or through a tool like Slack or Microsoft Teams. #### Through Datadog @@ -38,16 +38,16 @@ You can manually send a Page directly in the Datadog platform, through a tool li Manually paging a Team through Datadog always results in a `high` urgency Page. -#### Through Slack or Microsoft Teams +#### Through Slack 1. Install the Datadog app 1. Enter `/datadog page` or `/dd page`. 1. Select a Team to send a Page to. -Manually paging a Team from Slack or Microsoft Teams always results in a `high` urgency Page. +Manually paging a Team from Slack always results in a `high` urgency Page. ## Further Reading {{< partial name="whats-next/whats-next.html" >}} [1]: /service_management/on-call/teams -[2]: https://app.datadoghq.com/on-call/teams \ No newline at end of file +[2]: https://app.datadoghq.com/on-call/teams diff --git a/content/en/service_management/workflows/actions/_index.md b/content/en/service_management/workflows/actions/_index.md index 58d2fbc66ae82..4009eca39685b 100644 --- a/content/en/service_management/workflows/actions/_index.md +++ b/content/en/service_management/workflows/actions/_index.md @@ -26,7 +26,7 @@ Datadog provides a suite of workflow actions that are not associated with a spec {{< whatsnext desc="Find out more about generic actions:" >}} {{< nextlink href="/service_management/workflows/actions/flow_control" >}}Use logic actions to add a sleep interval, branch on a condition, use iteration, and more.{{< /nextlink >}} {{< nextlink href="/service_management/workflows/actions/data_transformation" >}}Perform custom data transformations within your workflows using JavaScript.{{< /nextlink >}} - {{< nextlink href="/service_management/workflows/actions/http" >}}Use the HTTP action to make a request to a custom endpoint.{{< /nextlink >}} + {{< nextlink href="/actions/connections/http" >}}Use the HTTP action to make a request to a custom endpoint.{{< /nextlink >}} {{< nextlink href="/service_management/workflows/actions/saved_actions" >}}Use the Saved Actions feature to store and reuse an action and its parameters.{{< /nextlink >}} {{< /whatsnext >}} diff --git a/content/en/synthetics/api_tests/http_tests.md b/content/en/synthetics/api_tests/http_tests.md index 0a4db9cdc5ac8..cb49fb0fe78a8 100644 --- a/content/en/synthetics/api_tests/http_tests.md +++ b/content/en/synthetics/api_tests/http_tests.md @@ -133,9 +133,9 @@ You may create a test using one of the following options: {{% tab "Javascript" %}} - Define variables for your HTTP API tests with JavaScript: +Define variables for your HTTP API tests with JavaScript: - {{< img src="synthetics/api_tests/http_javascript.png" alt="Define HTTP API test with Javascript" style="width:90%;" >}} +{{< img src="synthetics/api_tests/http_javascript.png" alt="Define HTTP API test with Javascript" style="width:90%;" >}} {{% /tab %}} diff --git a/content/en/synthetics/guide/_index.md b/content/en/synthetics/guide/_index.md index 58b2a4ac81efb..767ddc019dcbe 100644 --- a/content/en/synthetics/guide/_index.md +++ b/content/en/synthetics/guide/_index.md @@ -15,6 +15,7 @@ cascade: {{< whatsnext desc="General Guides:" >}} {{< nextlink href="synthetics/guide/identify_synthetics_bots/" >}}Identify Synthetic bots{{< /nextlink >}} {{< nextlink href="synthetics/guide/clone-test" >}}Clone your Synthetic tests{{< /nextlink >}} + {{< nextlink href="synthetics/guide/otp-email-synthetics-test" >}}Extract a one-time passcode from an email body using Synthetic Browser Tests{{< /nextlink >}} {{< /whatsnext >}} {{< whatsnext desc="Alerting:" >}} diff --git a/content/en/synthetics/guide/otp-email-synthetics-test.md b/content/en/synthetics/guide/otp-email-synthetics-test.md new file mode 100644 index 0000000000000..310edc4484a02 --- /dev/null +++ b/content/en/synthetics/guide/otp-email-synthetics-test.md @@ -0,0 +1,143 @@ +--- +title: Extract a One-Time Passcode from an Email Body using Synthetic Browser Tests +description: Learn how to extract a OTP from an email body using Synthetic Browser Tests. +further_reading: +- link: "//synthetics/browser_tests/?tab=requestoptions#overview" + tag: "Documentation" + text: "Learn about Synthetic Browser Tests" +- link: "/synthetics/api_tests/http_tests#variables" + tag: "Documentation" + text: "Learn about Synthetic test variables" +- link: "/synthetics/guide/email-validation" + tag: "Documentation" + text: "Learn about email validation in Browser Tests" +- link: "/synthetics/troubleshooting/?tab=common" + tag: "Documentation" + text: "Synthetic Monitoring Troubleshooting" +- link: 'https://www.datadoghq.com/blog/test-creation-best-practices/' + tag: 'Blog' + text: 'Best practices for creating end-to-end tests' +--- + +
Extracting one-time passcodes from an email body is only supported for Synthetic Browser Tests.
+ +## Overview + +Synthetic Browser Tests are to used monitor your applications by reproducing how your customers experience your webpages end-to-end. When testing a sign-up or login flow, incorporate a one-time passcode (OTP) sent to an email address for authentication into your test. This OTP token can be extracted from an email body for testing within an application. + +This guide walks you through how to configure the OTP extraction for a Synthetic Browser Test. + +## Setup + +### Step 1 - Create an email variable + +Follow the steps below to create an email variable for the [Browser Test][3]. This generates a unique [Datadog Synthetics email address][7] for the Synthetic Test run. + +1. On a new or existing Browser Test, under **Variables** click **Add Variable**. +2. Next, select **Email Address** from the dropdown menu. +3. Name the variable and click **Create**. + + {{< img src="synthetics/guide/otp-from-email-body/email_variable.png" alt="Add a unqiue email variable" style="width:80%;" >}} + + This adds the email variable to the **Variables** section in the UI: + + {{< img src="synthetics/guide/otp-from-email-body/email_var_example.png" alt="Example email variable in the UI" style="width:50%;" >}} + +### Step 2 - Inject the email address variable + +Next, [record steps][11] to insert the email address variable into an input field to imitate how a user would add the email address within your application. + +{{< img src="synthetics/guide/otp-from-email-body/email_injection.mp4" alt="Example of recording the email address injection steps" video="true" width="100%">}} + +1. First click **Record** at the top of the test. This automatically adds steps to the test based on the detected interactions and inputs. +2. Click the email input field, which creates a **Click** step. +3. Find the email variable created earlier, called `DD_EMAIL_ADDRESS` in this example. On the right, click **Inject variable in a text input** and click the desired text box, which is highlighted in the UI. The email gets inserted. + + {{< img src="synthetics/guide/otp-from-email-body/synthetics-otp-inject-variable.png" alt="Inject the email variable" style="width:60%;" >}} + +After the email containing the OTP is sent, the Browser Test can access the email body for use in the rest of the sign-up flow. + +### Step 3 - Extract the OTP from the email body + +The next step is to define a test step that extracts the OTP from the email body once it has been sent and store it in a variable. In this example, the variable is named `OTP_FROM_EMAIL` for later reference within the guide. + +1. Under **Add a variable** select **from Email body**. + +{{< img src="synthetics/guide/otp-from-email-body/otp_from_email.png" alt="OTP variable as used in the email body step" style="width:50%;" >}} + +2. Under **Parsing Regex** add in the regex pattern that corresponds to the OTP. + +Here are sample regex patterns to parse the OTP token from the email body: + +| **Type** | **Example** | **Regex Rule** | +|:-----------------------------------|:---------------------------------------------|:-----------------------------------------| +| 4 Digit OTP | 1234 | `/[0-9]{4,4}/` | +| 6 Digit OTP | 123456 | `/[0-9]{6,6}/` | +| 5 Character | abcde | `/[a-z]{5,5}/` | +| Alphanumerical OTP | a1b2cd34 | `/[a-zA-Z0-9]{8,8}/` | + +The OTP will be stored in the variable for use in your Browser Test. + +### Step 4 - Use a JavaScript assertion to insert the OTP + +JavaScript lets you trigger an event on a DOM element programmatically, making it possible to mimic user interactions or other events. Depending on how your input element is built, dispatching an event may be required to enable custom behaviors or testing event listeners tied to the element. You can use a Javascript assertion to add the saved OTP from the email and insert it into your application. + +1. Add a [JavaScript assertion step][5] to input the stored OTP variable, in our example `OTP_FROM_EMAIL`, into the appropriate field in your application. + + {{< img src="synthetics/guide/otp-from-email-body/js_assertion.png" alt="Javascript assertion" style="width:50%;" >}} + +2. Under **Custom JavaScript** add the extraction code. The code format varies depending on whether the OTP is inserted into a simple text field or respective input fields. Below are examples that illustrate both scenarios: + +#### Simple text field +To insert the OTP into a simple text field, use the following: +{{< code-block lang="java" disable_copy="false" >}} +function (vars, element) { + element.setAttribute('value', vars.OTP_FROM_EMAIL); + element.dispatchEvent(new Event("input", { bubbles: true })); + return true; +} +{{< /code-block >}} + +Below is a visual example of an OTP setup with a simple text field that the above query can be used for: + +{{< img src="synthetics/guide/otp-from-email-body/simple_otp.png" alt="example of an otp with a simple text field" style="width:40%;" caption="Example of an OTP with with a simple text field" >}} + +**Note**: For both of the Javascript examples, you need to replace the `OTP_FROM_EMAIL` field with the name of the email variable you defined if named differently in your browser test. + +#### Respective input fields +To insert the OTP into separately defined fields, use the following: +{{< code-block lang="java" disable_copy="false" >}} +function (vars) { + const inputList = document.querySelectorAll('input'); + inputList.forEach((element) => { + element.setAttribute('value', vars.OTP_FROM_EMAIL); + element.dispatchEvent(new Event("input", { bubbles: true })); + }); + return true; +} +{{< /code-block >}} + +Below is a visual example of an OTP setup with separately defined fields that the above query can be used for: + +{{< img src="synthetics/guide/otp-from-email-body/bubble_otp.png" alt="Example of an OTP with individual numerical fields" style="width:40%;" caption="Example of an OTP with respective input fields" >}} + +## Next steps + +Once the OTP is inserted and verified, you can continue adding steps to your Browser Test to verify that the user has completed the sign-up flow of your application such as adding an [assertion][6] that specific text is present on the page. +From here, you can continue [recording the rest of your Browser Test][9] and then verify your [Browser Test results][10]. + +## Further Reading + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /synthetics/browser_tests/?tab=requestoptions#create-local-variables +[2]: https://app.datadoghq.com/synthetics/settings/variables +[3]: https://app.datadoghq.com/synthetics/browser/create +[4]: /synthetics/settings/?tab=specifyvalue#global-variables +[5]: /synthetics/browser_tests/actions/?tab=testanelementontheactivepage#javascript +[6]: synthetics/browser_tests/actions/?tab=testanelementontheactivepage#assertion +[7]: /synthetics/browser_tests/actions/?tab=testanelementontheactivepage#email +[8]: /synthetics/guide/email-validation/#create-an-email-variable +[9]: /synthetics/browser_tests/actions?tab=testanelementontheactivepage +[10]: /synthetics/browser_tests/test_results +[11]: /synthetics/browser_tests/actions?tab=testanelementontheactivepage#automatically-recorded-steps diff --git a/content/en/synthetics/mobile_app_testing/mobile_app_tests/restricted_networks.md b/content/en/synthetics/mobile_app_testing/mobile_app_tests/restricted_networks.md index 045a98001ec65..6892e1fc3749d 100644 --- a/content/en/synthetics/mobile_app_testing/mobile_app_tests/restricted_networks.md +++ b/content/en/synthetics/mobile_app_testing/mobile_app_tests/restricted_networks.md @@ -41,6 +41,35 @@ The following is the list of IP ranges associated with the real devices used for `185.94.24.0/22`
`34.96.70.78`
+## Troubleshooting + +If you experience issues with Mobile App Testing on restricted networks, use the following troubleshooting guidelines. If you need further assistance, contact [Datadog support][1]. + +### Unable to launch recorder + +To launch the Mobile Application Testing (MAT) Recorder, Datadog needs to establish UDP/TCP TURN connections to enable WebRTC connections. If the user is behind a restrictive network (such as a strict firewall or VPN), these connections may fail, leading to a "Device unexpectedly disconnected" error: + +{{< img src="/mobile_app_testing/restricted_networks/device_disconnected_error.png" alt="Screenshot of launching a mobile device, displaying the disconnected error." style="width:100%;" >}} + +To check for successful UDP/TCP TURN connections, run a network test using a [Twilio Network Test][2]. The result of the test confirms whether connectivity to TURN servers is successful or not. If the connection is successful, you will see a message like "Successfully established a UDP connection to Twilio": + +{{< img src="/mobile_app_testing/restricted_networks/twilio_test.png" alt="Screenshot of a successful test using a Twilio Network Test." style="width:100%;" >}} + +If the test fails, Twilio generates a log output indicating errors due to an inability to establish a connection. For example: + +``` +[3:09:13 PM] Test "TURN UDP Connectivity" started... +[3:09:20 PM] Error: Error: Could not establish a UDP connection to Twilio within 5 seconds +[3:09:20 PM] Test "TURN TCP Connectivity" started... +[3:09:25 PM] Error: Error: Could not establish a TCP connection to Twilio within 5 seconds +[3:09:25 PM] Test "TURN TLS Connectivity" started... +[3:09:30 PM] Error: Error: Could not establish a TLS connection to Twilio within 5 seconds +[3:09:30 PM] Test "Bandwidth" started... +[3:09:35 PM] Error: Error: Could not establish a connection to Twilio within 5 seconds +``` + +[1]: /help +[2]: https://networktest.twilio.com/ ## Further reading diff --git a/content/en/synthetics/mobile_app_testing/mobile_app_tests/steps.md b/content/en/synthetics/mobile_app_testing/mobile_app_tests/steps.md index eabf25f3a6c86..abd733608edcb 100644 --- a/content/en/synthetics/mobile_app_testing/mobile_app_tests/steps.md +++ b/content/en/synthetics/mobile_app_testing/mobile_app_tests/steps.md @@ -36,13 +36,25 @@ Click the green **Device Connection Notification** button in the **Launch a devi ## Automatically recorded steps -Once you click **Start Recording**, Datadog automatically records any interactions you have with your device and displays them in the step list on the left. +After you click **Start Recording**, Datadog automatically records any interactions you have with your device and displays them in the step list on the left. To stop recording, click **Stop Recording**. ## Manually added steps -In addition to automatically creating steps by interacting directly with your device, you can manually create steps (using [assertions](#assertion) and [special actions](#special-actions)). You can also update steps by clicking into a previously recorded step or [reorder steps](#manage-step-order) by dragging them up and down the step list. +In addition to automatically creating steps by interacting directly with your device, you can manually create steps (using the [element inspector](#element-inspector), [assertions](#assertion), and [special actions](#special-actions)). You can also update steps by clicking into a previously recorded step or [reorder steps](#manage-step-order) by dragging them up and down the step list. + +### Element Inspector + +The Element Inspector allows you to visualize the element hierarchy, copy attributes, and target elements to generate interaction steps using XML. + +You can use this feature by going to the test recorder, launching a device, and clicking the Element Inspector button. Use the Element Inspector to: + +- **Visualize the element tree**: View the complete hierarchy of elements in your application for a clear, structured overview. +- **Copy attributes**: Copy attributes like element name or XPATH values directly from the inspector. +- **Target elements**: Generate steps such as _tap_ or _scroll_ by selecting the element within the element tree. + +{{< img src="mobile_app_testing/element_inspector_3.mp4" alt="Video showing the Element Inspector in Mobile App Tests" style="width:60%; height:300px;" video="true" >}} ### Assertion @@ -85,7 +97,7 @@ In addition to automatically recording steps based on your device interactions, Interacting with elements with a double tap on your mobile application records a step. -{{< img src="mobile_app_testing/test_steps/double_tap_2.mp4" alt="Recording a double tap step in a mobile test" video=true >}} +{{< img src="mobile_app_testing/test_steps/double_tap_2.mp4" alt="Recording a double tap step in a mobile test" style="width:60%" video=true >}} #### Extract variable from element diff --git a/content/en/tests/setup/javascript.md b/content/en/tests/setup/javascript.md index 9eb87cd3daddb..b4dfab8b47ae3 100644 --- a/content/en/tests/setup/javascript.md +++ b/content/en/tests/setup/javascript.md @@ -33,7 +33,7 @@ Supported test frameworks: | Test Framework | Version | Notes | |---|---|---| | Jest | >= 24.8.0 | Only `jsdom` (in the `jest-environment-jsdom` package) and `node` (in the `jest-environment-node` package) are supported as test environments. Custom environments like `@jest-runner/electron/environment` in `jest-electron-runner` are not supported.

Only [`jest-circus`][1] is supported as [`testRunner`][2].

[`test.concurrent`](#jests-testconcurrent) is not supported. | -| Mocha | >= 5.2.0 | Mocha >= 9.0.0 has [partial support](#known-limitations). | +| Mocha | >= 5.2.0 | | Cucumber | >= 7.0.0 | | Cypress | >= 6.7.0 | | Playwright | >= 1.18.0 | @@ -79,10 +79,10 @@ For more information, see the [JavaScript Tracer installation documentation][4]. {{< tabs >}} {{% tab "Jest/Mocha" %}} -Set the `NODE_OPTIONS` environment variable to `-r dd-trace/ci/init`. Run your tests as you normally would, specifying the environment where the tests are run in the `DD_ENV` environment variable. For example, set `DD_ENV` to `local` when running tests on a developer workstation, or `ci` when running them on a CI provider: +Set the `NODE_OPTIONS` environment variable to `-r dd-trace/ci/init`. Run your tests as you normally would, optionally specifying a name for your test session with `DD_TEST_SESSION_NAME`: ```bash -NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-app yarn test +NODE_OPTIONS="-r dd-trace/ci/init" DD_TEST_SESSION_NAME=unit-tests yarn test ``` **Note**: If you set a value for `NODE_OPTIONS`, make sure it does not overwrite `-r dd-trace/ci/init`. This can be done using the `${NODE_OPTIONS:-}` clause: @@ -137,10 +137,10 @@ For more information about custom measures, see the [Add Custom Measures Guide][ {{% /tab %}} {{% tab "Playwright" %}} -Set the `NODE_OPTIONS` environment variable to `-r dd-trace/ci/init`. Run your tests as you normally would, specifying the environment where the tests are run in the `DD_ENV` environment variable. For example, set `DD_ENV` to `local` when running tests on a developer workstation, or `ci` when running them on a CI provider: +Set the `NODE_OPTIONS` environment variable to `-r dd-trace/ci/init`. Run your tests as you normally would, optionally specifying a name for your test session with `DD_TEST_SESSION_NAME`: ```bash -NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-app yarn test +NODE_OPTIONS="-r dd-trace/ci/init" DD_TEST_SESSION_NAME=e2e-tests yarn test:e2e ``` **Note**: If you set a value for `NODE_OPTIONS`, make sure it does not overwrite `-r dd-trace/ci/init`. This can be done using the `${NODE_OPTIONS:-}` clause: @@ -220,10 +220,9 @@ The format of the annotations is the following, where `$TAG_NAME` is a *string* {{% /tab %}} {{% tab "Cucumber" %}} -Set the `NODE_OPTIONS` environment variable to `-r dd-trace/ci/init`. Run your tests as you normally would, specifying the environment where the tests are run in the `DD_ENV` environment variable. For example, set `DD_ENV` to `local` when running tests on a developer workstation, or `ci` when running them on a CI provider: - +Set the `NODE_OPTIONS` environment variable to `-r dd-trace/ci/init`. Run your tests as you normally would, optionally specifying a name for your test session with `DD_TEST_SESSION_NAME`: ```bash -NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-app yarn test +NODE_OPTIONS="-r dd-trace/ci/init" DD_TEST_SESSION_NAME=integration-tests yarn test:integration ``` **Note**: If you set a value for `NODE_OPTIONS`, make sure it does not overwrite `-r dd-trace/ci/init`. This can be done using the `${NODE_OPTIONS:-}` clause: @@ -311,7 +310,7 @@ module.exports = defineConfig({ e2e: { setupNodeEvents(on, config) { // your previous code is before this line - require('dd-trace/ci/cypress/plugin')(on, config) + return require('dd-trace/ci/cypress/plugin')(on, config) } } }) @@ -375,7 +374,7 @@ If you already defined a `pluginsFile`, initialize the instrumentation with: {{< code-block lang="javascript" filename="cypress/plugins/index.js" >}} module.exports = (on, config) => { // your previous code is before this line - require('dd-trace/ci/cypress/plugin')(on, config) + return require('dd-trace/ci/cypress/plugin')(on, config) } {{< /code-block >}} @@ -420,10 +419,10 @@ module.exports = (on, config) => { {{< /code-block >}} -Run your tests as you normally do, specifying the environment where test are being run (for example, `local` when running tests on a developer workstation, or `ci` when running them on a CI provider) in the `DD_ENV` environment variable. For example: +Run your tests as you normally would, optionally specifying a name for your test session with `DD_TEST_SESSION_NAME`: {{< code-block lang="shell" >}} -DD_ENV=ci DD_SERVICE=my-ui-app npm test +DD_TEST_SESSION_NAME=ui-tests yarn test:ui {{< /code-block >}} @@ -493,10 +492,10 @@ If the browser application being tested is instrumented using [Browser Monitorin `vitest` and `dd-trace` require Node.js>=18.19 or Node.js>=20.6 to work. -Set the `NODE_OPTIONS` environment variable to `--import dd-trace/register.js -r dd-trace/ci/init`. Run your tests as you normally would, specifying the environment where the tests are run in the `DD_ENV` environment variable. For example, set `DD_ENV` to `local` when running tests on a developer workstation, or `ci` when running them on a CI provider: +Set the `NODE_OPTIONS` environment variable to `--import dd-trace/register.js -r dd-trace/ci/init`. Run your tests as you normally would, optionally specifying a name for your test session with `DD_TEST_SESSION_NAME`: ```bash -NODE_OPTIONS="--import dd-trace/register.js -r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-app yarn test +NODE_OPTIONS="--import dd-trace/register.js -r dd-trace/ci/init" DD_TEST_SESSION_NAME=smoke-tests yarn test:smoke ``` **Note**: If you set a value for `NODE_OPTIONS`, make sure it does not overwrite `--import dd-trace/register.js -r dd-trace/ci/init`. This can be done using the `${NODE_OPTIONS:-}` clause: @@ -533,6 +532,7 @@ jobs: my-job: name: Run tests runs-on: ubuntu-latest + # Invalid NODE_OPTIONS env: NODE_OPTIONS: -r dd-trace/ci/init steps: @@ -599,6 +599,12 @@ For more information, see [Code Coverage][6]. The following is a list of the most important configuration settings that can be used with the tracer. +`test_session.name` +: Use it to identify a group of tests, such as `integration-tests`, `unit-tests` or `smoke-tests`.
+**Environment variable**: `DD_TEST_SESSION_NAME`
+**Default**: (CI job name + test command)
+**Example**: `unit-tests`, `integration-tests`, `smoke-tests` + `service` : Name of the service or library under test.
**Environment variable**: `DD_SERVICE`
@@ -730,7 +736,7 @@ The payload to be published is a dictionary `` of tags or When the test start and end channels are in your code, run your testing framework like you normally do, including the following environment variables: ```shell -NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-custom-framework-tests yarn run-my-test-framework +NODE_OPTIONS="-r dd-trace/ci/init" DD_TEST_SESSION_NAME=custom-tests yarn run-my-test-framework ``` @@ -795,6 +801,33 @@ forEach([ When you use this approach, both the testing framework and Test Optimization can tell your tests apart. +### Test session name `DD_TEST_SESSION_NAME` + +Use `DD_TEST_SESSION_NAME` to define the test session name for your tests (`test_session.name` tag). Use this to identify a group of tests. Examples of values for this tag would be: + +- `unit-tests` +- `integration-tests` +- `smoke-tests` +- `flaky-tests` +- `ui-tests` +- `backend-tests` + +If `DD_TEST_SESSION_NAME` is not specified, the default value used is a combination of: + +- CI job name +- Command used to run the tests (such as `yarn test`) + +The test session name should be unique within a repository to help you distinguish different groups of tests. + +#### When to use `DD_TEST_SESSION_NAME` + +If your tests are run with commands that include a dynamic string, such as: + +- `yarn test --temp-dir=/var/folders/t1/rs2htfh55mz9px2j4prmpg_c0000gq/T` +- `pnpm vitest --temp-dir=/var/folders/t1/rs2htfh55mz9px2j4prmpg_c0000gq/T` + +The default value for the test session name will be unstable. It is recommended to use `DD_TEST_SESSION_NAME` in this case. + ## Further reading {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/en/tests/troubleshooting/_index.md b/content/en/tests/troubleshooting/_index.md index 22fd1f49580ab..41ae0450b0f71 100644 --- a/content/en/tests/troubleshooting/_index.md +++ b/content/en/tests/troubleshooting/_index.md @@ -153,6 +153,24 @@ It is likely that the [test case configuration][13] is unstable because one or m The best way to fix this is to make sure that the test parameters are the same between test runs. +## Session history, performance or code coverage tab only show a single execution + +This is likely caused by an unstable test session fingerprint. The default value for the test session fingerprint includes the test command, so an unstable test command might cause the test session fingerprint to be unstable. Some examples of unstable test commands include: + +- `yarn test --temp-dir=/var/folders/t1/rs2htfh55mz9px2j4prmpg_c0000gq/T` +- `mvn test --temp-dir=/var/folders/t1/rs2htfh55mz9px2j4prmpg_c0000gq/T` +- `bundle exec rspec --temp-dir=/var/folders/t1/rs2htfh55mz9px2j4prmpg_c0000gq/T` +- `dotnet test --results-directory /var/folders/t1/rs2htfh55mz9px2j4prmpg_c0000gq/T` + +This can be solved by using the `DD_TEST_SESSION_NAME` environment variable. Use `DD_TEST_SESSION_NAME` to identify a group of tests. Example values for this tag include: + +- `unit-tests` +- `integration-tests` +- `smoke-tests` +- `flaky-tests` +- `ui-tests` +- `backend-tests` + ## Further reading {{< partial name="whats-next/whats-next.html" >}} diff --git a/content/en/tracing/trace_collection/library_config/go.md b/content/en/tracing/trace_collection/library_config/go.md index 82d4ff44d6b50..2144aa4c1012d 100644 --- a/content/en/tracing/trace_collection/library_config/go.md +++ b/content/en/tracing/trace_collection/library_config/go.md @@ -158,8 +158,8 @@ A JSON array of objects. Each object must have a `"sample_rate"`. The `"name"`,` - Set the sample rate to 100% for services that have a `priority` tag with the value `high`: `'[{"tags": {"priority":"high"}, "sample_rate": 1}]'`. `DD_TAGS` -: **Default**: []
-A list of default tags to be added to every span, metric, and profile. Tags can be separated by commas or spaces, for example: `layer:api,team:intake,key:value` or `layer:api team:intake key:value`. +: **Default**: none
+A list of default tags to be added to every span, metric, and profile. Tags can be separated by commas or spaces, for example: `layer:api,team:intake,key:value` or `layer:api team:intake key:value`. Key-value pairs must be of string-convertible types. ### Agent diff --git a/content/en/tracing/trace_collection/tracing_naming_convention/_index.md b/content/en/tracing/trace_collection/tracing_naming_convention/_index.md index 05a1b3812b622..7a4e8a2bbdb2c 100644 --- a/content/en/tracing/trace_collection/tracing_naming_convention/_index.md +++ b/content/en/tracing/trace_collection/tracing_naming_convention/_index.md @@ -63,7 +63,7 @@ Span attributes are the content of the span, collected with automatic or manual - `http.status_code` - `error.message` -To query span attributes, use the the `@` character followed by the attribute name in the search box. For example, `@http.url`. +To query span attributes, use the `@` character followed by the attribute name in the search box. For example, `@http.url`. To find span attributes in Datadog, go to the **Info** tab in the Trace side panel: diff --git a/content/es/cloudcraft/components-aws/efs.md b/content/es/cloudcraft/components-aws/efs.md new file mode 100644 index 0000000000000..2755640fa9931 --- /dev/null +++ b/content/es/cloudcraft/components-aws/efs.md @@ -0,0 +1,78 @@ +--- +title: Componente EFS +--- +## Información general + +Utiliza el componente de bloque EFS para representar sistemas de archivos elásticos de tu arquitectura de Amazon Web Services. + +{{< img src="cloudcraft/components-aws/efs/component-efs-diagram.png" alt="Captura de pantalla de un diagrama isométrico de Cloudcraft que muestra el componente de AWS 'EFS'." responsive="true" style="width:60%;">}} + +## Barra de herramientas + +Utiliza la barra de herramientas para configurar y personalizar el componente. Dispones de las siguientes opciones: + +- **Color**: selecciona un color predefinido o ingresa el valor hexadecimal del color para el componente y su énfasis. El componente puede usar el mismo color para la vista 2D y 3D, o colores diferentes para cada una. +- **Storage** (Almacenamiento): la clase de almacenamiento utilizada para la carga de trabajo del sistema de archivos. +- **Storage (GiB)** (Almacenamiento (GiB)): cantidad de datos almacenados al mes. +- **Access Requests (GiB)** (Solicitudes de acceso (GiB)): cantidad de datos solicitados al mes. Solo disponible para las clases de almacenamiento Infrequent Access. +- **Throughput mode** (Modo de rendimiento): selecciona un modo de rendimiento para el sistema de archivos. +- **Throughput (MiB/s)** (Rendimiento (MiB/s)): cantidad de rendimiento adicional proporcionado. Solo disponible para el modo de rendimiento aprovisionado. + +## API + +Utiliza la [API de Cloudcraft][1] para acceder mediante programación y renderizar tus diagramas de arquitectura como objetos JSON. + +### Esquema + +A continuación, se muestra un ejemplo JSON de un componente EFS: + +```json +{ + "type": "efs", + "id": "c7031016-107f-4bc7-a18a-b86321a135b7", + "region": "us-east-1", + "availabilityZone": "us-east-1a", + "mapPos": [1,2], + "usageGb": 10, + "readWriteGb": 0, + "infrequentAccess": false, + "throughputMode": "bursting", + "throughput": 0, + "color": { + "isometric": "#e05243", + "2d": "#3f8624" + }, + "accentColor": { + "isometric": "#ffffff", + "2d": "#ffffff" + }, + "link": "blueprint://33a8bf46-7326-4999-ba0a-789bcd94f0a2", + "locked": true +} +``` + +- **type: efs**: el tipo de componente. +- **id: string**: un identificador único para el componente en el formato `uuid`. +- **region: string**: la región de AWS en la que se despliega el componente EFS. Se admiten todas las regiones globales excepto las regiones `cn-`. +- **availabilityZone: string**: la zona de disponibilidad de AWS en la que está desplegado el sistema de archivos elástico. Solo aplicable para una zona de almacenamiento. +- **mapPos: [number, number]**: la posición del componente en el proyecto, expresada como un par de coordenadas x e y. +- **usageGb: number**: la cantidad de datos almacenados en EFS por mes, en gibibytes. +- **readWriteGb: number**: la cantidad de datos solicitados al mes. Sólo aplicable si `infrequentAccess` está configurado como `true`. +- **infrequentAccess: boolean**: si es `true`, el sistema de archivos elástico utiliza la clase de almacenamiento Infrequent Access. Por defecto es `false`. +- **throughputMode: string**: selecciona un modo de rendimiento para el sistema de archivos elástico. Los valores aceptados son `bursting` o `provisioned`. +- **throughput: number**: la cantidad de rendimiento adicional en mebibytes por segundos al mes aprovisionado al sistema de archivos, basado en su tamaño. Sólo aplicable si `throughputMode` se establece en `provisioned`. +- **color: object**: el color de relleno para el cuerpo del componente. + - **isometric: string**: el color de relleno para el componente en la vista 3D. Debe ser un color hexadecimal. + - **2d: string**: el color de relleno para el componente en la vista 2D. Debe ser un color hexadecimal. +- **accentColor: object**: el color de énfasis utilizado para mostrar el logotipo del componente en el bloque. + - **isometric: string**: el color de énfasis del componente en la vista 3D. Debe ser un color hexadecimal. + - **2d: string**: el color de énfasis del componente en la vista 2D. Debe ser un color hexadecimal. +- **link: uri**: vincula el componente a otro diagrama con el formato `blueprint://ID` o a un sitio web externo con el formato `https://LINK`. +- **locked: boolean**: si es `true`, los cambios realizados en el componente mediante la aplicación se desactivan hasta que se desbloquean. + +El componente EFS puede añadirse a [VPCs][2], [grupos de seguridad][3] y [subredes][4]. + +[1]: https://developers.cloudcraft.co/ +[2]: /es/cloudcraft/components-aws/vpc/ +[3]: /es/cloudcraft/components-aws/security-group/ +[4]: /es/cloudcraft/components-aws/subnet/ \ No newline at end of file diff --git a/content/es/ddsql_editor/guide/ddsql_use_cases.md b/content/es/ddsql_editor/guide/ddsql_use_cases.md new file mode 100644 index 0000000000000..4260a9b30f9f0 --- /dev/null +++ b/content/es/ddsql_editor/guide/ddsql_use_cases.md @@ -0,0 +1,86 @@ +--- +aliases: +- /es/dashboards/guide/ddsql_use_cases +further_reading: +- link: ddsql_editor/ + tag: Documentation + text: Más información sobre el editor DDSQL +title: Consultas y casos de uso habituales de DDSQL +--- + +## Consultas generales +### Enumerar todas las bibliotecas en los servicios en producción + +{{< code-block lang="sql" disable_copy="false">}} +SELECT + c.service_name, + c.team, + lib.library_name, + lib.eol, + lib.last_commit, + lib.newer_versions_number, + lib.library_version, + lib.latest_version, + lib.ecosystem, + lib.language, + lib.license, + lib.license_type +FROM service_definition c +JOIN library lib ON lib.asset_name = c.service_name +WHERE + lib.env = 'production' + AND lib.relation = 'DIRECT' + AND LOWER(c.domain) = 'domain_name' + AND LOWER(c.vertical) = 'account' + AND LOWER(c.type) = 'service' +ORDER BY lib.newer_versions_number DESC +{{< /code-block >}} + +### Enumerar los servicios que ejecutan una versión antigua del rastreador + +{{< code-block lang="sql" disable_copy="false">}} +SELECT * +FROM service_config +WHERE client_library_version < '1.31.0'; +{{< /code-block >}} + +## AWS + +### Enumerar las instancias de RDS que requieren rotación de certificados SSL/TLS + +{{< code-block lang="sql" disable_copy="false">}} +SELECT account_id, + aws_organisation, + aws_environment db_instance_identifier, + display_name, + ca_certificate_identifier, + engine, + engine_version, + tags +FROM aws_rds_instance +WHERE ca_certificate_identifier like 'rds-ca-2019' +{{< /code-block >}} + +### Enumerar las snapshots de EBS en progreso + +{{< code-block lang="sql" disable_copy="false">}} +SELECT description, + account_id, + progress +FROM aws_ebs_snapshot +WHERE LOWER(state) != 'completed' + and LOWER(state) != 'available' +{{< /code-block >}} + +### Enumerar funciones lambda con un tiempo de ejecución desactualizado específico (en este caso, Python 2.7) + +{{< code-block lang="sql" disable_copy="false">}} +SELECT * +FROM aws_lambda_function +WHERE runtime = 'python2.7' +LIMIT 100; +{{< /code-block >}} + +## Referencias adicionales + +{{< partial name="whats-next/whats-next.html" >}} \ No newline at end of file diff --git a/content/es/integrations/docontrol.md b/content/es/integrations/docontrol.md new file mode 100644 index 0000000000000..882846ade8ea6 --- /dev/null +++ b/content/es/integrations/docontrol.md @@ -0,0 +1,164 @@ +--- +app_id: docontrol +app_uuid: 7622c46e-bade-44ce-99e1-a3529bf4fc04 +assets: {} +author: + homepage: https://www.docontrol.io/ + name: DoControl + sales_email: sales@docontrol.io + support_email: support@docontrol.io +categories: +- automatización +- recopilación de logs +- seguridad +custom_kind: integración +dependencies: +- https://github.com/DataDog/integrations-extras/blob/master/docontrol/README.md +display_on_public_website: true +draft: false +git_integration_title: docontrol +integration_id: docontrol +integration_title: DoControl +integration_version: '' +is_public: true +manifest_version: 2.0.0 +name: docontrol +public_title: DoControl +short_description: 'Seguridad de datos SaaS: modernización de DLP y CASB para proteger + los datos SaaS' +supported_os: +- linux +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Category::Automation + - Category::Log Collection + - Category::Security + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + - Offering::Integration + configuration: README.md#Setup + description: 'Seguridad de datos SaaS: modernización de DLP y CASB para proteger + los datos SaaS' + media: + - caption: Utiliza los flujos de trabajo automatizados de seguridad de DoControl + para crear una lógica de negocio sofisticada, flexible y detallada con las capacidades + de incidencias y logs de Datadog. + image_url: images/dc-dd-01.png + media_type: imagen + - caption: DoControl consolida los eventos de actividad del usuario final y los + metadatos de activos en todas tus aplicaciones SaaS para proporcionar una vista + centralizada de toda la actividad SaaS y la exposición de activos. + image_url: images/dc-dd-02.png + media_type: imagen + - caption: DoControl proporciona información práctica y visibilidad de todo tu ecosistema + de aplicaciones SaaS. + image_url: images/dc-dd-03.png + media_type: imagen + - caption: DoControl se integra con las aplicaciones SaaS más populares en múltiples + segmentos, incluyendo aplicaciones que entran en las categorías de Colaboración, + CRM, Comunicación, Herramientas de desarrollo, RRHH, IdP, EDR y más. + image_url: images/dc-dd-04.png + media_type: image + - caption: DoControl proporciona un amplio catálogo de manuales preestablecidos + y listos para usar, que representan modelos de amenazas comunes y casos de uso + críticos para el funcionamiento que proteger. + image_url: images/dc-dd-05.png + media_type: imagen + - caption: El mecanismo de detección de anomalías en todo SaaS de DoControl activa + alertas contextuales para reducir el tiempo de respuesta a incidencias y proporcionar + medidas de corrección automática. + image_url: images/dc-dd-06.png + media_type: imagen + - caption: DoControl proporciona visibilidad y permite remediar los inventarios + de todas tus aplicaciones SaaS, incluidas las aplicaciones de terceros (aplicaciones + OAuth), un importante vector de amenazas. + image_url: images/dc-dd-07.png + media_type: imagen + overview: README.md#Overview + support: README.md#Support + title: DoControl +--- + + + + +## Información general + +Esta integración permite a los clientes de [DoControl][1] reenviar sus logs y eventos relacionados con DoControl a Datadog a través de flujos de trabajo de seguridad automatizados. + +## Configuración + +Para configurar esta integración, debes tener una cuenta activa de [DoControl][2]. También debes tener [permisos de administrador][3] adecuados en Datadog. + +### Instalación + +No es necesaria ninguna instalación en tu host. + +### Utilizar las acciones de Datadog en los flujos de trabajo de DoControl + +Debes crear una clave de API de Datadog y una clave de aplicación para utilizarlas como parámetros de entrada para las acciones de Datadog en DoControl. + +#### Crear una clave de API en Datadog + +1. Utiliza la documentación [Añadir una clave de API][4] de Datadog para crear una clave de API. Asigna a la clave un nombre significativo, como `DoControl`. +2. Copia la página `Key` y guárdala. + + +#### Crear una clave de aplicación en Datadog + +1. Utiliza la documentación [Añadir claves de aplicación][5] de Datadog para crear una clave de aplicación. +2. Copia y guarda tu clave de aplicación. + +![Get_DD_Application_Key][6] + + +#### Crear una integración de Datadog en DoControl + +1. En DoControl, navega a [Dashboard->Settings->Workflows->Secrets][7] (Dashboard -> Configuración -> Flujos de trabajo -> Secretos) y añade tu clave de API de Datadog como un nuevo secreto. + + ![DC_Secrets][8] + +2. Crea un nuevo flujo de trabajo a partir de un [**manual**][9] preestablecido o [**desde cero**][10]. + + ![DC_WF_Create][11] + +3. Diseña y edita tu lógica de negocio arrastrando y soltando acciones en el lienzo, configurando los pasos y conectándolos. + +4. Desde la barra de acciones, en **Utilities** (Utilidades), puedes arrastrar y soltar acciones de Datadog en tu flujo de trabajo, como **Send logs** (Enviar logs) o **Create incident** (Crear incidencia). + + ![DC_Utils][12] + +5. Configura las acciones para hacer referencia a la DD-API-KEY almacenada como secreto en el paso 1 anterior, y la DD-APPLICATION-KEY obtenida en [Crear una clave de aplicación en Datadog](#create-an-application-key-in-datadog). + + ![DC_DD_conf][13] + +Más información sobre DoControl en la [documentación de DoControl][14]. + + + + +## Compatibilidad + +¿Necesitas ayuda? Ponte en contacto con el [soporte de Datadog][15] o el [soporte de DoControl][16]. + + +[1]: https://www.docontrol.io/ +[2]: https://www.docontrol.io/demo +[3]: https://docs.datadoghq.com/es/account_management/rbac/permissions/ +[4]: https://docs.datadoghq.com/es/account_management/api-app-keys/#add-an-api-key-or-client-token +[5]: https://docs.datadoghq.com/es/account_management/api-app-keys/#add-application-keys +[6]: https://raw.githubusercontent.com/DataDog/integrations-extras/master/docontrol/images/Get_DD_Application_Key.png +[7]: https://app.docontrol.io/settings/workflows?tab=Secrets +[8]: https://raw.githubusercontent.com/DataDog/integrations-extras/master/docontrol/images/DC_Secrets.png +[9]: https://app.docontrol.io/workflowV2/playbooks?filter=by_use_case&use_case=all +[10]: https://app.docontrol.io/workflowV2/workflow/new/workflow-editor +[11]: https://raw.githubusercontent.com/DataDog/integrations-extras/master/docontrol/images/DC_WF_Create.png +[12]: https://raw.githubusercontent.com/DataDog/integrations-extras/master/docontrol/images/DC_Utils.png +[13]: https://raw.githubusercontent.com/DataDog/integrations-extras/master/docontrol/images/DC_DD_conf.png +[14]: https://docs.docontrol.io/docontrol-user-guide/the-docontrol-console/workflows-beta/designing-and-editing-workflows/defining-workflow-and-action-settings#action-categories +[15]: https://docs.datadoghq.com/es/help/ +[16]: mailto:support@docontrol.io \ No newline at end of file diff --git a/content/es/integrations/doctor_droid_doctor_droid.md b/content/es/integrations/doctor_droid_doctor_droid.md new file mode 100644 index 0000000000000..ef6911f1a0a4f --- /dev/null +++ b/content/es/integrations/doctor_droid_doctor_droid.md @@ -0,0 +1,110 @@ +--- +algolia: + subcategory: Integraciones del Marketplace +app_id: doctor-droid-doctor-droid +app_uuid: 21cab2f6-0f10-4302-9b61-7d99433a9294 +assets: {} +author: + homepage: https://drdroid.io/ + name: Doctor Droide + sales_email: sales@drdroid.io + support_email: support@drdroid.io + vendor_id: doctor-droid +categories: +- ia/ml +- automatización +- rum +- events +- marketplace +custom_kind: integración +dependencies: [] +display_on_public_website: true +draft: false +git_integration_title: doctor_droid_doctor_droid +integration_id: doctor-droid-doctor-droid +integration_title: Doctor Droide +integration_version: '' +is_public: true +legal_terms: + eula: assets/eula.pdf +manifest_version: 2.0.0 +name: doctor_droid_doctor_droid +pricing: +- billing_type: tag_count + includes_assets: false + metric: datadog.marketplace.doctor-droid.usage + product_id: doctor-droid + short_description: 10$ por cada 100 consultas (gratuito para las 100 primeras consultas) + tag: consultas + unit_label: consultas + unit_price: 10.0 +public_title: Doctor Droide +short_description: Análisis automatizado de causa raíz, inteligencia de guardia y + automatización del manual +supported_os: +- linux +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Category::AI/ML + - Category::Automation + - Category::Incidents + - Category::Alerting + - Category::Marketplace + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + - Offering::Software License + configuration: README.md#Setup + description: Análisis automatizado de causa raíz, inteligencia de guardia y automatización + del manual + media: + - caption: Añadir la integración de slack de Doctor Droide en tu espacio de trabajo + image_url: images/1.png + media_type: imagen + - caption: Añadir el webhook de Doctor Droid como destino a tu monitor + image_url: images/2.png + media_type: image + - caption: Conectar cualquiera de tus cuadernos de estrategias existentes en Doctor + Droid + image_url: images/3.png + media_type: imagen + - caption: Recibe la respuesta del análisis del cuaderno de estrategias, directamente + en tu bandeja de entrada. + image_url: images/4.png + media_type: image + overview: README.md#Overview + support: README.md#Support + title: Doctor Droid + uninstallation: README.md#Uninstallation +--- + + + + +## Información general + +En Doctor Droid, estamos creando herramientas para ayudar a los equipos a resolver retos en su monitorización y observabilidad. Los cuadernos de estrategias de Doctor Droid son una herramienta de automatización diseñada para eliminar el trabajo de los ingenieros agilizando las tareas manuales repetitivas. + +Doctor Droid se integra a la perfección con múltiples orígenes de datos y proporciona una plataforma para crear potentes cuadernos de estrategias definidas por el usuario. Tanto si se trata de búsquedas en logs como de consultas en bases de datos, la monitorización de métricas o si necesitas una visión consolidada de tus métricas operativas, Doctor Droid cubre todas tus necesidades. + +Doctor Droid mejora las alertas y analiza automáticamente tu cuenta de Datadog en busca de otras anomalías en todo tu sistema. + +**¿Cómo funciona?** + +1. Instalar la [integración de Doctor Droid][1] +2. Define los pasos de la investigación en Doctor Droid como un cuaderno de estrategias (por ejemplo, define pasos como check de métricas descendentes, check de despliegues recientes, check de logs de error y así sucesivamente). +3. Añade un webhook de Doctor Droid a tu monitor. +4. Obtén automáticamente un resumen de la investigación e información cuando se active tu monitor. + +## Asistencia + +Puedes ponerte en contacto con nuestro equipo en support@drdroid.io para cualquier consulta de asistencia. + + +[1]: https://app.datadoghq.com/integrations/doctordroid + +--- +Esta aplicación está disponible a través de Datadog Marketplace y cuenta con el apoyo de un socio tecnológico de Datadog. Para utilizarla, adquiere esta aplicación en Marketplace. \ No newline at end of file diff --git a/content/es/integrations/guide/deprecated-oracle-integration.md b/content/es/integrations/guide/deprecated-oracle-integration.md new file mode 100644 index 0000000000000..91e28d2102a4a --- /dev/null +++ b/content/es/integrations/guide/deprecated-oracle-integration.md @@ -0,0 +1,497 @@ +--- +title: Configuración de la integración de Oracle en versiones anteriores a 7.50.1 + del Agent +--- + +## Información general + +En esta guía, se describe la configuración de la integración de Oracle en versiones anteriores a 7.50.1 del Datadog Agent. Para obtener más información sobre la integración de Oracle, incluida la configuración en versiones más recientes del Agent, consulta la [documentación sobre la integración de Oracle][1]. + +## Configuración + +### Instalación + +#### Requisito previo + +Para utilizar la integración de Oracle puedes utilizar el cliente nativo (no se requieren pasos adicionales de instalación) o el Oracle Instant Client. + +##### Oracle Instant Client + +{{< tabs >}} +{{% tab "Linux" %}} +1. Sigue las instrucciones de [Instalación de Oracle Instant Client para Linux][1]. + +2. Comprueba lo siguiente: + - Que los paquetes *Instant Client Basic* y *SDK* estén instalados. Encuéntralos en la [página de descargas][2] de Oracle. + + Una vez instaladas las bibliotecas de Instant Client, asegúrate de que el enlazador en tiempo de ejecución pueda encontrar las bibliotecas. Por ejemplo, utiliza `ldconfig`: + + ```shell + # Put the library location in an ld configuration file. + + sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > \ + /etc/ld.so.conf.d/oracle-instantclient.conf" + + # Update the bindings. + + sudo ldconfig + ``` + + - Ambos paquetes se descomprimen en un único directorio que está disponible para todos los usuarios de la máquina en cuestión (por ejemplo, `/opt/oracle`): + ```shell + mkdir -p /opt/oracle/ && cd /opt/oracle/ + unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip + unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip + ``` + +[1]: https://docs.oracle.com/en/database/oracle/oracle-database/21/lacli/install-instant-client-using-zip.html +[2]: https://www.oracle.com/technetwork/database/features/instant-client/index.htm +{{% /tab %}} + +{{% tab "Windows" %}} +1. Sigue la [Guía de instalación de Oracle Windows ][1] para configurar Oracle Instant Client. + +2. Comprueba lo siguiente: + - Que se haya instalado [Microsoft Visual Studio 2017 Redistributable][2] o la versión adecuada para Oracle Instant Client. + + - Que se instalen los paquetes *Instant Client Basic* y *SDK* de la [página de descargas][18] de Oracle. + + - Que ambos paquetes se extraigan en un único directorio que está disponible para todos los usuarios de la máquina en cuestión (por ejemplo, `C:\oracle`). + +[1]: https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html#ic_winx64_inst +[2]: https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0 +{{% /tab %}} +{{< /tabs >}} + +##### Controlador JDBC + +*NOTA*: Este método sólo funciona en Linux. + +Java 8 o una versión posterior es necesario en tu sistema para JPype, una de las bibliotecas utilizadas por el Agent cuando se utiliza el controlador JDBC. + +Una vez instalado, sigue los siguientes pasos: + +1. [Descarga el controlador JDBC][4] archivo JAR. +2. Añade la ruta al archivo descargado en tu `$CLASSPATH` o en el archivo de check de configuración en `jdbc_driver_path` (consulta el [ejemplo de oracle.yaml][5]). + +#### Creación de usuarios de Datadog + +{{< tabs >}} +{{% tab "Standalone" %}} +Crea un usuario de `datadog` de sólo lectura con acceso adecuado a tu servidor de la base de datos de Oracle. Conéctate a tu base de datos de Oracle con un usuario administrativo, como `SYSDBA` o `SYSOPER`, y ejecuta: + +```text +-- Enable Oracle Script. +ALTER SESSION SET "_ORACLE_SCRIPT"=true; + +-- Create the datadog user. Replace the password placeholder with a secure password. +CREATE USER datadog IDENTIFIED BY ; + +-- Grant access to the datadog user. +GRANT CONNECT TO datadog; +GRANT SELECT ON GV_$PROCESS TO datadog; +GRANT SELECT ON gv_$sysmetric TO datadog; +GRANT SELECT ON sys.dba_data_files TO datadog; +GRANT SELECT ON sys.dba_tablespaces TO datadog; +GRANT SELECT ON sys.dba_tablespace_usage_metrics TO datadog; +``` + +**Nota**: Si estás utilizando Oracle 11g, no es necesario ejecutar la siguiente línea: + +```text +ALTER SESSION SET "_ORACLE_SCRIPT"=true; +``` +{{% /tab %}} + +{{% tab "Multi-tenant" %}} +##### Oracle 12c o 19c + +Loguea en la base de datos raíz como administrador para crear un usuario `datadog` y conceder permisos: + +```text +alter session set container = cdb$root; +CREATE USER c##datadog IDENTIFIED BY password CONTAINER=ALL; +GRANT CREATE SESSION TO c##datadog CONTAINER=ALL; +Grant select any dictionary to c##datadog container=all; +GRANT SELECT ON GV_$PROCESS TO c##datadog CONTAINER=ALL; +GRANT SELECT ON gv_$sysmetric TO c##datadog CONTAINER=ALL; +``` +{{% /tab %}} +{{< /tabs >}} + +### Configuración + +{{< tabs >}} +{{% tab "host" %}} +Para configurar este check para un Agent que se ejecuta en un host: + +1. Edita el archivo `oracle.d/conf.yaml`, en la carpeta `conf.d/` en la raíz de tu [directorio de la configuración del Agent][2]. Actualiza `server` y `port` para configurar los administradores en el monitor. Consulta el [oracle.d/conf.yaml de ejemplo][1] para conocer todas las opciones disponibles de configuración. + + ```yaml + init_config: + + instances: + ## @param server - string - required + ## The IP address or hostname of the Oracle Database Server. + # + - server: localhost:1521 + + ## @param service_name - string - required + ## The Oracle Database service name. To view the services available on your server, + ## run the following query: `SELECT value FROM v$parameter WHERE name='service_names'` + # + service_name: + + ## @param username - string - required + ## The username for the Datadog user account. + # + username: + + ## @param password - string - required + ## The password for the Datadog user account. + # + password: + ``` + +2. [Reinicia el Agent][3]. + + +#### Sólo consultas personalizadas + +Para omitir checks de métricas predeterminados para una instancia y sólo ejecutar consultas personalizadas con un usuario recopilador de métricas existente, inserta la etiqueta (tag) `only_custom_queries` con un valor de `true`. Esto permite que una instancia configurada de la integración de Oracle evite que se ejecuten las métricas del sistema, del proceso y del espacio de tablas y permite que se ejecuten consultas personalizadas sin tener los permisos descritos en la sección [Creación de usuario de Datadog](#datadog-user-creation). Si se omite esta entrada de configuración, el usuario que se especifique debe tener esos permisos de tabla para ejecutar una consulta personalizada. + +```yaml +init_config: + +instances: + ## @param server - string - required + ## The IP address or hostname of the Oracle Database Server. + # + - server: localhost:1521 + + ## @param service_name - string - required + ## The Oracle Database service name. To view the services available on your server, + ## run the following query: + ## `SELECT value FROM v$parameter WHERE name='service_names'` + # + service_name: "" + + ## @param username - string - required + ## The username for the user account. + # + username: + + ## @param password - string - required + ## The password for the user account. + # + password: "" + + ## @param only_custom_queries - string - optional + ## Set this parameter to any value if you want to only run custom + ## queries for this instance. + # + only_custom_queries: true +``` + +#### Conexión a Oracle a través de TCPS + +1. Para conectarte a Oracle a través de TCPS (TCP con SSL), quita la marca de comentario de la opción de configuración `protocol` y selecciona `TCPS`. Actualiza la opción `server` para configurar el servidor TCPS en el monitor. + + ```yaml + init_config: + + instances: + ## @param server - string - required + ## The IP address or hostname of the Oracle Database Server. + # + - server: localhost:1522 + + ## @param service_name - string - required + ## The Oracle Database service name. To view the services available on your server, + ## run the following query: + ## `SELECT value FROM v$parameter WHERE name='service_names'` + # + service_name: "" + + ## @param username - string - required + ## The username for the user account. + # + username: + + ## @param password - string - required + ## The password for the user account. + # + password: "" + + ## @param protocol - string - optional - default: TCP + ## The protocol to connect to the Oracle Database Server. Valid protocols include TCP and TCPS. + ## + ## When connecting to Oracle Database via JDBC, `jdbc_truststore` and `jdbc_truststore_type` are required. + ## More information can be found from Oracle Database's whitepaper: + ## + ## https://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf + # + protocol: TCPS + ``` + +2. Actualiza `sqlnet.ora`, `listener.ora` y `tnsnames.ora` para permitir conexiones a TCPS en tu base de datos de Oracle. + +##### TCPS a través de Oracle sin JDBC + +Si no utilizas JDBC, comprueba que el Datadog Agent pueda conectarse a tu base de datos. Utiliza la herramienta de línea de comandos `sqlplus` con la información introducida en tus opciones de configuración: + +```shell +sqlplus /@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST=)(PORT=))(SERVICE_NAME=))) +``` + +Cuando utilices la conexión a [Oracle Instant Client][5], mueve tres archivos al directorio `network/admin` de las bibliotecas del cliente utilizadas por tu aplicación: + * `tnsnames.ora`: Asigna los nombres de servicios de red utilizados para las cadenas de conexión de la aplicación a tus servicios de la base de datos. + * `sqlnet.ora`: Configura los parámetros de la red de Oracle. + * `cwallet.sso`: Activa las conexiones SSL o TLS. Mantén este archivo seguro. + +##### TCPS a través de JDBC + +Si te conectas a la base de datos de Oracle mediante JDBC, también deberás especificar `jdbc_truststore_path`, `jdbc_truststore_type` y `jdbc_truststore_password` (opcional) si existe una contraseña en el almacén de confianza. + +**Nota**: Los almacenes de confianza de `SSO` no requieren contraseñas. + +```yaml + # In the `instances:` section + ... + + ## @param jdbc_truststore_path - string - optional + ## The JDBC truststore file path. + # + jdbc_truststore_path: /path/to/truststore + + ## @param jdbc_truststore_type - string - optional + ## The JDBC truststore file type. Supported truststore types include JKS, SSO, and PKCS12. + # + jdbc_truststore_type: SSO + + ## @param jdbc_truststore_password - string - optional + ## The password for the truststore when connecting via JDBC. + # + # jdbc_truststore_password: +``` + +Para obtener más información sobre la conexión a la base de datos de Oracle a través de TCPS en JDBC, consulta el [documento de Oracle][4] oficial. + +[1]: https://github.com/DataDog/integrations-core/blob/master/oracle/datadog_checks/oracle/data/conf.yaml.example +[2]: https://docs.datadoghq.com/es/agent/guide/agent-configuration-files/#agent-configuration-directory +[3]: https://docs.datadoghq.com/es/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[4]: https://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf +[5]: https://python-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#install-the-wallet-and-network-configuration-files + +{{% /tab %}} + +{{% tab "Containerized" %}} +Para entornos con contenedores, consulta las [Plantillas de integración de Autodiscovery][1] para obtener orientación sobre la aplicación de los parámetros que se indican a continuación. + +| Parámetro | Valor | +| -------------------- | --------------------------------------------------------------------------------------------------------- | +| `` | `oracle` | +| `` | en blanco o `{}` | +| `` | `{"server": "%%host%%:1521", "service_name":"", "username":"datadog", "password":""}` | + +[1]: https://docs.datadoghq.com/es/agent/kubernetes/integrations/ + +{{% /tab %}} +{{< /tabs >}} + +### Validación + +[Ejecuta el subcomando de estado del Agent][9] y busca `oracle` en la sección Checks. + +## Consulta personalizada + +También es posible realizar consultas personalizadas. Cada consulta debe tener dos parámetros: + +| Parámetro | Descripción | +| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `query` | Este es el SQL a ejecutar. Puede ser una instrucción simple o un script de varias líneas. Se evalúan todas las filas del resultado. | +| `columns` | Se trata de una lista que representa a cada columna, ordenada secuencialmente de izquierda a derecha. Se requieren dos datos:
a. `type` - Es el método de envío (`gauge`, `count`, etc.).
b. nombre - Es el sufijo utilizado para formar el nombre completo de la métrica. Si `type` es `tag`, esta columna se considera una etiqueta (tag) que se aplica a todas las métricas recopiladas por esta consulta en particular. | + +Opcionalmente, utiliza el parámetro `tags` para aplicar una lista de etiquetas (tags) a cada métrica recopilada. + +Lo siguiente: + +```python +self.gauge('oracle.custom_query.metric1', value, tags=['tester:oracle', 'tag1:value']) +self.count('oracle.custom_query.metric2', value, tags=['tester:oracle', 'tag1:value']) +``` + +es en lo que se convertiría el siguiente ejemplo de configuración: + +```yaml +- query: | # Use the pipe if you require a multi-line script. + SELECT columns + FROM tester.test_table + WHERE conditions + columns: + # Put this for any column you wish to skip: + - {} + - name: metric1 + type: gauge + - name: tag1 + type: tag + - name: metric2 + type: count + tags: + - tester:oracle +``` + +Consulta el [ejemplo oracle.d/conf.yaml][5] para ver todas las opciones de configuración disponibles. + +### Ejemplo + +Crea una configuración de consulta que contribuya a identificar los bloqueos de la base de datos: + +1. Para incluir una consulta personalizada, modifica `conf.d\oracle.d\conf.yaml`. Quita la marca de comentario del bloque `custom_queries`, añade las consultas y columnas requeridas y reinicia el Agent. + +```yaml + init_config: + instances: + - server: localhost:1521 + service_name: orcl11g.us.oracle.com + username: datadog + password: xxxxxxx + jdbc_driver_path: /u01/app/oracle/product/11.2/dbhome_1/jdbc/lib/ojdbc6.jar + tags: + - db:oracle + custom_queries: + - query: | + select blocking_session, username, osuser, sid, serial# as serial, wait_class, seconds_in_wait + from v_$session + where blocking_session is not NULL order by blocking_session + columns: + - name: blocking_session + type: gauge + - name: username + type: tag + - name: osuser + type: tag + - name: sid + type: tag + - name: serial + type: tag + - name: wait_class + type: tag + - name: seconds_in_wait + type: tag +``` + +2. Para acceder a `v_$session`, concede permiso a `DATADOG` y prueba los permisos. + +```text +SQL> grant select on sys.v_$session to datadog; + +##connecting with the DD user to validate the access: + + +SQL> show user +USER is "DATADOG" + + +##creating a synonym to make the view visible +SQL> create synonym datadog.v_$session for sys.v_$session; + + +Synonym created. + + +SQL> select blocking_session,username,osuser, sid, serial#, wait_class, seconds_in_wait from v_$session +where blocking_session is not NULL order by blocking_session; +``` + +3. Una vez configurado, puedes crear un [monitor][10] basado en métricas de `oracle.custom_query.locks`. + +## Solucionar problemas + +### Problemas comunes + +#### Oracle Native Client +- Si encuentras un `DPY-6000: cannot connect to database`: + ```text + Failed to connect to Oracle DB, error: DPY-6000: cannot connect to database. Listener refused connection. (Similar to ORA-12660) + ``` + - Asegúrate de que el cifrado nativo de red o la suma de comprobación no estén activados. Si están activados, debes utilizar el método de Instant Client configurando `use_instant_client: true`. + +Para obtener más información sobre la configuración de Oracle Instant Client, consulta la [documentación sobre la integración de Oracle][3]. + +#### Oracle Instant Client +- Comprueba que los archivos de Oracle Instant Client y de SDK estén en el mismo directorio. +La estructura del directorio debería ser similar: + ```text + |___ BASIC_LITE_LICENSE + |___ BASIC_LITE_README + |___ adrci + |___ genezi + |___ libclntsh.so -> libclntsh.so.19.1 + |___ libclntsh.so.10.1 -> libclntsh.so.19.1 + |___ libclntsh.so.11.1 -> libclntsh.so.19.1 + |___ libclntsh.so.12.1 -> libclntsh.so.19.1 + |___ libclntsh.so.18.1 -> libclntsh.so.19.1 + |___ libclntsh.so.19.1 + |___ libclntshcore.so.19.1 + |___ libipc1.so + |___ libmql1.so + |___ libnnz19.so + |___ libocci.so -> libocci.so.19.1 + |___ libocci.so.10.1 -> libocci.so.19.1 + |___ libocci.so.11.1 -> libocci.so.19.1 + |___ libocci.so.12.1 -> libocci.so.19.1 + |___ libocci.so.18.1 -> libocci.so.19.1 + |___ libocci.so.19.1 + |___ libociicus.so + |___ libocijdbc19.so + |___ liboramysql19.so + |___ listener.ora + |___ network + | `___ admin + | |___ README + | |___ cwallet.sso + | |___ sqlnet.ora + | `___ tnsnames.ora + |___ ojdbc8.jar + |___ ucp.jar + |___ uidrvci + `___ xstreams.jar + ``` + +#### Controlador JDBC (sólo Linux) +- Si encuentras un `JVMNotFoundException`: + + ```text + JVMNotFoundException("No JVM shared library file ({jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly.})" + ``` + + - Asegúrate de que la variable de entorno `JAVA_HOME` esté configurada y que apunte al directorio correcto. + - Añade la variable de entorno a `/etc/environment`: + ```text + JAVA_HOME=/path/to/java + ``` + - A continuación, reinicia el Agent. + +- Si encuentras este error `Unsupported major.minor version 52.0` significa que estás ejecutando una versión muy antigua de Java. Necesitas actualizar tu sistema Java o instalar una versión más reciente y apuntar tu variable `JAVA_HOME` a la nueva instalación como se explicó anteriormente. + +- Comprueba que las variables de entorno estén configuradas correctamente ejecutando el siguiente comando desde el Agent. +Asegúrate de que la salida mostrada coincida con el valor correcto. + + ```shell script + sudo -u dd-agent -- /opt/datadog-agent/embedded/bin/python -c "import os; print(\"JAVA_HOME:{}\".format(os.environ.get(\"JAVA_HOME\")))" + ``` + +¿Necesitas ayuda? Ponte en contacto con [Soporte técnico de Datadog][14]. + +[1]: https://docs.datadoghq.com/es/integrations/oracle/?tab=linux +[2]: https://oracle.github.io/python-oracledb/ +[3]: https://github.com/DataDog/integrations-core/tree/7.41.x/oracle#oracle-instant-client +[4]: https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/index.html +[5]: https://github.com/DataDog/integrations-core/blob/master/oracle/datadog_checks/oracle/data/conf.yaml.example +[9]: https://docs.datadoghq.com/es/agent/guide/agent-commands/#agent-status-and-information +[10]: https://docs.datadoghq.com/es/monitors/monitor_types/metric/?tab=threshold +[11]: https://github.com/DataDog/integrations-core/blob/master/oracle/metadata.csv +[12]: https://github.com/DataDog/integrations-core/blob/master/oracle/assets/service_checks.json +[14]: https://docs.datadoghq.com/es/help/ +[18]: https://www.oracle.com/technetwork/database/features/instant-client/index.htm \ No newline at end of file diff --git a/content/es/network_monitoring/cloud_network_monitoring/guide/detecting_a_network_outage.md b/content/es/network_monitoring/cloud_network_monitoring/guide/detecting_a_network_outage.md new file mode 100644 index 0000000000000..6a8b59a0e6e98 --- /dev/null +++ b/content/es/network_monitoring/cloud_network_monitoring/guide/detecting_a_network_outage.md @@ -0,0 +1,38 @@ +--- +aliases: +- /es/network_performance_monitoring/guide/detecting_a_network_outage/ +- /es/network_monitoring/performance/guide/detecting_a_network_outage/ +further_reading: +- link: /network_monitoring/cloud_network_monitoring/guide/detecting_application_availability/ + tag: Guía + text: Detección de la disponibilidad de aplicaciones mediante información de red +title: Detección de una interrupción de red +--- +A menudo, las interrupciones de red se disfrazan de problemas de infraestructura, aplicaciones o contenedor, lo que dificulta su detección. Sin visibilidad del rendimiento de tu red regional o el de los endpoints de terceros de los que dependes, pueden pasar horas hasta que se detecten las interrupciones regionales de terceros o de la nube, que en última instancia podrían afectar a tus clientes. + +Con Cloud Network Monitoring (CNM), puedes detectar interrupciones de la red en cuestión de minutos. Al analizar los datos de flujo de la red junto con métricas, trazas (traces), logs y métricas de infraestructura del proceso, puedes evitar hacer suposiciones sobre la raíz de un problema y, en cambio, utilizar el proceso de eliminación (consulta los pasos a continuación) para determinar si hay una interrupción de red. + +## Sobrecarga de tráfico en la infraestructura subyacente + +Utiliza métricas de CNM para consultar si tu endpoint de origen puede estar enviando una enorme cantidad de tráfico o estableciendo un gran número de conexiones abiertas con el endpoint de destino. Al seleccionar una dependencia defectuosa (por ejemplo, una con alta latencia), puedes utilizar los gráficos del panel lateral para detectar estos picos de tráfico. Estos picos pueden saturar la aplicación receptora hasta el punto de que no pueda (en el caso de TCP) responder a todas las conexiones, lo que provoca un aumento de la pérdida de paquetes y, por tanto, de la latencia de TCP. + +{{< img src="network_performance_monitoring/guide/detecting_a_network_outage/cnm_metrics.png" alt="Sobrecarga de tráfico de la infraestructura subyacente">}} + +## Consumo excesivo de la CPU de la infraestructura subyacente + +Por otro lado, el consumo excesivo de recursos del endpoint cliente o servidor podría ser el culpable de una comunicación deficiente entre ambos. En la pestaña **Procesos** del panel lateral, delimita el ámbito que ves a procesos que se ejecutan en los endpoints de origen o de destino para detectar cualquier software pesado que pueda estar degradando el rendimiento de tus hosts o contenedores subyacentes, lo que reduce tu capacidad para responder a las llamadas de red. En este caso, además de saber _si_ un host subyacente se está ejecutando en caliente y causando latencia en la aplicación, querrás saber _por qué_ se está ejecutando en caliente. Agrupar tu métricas del proceso por comando te da esta granularidad, ya que puedes identificar la carga de trabajo concreta que están consumiendo tus recursos de CPU y memoria. + +{{< img src="network_performance_monitoring/guide/detecting_a_network_outage/cnm_processes_tab.png" alt="Consumo excesivo de CPU de la infraestructura subyacente">}} + +## Errores de la aplicación en el código + +Los errores y la latencia de la red también pueden deberse a errores de la aplicación del lado del cliente. Por ejemplo, si tu aplicación está generando conexiones en bucle innecesariamente, podría estar saturando los endpoints que dependen de ella, lo que provocaría problemas en la aplicación y en la red. Para determinar si este es el caso, busca errores de solicitud de la aplicación en la pestaña **Trazas** (Traces) de un servicio específico en [CNM > DNS][1] o la pestaña **Red** de una traza (trace) específica en APM Traces. + +{{< img src="network_performance_monitoring/guide/detecting_a_network_outage/traces_2.png" alt="Errores de la aplicación en el código">}} + +Si ninguno de estos pasos conduce a una causa raíz y estás viendo errores y latencia para tus dependencias delimitadas a una región, zona de disponibilidad o endpoint de dominio de terceros específica, entonces estás experimentando una interrupción de red. En este caso, puedes ponerte en contacto con los proveedores correspondientes para informar y resolver el problema. + +## Referencias adicionales +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://app.datadoghq.com/network/dns \ No newline at end of file diff --git a/content/es/network_monitoring/devices/device_topology_map.md b/content/es/network_monitoring/devices/device_topology_map.md new file mode 100644 index 0000000000000..1bb67d3210ba4 --- /dev/null +++ b/content/es/network_monitoring/devices/device_topology_map.md @@ -0,0 +1,232 @@ +--- +aliases: +- /es/network_monitoring/devices/network_topology_map +further_reading: +- link: https://www.datadoghq.com/blog/visualize-network-device-topology/ + tag: Blog + text: Visualiza las relaciones en toda tu red on-premise con el mapa de topología + de dispositivos. +- link: /network_monitoring/devices/data + tag: Documentación + text: Datos recopilados con la Monitorización de dispositivos de red +- link: https://www.datadoghq.com/blog/monitor-snmp-with-datadog/ + tag: Blog + text: Monitorización de SNMP con Datadog +title: Mapa topológico de dispositivos +--- + +## Información general + +El [Mapa topológico de dispositivos de red][2] proporciona una visión general de las conexiones físicas de tu red, para que puedas identificar más fácilmente los problemas en tus dispositivos y comprender sus impactos en los flujos ascendentes y descendentes. + +{{< img src="/network_device_monitoring/network_topology_map/network_topology_map_search_3.mp4" alt="El mapa de topología de dispositivos de red, con vendor:cisco añadido en la barra de búsqueda y, luego, la casilla Filtrar nodos filtrada por nyc. Se selecciona un nodo y se marca la opción Inspeccionar, que muestra los nodos conectados. Luego se selecciona uno de los nodos conectados y se vuelve a marcar la opción Inspeccionar, la cual muestra los nodos conectados adicionales" video="true" >}} + +## Ajustes + +Datadog Agent versión 7.52 y posteriores recopila automáticamente los datos de topología. No es necesaria ninguna instalación adicional. + +### Requisitos previos + +1. Los dispositivos tienen LLDP (Link Layer Discovery Protocol) o CDP (Cisco Discovery Protocol) activado con SNMP. Utiliza el mismo protocolo en los dispositivos conectados para que puedan detectarse mutuamente. Generalmente se prefiere LLDP, ya que es una opción más común. +2. Datadog Agent versión 7.52 o posterior. + +## Opciones de navegación + +En el Mapa de topología de red, están disponibles las siguientes opciones de navegación: + +### Vista + +1. En **View By** (Ver por), utiliza las etiquetas (tags) para seleccionar cómo deseas visualizar los dispositivos: + +{{< img src="/network_device_monitoring/network_topology_map/device-topology-grouped.png" alt="La opción de navegación, con la vista por dispositivos y etiquetas seleccionada, resaltada la vista por ubicación" style="width:80%;" >}} + +### Color + +2. En **Color by** (Color por), cambia cómo se colorean los nodos en el Mapa de topología de dispositivos basándose en: + +- **Estado del dispositivo**: muestra los nodos en el Mapa topológico de dispositivos por nivel de alcance de SNMP. +- **Estado de ping**: muestra los nodos en el Mapa topológico de dispositivos por [estado de ping][6]. + +{{< img src="/network_device_monitoring/network_topology_map/device-topology-overview-intro.png" alt="La opción de navegación, con la vista por color seleccionada y la opción vista por estado de dispositivo resaltada" style="width:80%;" >}} + + A continuación, se presentan las definiciones de los nodos para cada estado de color: +
+ + | Color | Descripción | + |----------|---------------------------| + | Verde | Dispositivo accesible. | + | Rojo | Problema con el dispositivo, como no se puede acceder a través de SNMP. | + | Gris | El dispositivo está monitorizado por NDM; sin embargo, no se han recibido datos. Por ejemplo, si el ping no se configuró y optó por `color by` **Ping State** (Estado del ping) en el Mapa de topología de dispositivos, los dispositivos se muestran en gris. | + | Sin color | Dispositivos de sombra que no son directamente monitorizados por NDM, pero son detectables a través de LLDP/CDP desde un dispositivo conectado que NDM está monitorizando. Puedes activar/desactivar la [sección Ocultar _N_ dispositivos no monitorizados](#filter-devices) si deseas que estos dispositivos se muestren en el Mapa topológico de dispositivos. | + +
+ +### Filtrar dispositivos + +3. En **Filter Devices** (Filtrar dispositivos), podrás controlar de forma más detallada qué dispositivos se muestran en el Mapa de topología de dispositivos. + +{{< img src="/network_device_monitoring/network_topology_map/device_topology_filter_devices_hide.png" alt="La opción de navegación, con la opción de filtro Ver seleccionada, que marca Ocultar dispositivos no monitorizados" style="width:80%;" >}} + +**Nota:** El ajuste **Filter Devices** (Filtrar dispositivos) afecta a los dispositivos que se muestran en el Mapa topológico de dispositivos para _todas_ las consultas que puedas realizar. Por ejemplo, si filtras por una faceta de dispositivo en la barra de búsqueda. + +Ocultar _N_ dispositivos no monitorizados: desactivado por defecto. +: activar esta opción oculta los dispositivos en el Mapa topológico de dispositivos que no están directamente monitorizados por la Monitorización de dispositivos de red, pero que aun así los detecta LLDP/CDP, y se muestran en el mapa de dispositivos adyacentes que están monitorizados por la Monitorización de dispositivos de red. + +Ocultar _N_ dispositivos desconectados: desactivado por defecto. +: activar esta opción oculta los dispositivos que no tienen conexiones de enlace. Los dispositivos pueden estar desconectados por razones como una configuración incorrecta, o que el dispositivo no es compatible con [LLDP/CDP](#troubleshooting). + +### Leyenda del icono + +Los dispositivos SNMP se emparejan con un icono representativo en función de su tipo de dispositivo en cada nodo de dispositivo, tal y como se define en sus [perfiles de dispositivo][4]. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IconoDescripción
{{Access point icon}}Punto de acceso
{{Firewall icon}}Firewall
{{Router icon}}Enrutador
{{Server icon}}Servidor
{{Switch icon}}Cambio
{{Device icon}}Dispositivo
+ + +## Investigación de dispositivos + +Además de proporcionar una visión general de las conexiones físicas de tu red, puedes investigar los dispositivos individuales para comprender sus conexiones, flujos y estado general. Al pasar el ratón por encima de un dispositivo, se muestra su estado general y las principales métricas. También puedes hacer clic en un dispositivo para ver las siguientes opciones: + +{{< img src="/network_device_monitoring/network_topology_map/network_topology_map_device_inspect_view_3.png" alt="El Mapa de topología de dispositivos de red con un dispositivo seleccionado, que muestra la información sobre el dispositivo, además de las opciones Inspeccionar, Ver detalles de dispositivo y Ver detalles del flujo" style="width:80%;" >}} + +### Inspeccionar + +Selecciona **Inspect** (Inspeccionar) para ver las conexiones de interfaz del dispositivo. Haz clic en cualquiera de las interfaces conectadas para seguir investigando. +Esta vista sólo muestra las interfaces físicas que están realmente conectadas a otro dispositivo. Esto significa que muestra un subconjunto del conjunto total de interfaces de un dispositivo de red. + +{{< img src="/network_device_monitoring/network_topology_map/ndm_topology_interface_updated.png" alt="La vista Inspeccionar de un dispositivo individual, que muestra las conexiones de interfaz del dispositivo" style="width:80%;" >}} + +### Ver detalles del dispositivo + +Elige **View device details** (Ver detalles del dispositivo) para ver información como la dirección IP del dispositivo y las etiquetas, así como datos relacionados con el rendimiento, la CPU y la memoria. + +{{< img src="/network_device_monitoring/network_topology_map/network_topology_device_details_2.png" alt="La pestaña Ver detalles del dispositivo de un dispositivo individual" style="width:80%;" >}} + +Desde esta vista, también puedes ver las interfaces conectadas del dispositivo en la pestaña **Connected Interfaces** (Interfaces conectadas). + +{{< img src="/network_device_monitoring/network_topology_map/network_topology_map_devices_interface_2.png" alt="La pestaña Ver detalles de dispositivos de un dispositivo individual con la pestaña Interfaces seleccionada" style="width:80%;" >}} + +### Ver detalles del flujo + +Selecciona **View flow details** (Ver detalles del flujo) para abrir la pestaña NetFlow filtrada por el `@device.ip` del dispositivo para una exploración detallada de los orígenes, destinos y volumen del dispositivo. Consulta la página [Monitorización de NetFlow][1] para obtener más información. + +## Solucionar problemas + +Si experimentas problemas al utilizar el Mapa topológico de red, utiliza las siguientes directrices para solucionar problemas. Si necesitas más ayuda, ponte en contacto con el [soporte de Datadog][5]. + +### Cuadro de mensaje "Faltan datos de topología" + +{{< img src="/network_device_monitoring/network_topology_map/missing_topology_map.png" alt="El mensaje Faltan datos de topología, que se muestra cuando el mapa renderizado no tiene enlaces" style="width:80%;" >}} + +Este mensaje aparece cuando el mapa renderizado no tiene enlaces. + +**Nota**: Dado que el conmutador "Ocultar _N_ dispositivos desconectados" está activado por defecto, este mensaje se muestra con un mapa vacío. + +### Mensaje "Mapa vacío" + +{{< img src="/network_device_monitoring/network_topology_map/no_devices_found.png" alt="El mensaje No se encontraron dispositivos que se muestra cuando NDM no está configurado o por los filtros aplicados." style="width:80%;" >}} + +No hay dispositivos porque NDM no está configurado. + +### No se han encontrado conexiones/No hay dispositivos conectados para mostrar + +{{< img src="/network_device_monitoring/network_topology_map/no_connections_found.png" alt="El mensaje No se encontraron dispositivos que se muestra cuando NDM no está configurado o por los filtros aplicados." style="width:80%;" >}} + +- Desactiva la opción "Hide _N_ Unconnected Devices" (Ocultar _N_ dispositivos desconectados) para mostrar los dispositivos aislados. +- Utiliza la etiqueta de categorización para ayudar a entender la vista de tu mapa con jerarquía de información. + +### Mapa vacío/sin dispositivos monitorizados + +- Asegúrate de que el conmutador "Hide _N_ Unconnected Devices" (Ocultar _N_ dispositivos desconectados) está desactivado. + +### Dispositivos/conexiones faltantes + +Los datos del Mapa de topología de dispositivos se basan en información LLDP (Link Layer Discovery Protocol) y CDP (Cisco Discovery Protocol) recopilada con SNMP. Si en tu mapa faltan dispositivos o conexiones, asegúrate de lo siguiente: + +- Datadog Agent versión 7.52 o posterior está instalado. +- Los dispositivos tienen LLDP o CDP habilitados con SNMP. + +Verifica que tus dispositivos están exponiendo datos LLDP y CDP con los siguientes comandos: + +Para datos LLDP: + +```yaml +sudo -u dd-agent datadog-agent snmp walk 1.0.8802 +``` +Para datos CDP: +```yaml: +sudo -u dd-agent datadog-agent snmp walk 1.3.6.1.4.1.9.9.23 +``` + +### Conexiones o enlaces faltantes + +Si tu dispositivo está exponiendo datos de topología con LLDP o CDP, pero faltan algunas de las conexiones, asegúrate de que el conmutador "Hide _N_ Unmonitored Devices" (Ocultar _N_ dispositivos no monitorizados) está desactivado. +Si estás utilizando etiquetas para filtrar nodos en el mapa, asegúrate de que el conmutador "Show one hop away on filter" (Mostrar a un salto en el filtro) está activado para ver los nodos conectados. + +### Dispositivos no monitorizados mostrados en el mapa + +El Mapa de topología de dispositivos muestra todos los dispositivos detectados con LLDP o CDP. Estos pueden ser nuevos dispositivos que ya no están monitorizados con SNMP o dispositivos existentes que no fueron [resueltos](#device-resolution) al dispositivo monitorizado equivalente. +Puedes utilizar el conmutador "Hide _N_ Unmonitored Devices" (Ocultar _N_ dispositivos no monitorizados) para ocultar estos nodos. + +### Dispositivo duplicado en el mapa + +El Mapa de topología de dispositivos muestra todos los dispositivos detectados con LLDP o CDP. En algunos casos, estos dispositivos ya están monitorizados con SNMP, pero no pueden ser [resueltos](#device-resolution) al dispositivo monitorizado equivalente. En este caso, el dispositivo se muestra dos veces: un nodo que representa el dispositivo monitorizado y un nodo que representa el dispositivo LLDP/CDP detectado. +Utiliza el conmutador "Hide _N_ Unmonitored Devices" (Ocultar _N_ dispositivos no monitorizados) para ocultar los nodos no monitorizados. + +### Nodos sin bordes o negros en el mapa + +Los nodos sin bordes o negros en el Mapa de topología de dispositivos pueden representar dispositivos detectados con LLDP o CDP que no están configurados para monitorizarse con NDM, o dispositivos detectados con LLDP o CDP que no pueden ser resueltos al [dispositivo monitorizado](#device-resolution) equivalente. + +## Resolución del dispositivo + +El Mapa de topología de dispositivos proporciona una visión general de los dispositivos monitorizados con NDM y sus conexiones físicas. Los datos de los enlaces topológicos se basan en la información LLDP (Link Layer Discovery Protocol) o CDP (Cisco Discovery Protocol) recopilada con SNMP. +Las conexiones detectadas con LLDP o CDP pueden corresponder a dispositivos ya monitorizados con SNMP. La resolución de dispositivos consiste en hacer coincidir el dispositivo detectado con el dispositivo monitorizado. + +### Fallos en la resolución de dispositivos + +La resolución del dispositivo puede fallar si el dispositivo no se monitoriza con NDM, o si los datos LLDP o CDP son insuficientes para hacer coincidir el dispositivo detectado con el dispositivo monitorizado. + + +## Para leer más + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: /es/network_monitoring/netflow/ +[2]: https://app.datadoghq.com/infrastructure/devices?viewTab=topology +[3]: /es/network_monitoring/devices/snmp_metrics/?tab=snmpv2#autodiscovery +[4]: /es/network_monitoring/devices/profiles/ +[5]: /es/help +[6]: /es/network_monitoring/devices/snmp_metrics/?tab=snmpv2#ping \ No newline at end of file diff --git a/content/es/opentelemetry/collector_exporter/deployment.md b/content/es/opentelemetry/collector_exporter/deployment.md index a5b8f4ca2d982..c1675098bfd51 100644 --- a/content/es/opentelemetry/collector_exporter/deployment.md +++ b/content/es/opentelemetry/collector_exporter/deployment.md @@ -6,28 +6,40 @@ further_reading: - link: https://opentelemetry.io/docs/collector/deployment/ tag: Sitio externo text: Despliegue de OpenTelemetry Collector -title: Despliegue +title: Implementación --- +Esta página te guía a través de varias opciones de implementación para OpenTelemetry Collector con el Exportador Datadog, que te permite enviar trazas (traces), métricas, y logs a Datadog. + ## Descargar el Collector Para ejecutar OpenTelemetry Collector junto con el Exportador de Datadog, descarga la última versión de [la distribución de OpenTelemetry Collector Contrib][3]. -## Ejecución del Collector +## Implementar el Collector -{{< tabs >}} -{{% tab "En un host" %}} +El OpenTelemetry Collector se puede implementar en varios entornos para adaptarse a diferentes necesidades de infraestructura. Esta sección cubre las siguientes opciones de implementación: -Ejecuta el Collector, especificando el archivo de configuración mediante el parámetro `--config`: +- [En un host](#on-a-host) +- [Docker](#docker) +- [Kubernetes](#kubernetes) -``` +Es importante tener en cuenta que determinadas funciones y capacidades pueden variar en función del método de implementación. Para obtener una descripción detallada de estas diferencias, consulta las [Limitaciones basadas en la implementación](#deployment-based-limitations). + +Elige la opción de implementación que mejor se adapte a tu infraestructura y completa las siguientes instrucciones. + +### En un host + +Ejecuta el programa Collector, especificando el archivo de configuración mediante el parámetro `--config`: + +```shell otelcontribcol_linux_amd64 --config collector.yaml ``` -{{% /tab %}} +### Docker -{{% tab "Docker (host local)" %}} -Para ejecutar el OpenTelemetry Collector como una imagen de Docker y recibir trazas (traces) del mismo host: +{{< tabs >}} +{{% tab "localhost" %}} +Para ejecutar el OpenTelemetry Collector como una imagen de Docker y recibir trazas (traces) desde el mismo host: 1. Elige una imagen de Docker publicada, como [`otel/opentelemetry-collector-contrib`][1]. @@ -46,7 +58,7 @@ Para ejecutar el OpenTelemetry Collector como una imagen de Docker y recibir tra [1]: https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags {{% /tab %}} -{{% tab "Docker (otros contenedores)" %}} +{{% tab "Otros contenedores" %}} Para ejecutar el OpenTelemetry Collector como una imagen de Docker y recibir trazas de otros contenedores: @@ -67,7 +79,7 @@ Para ejecutar el OpenTelemetry Collector como una imagen de Docker y recibir tra otel/opentelemetry-collector-contrib ``` - Al ejecutar la aplicación de contenedor, asegúrate de que la variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT` está configurada para utilizar el nombre de host apropiado para el OpenTelemetry Collector. En el ejemplo siguiente, se trata de `opentelemetry-collector`. + Al ejecutar la aplicación de contenedor, asegúrate de que la variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT` esté configurada para utilizar el nombre de host apropiado para el OpenTelemetry Collector. En el ejemplo siguiente, se trata de `opentelemetry-collector`. ``` # Run the application container @@ -79,14 +91,17 @@ Para ejecutar el OpenTelemetry Collector como una imagen de Docker y recibir tra ``` {{% /tab %}} -{{% tab "Kubernetes (DaemonSet)" %}} +{{< /tabs >}} -El uso de un DaemonSet es la forma más común y recomendada de configurar la recopilación de OpenTelemetry en un entorno de Kubernetes. Para desplegar el OpenTelemetry Collector y el Exportador de Datadog en una infraestructura de Kubernetes: +### Kubernetes -1. Utiliza este [ejemplo completo de configuración de OpenTelemetry Collector con el Exportador de Datadog como DaemonSet][1], incluyendo el ejemplo de configuración de la aplicación. +{{< tabs >}} +{{% tab "DaemonSet" %}} - [Algunas opciones de configuración en el ejemplo][2] (repetidas más abajo) aseguran que los puertos esenciales del DaemonSet están expuestos y accesibles a tu aplicación: +El uso de un DaemonSet es la forma más común y recomendada de configurar la recopilación de OpenTelemetry en un entorno de Kubernetes. Para desplegar el OpenTelemetry Collector y el Exportador de Datadog en una infraestructura de Kubernetes: +1. Utiliza esta [configuración del ejemplo][1], incluida la configuración de la aplicación, para configurar OpenTelemetry Collector con el Exportador de Datadog como DaemonSet. +2. Asegúrate de que los puertos esenciales para el DaemonSet estén expuestos y accesibles para tu aplicación. Las siguientes opciones de configuración [del ejemplo][2] definen estos puertos: ```yaml # ... ports: @@ -97,10 +112,9 @@ El uso de un DaemonSet es la forma más común y recomendada de configurar la re - containerPort: 8888 # Default endpoint for querying Collector observability metrics. # ... ``` +
Si tu aplicación no requiere HTTP ni gRPC, elimina los puertos no utilizados de la configuración.
- Si no necesitas los puertos HTTP estándar y gRPC para tu aplicación, puedes eliminar las opciones correspondientes de configuración. - -2. Para recopilar valiosos atributos de Kubernetes, que se utilizan para el etiquetado del contenedor de Datadog, informa la IP del pod como atributo de recurso, [como se muestra en el ejemplo][3]: +1. Para recopilar valiosos atributos de Kubernetes, que se utilizan para el etiquetado del contenedor de Datadog, informa la IP del pod como atributo de recurso, [como se muestra en el ejemplo][3]: ```yaml # ... @@ -115,9 +129,9 @@ El uso de un DaemonSet es la forma más común y recomendada de configurar la re # ... ``` - Esto asegura que [Kubernetes Attributes Processor][4] que se utiliza en [el mapa de configuración][5] es capaz de extraer los metadatos necesarios para adjuntar a trazas. Hay [roles][6] adicionales que deben configurarse para permitir el acceso a estos metadatos. [El ejemplo][1] está completo, listo para usar, y tiene los roles correctos configurados. + Esto asegura que [Kubernetes Attributes Processor][4], que se utiliza en [el mapa de configuración][5], sea capaz de extraer los metadatos necesarios para adjuntar a trazas (traces). Hay [roles][6] adicionales que se deben configurar para permitir el acceso a estos metadatos. [El ejemplo][1] está completo, listo para usar y tiene configurados los roles correctos. -3. Proporciona tu [contenedor de aplicación][7]. Para configurar tu contenedor de aplicación, asegúrate de que se utiliza el nombre de host correcto del endpoint OTLP. El OpenTelemetry Collector se ejecuta como un DaemonSet, por lo que el actual host necesita ser dirigido. Establece tu variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT` del contenedor de aplicación correctamente, como en el [gráfico de ejemplo][8]: +1. Configura tu [contenedor de la aplicación][7] para utilizar el nombre correcto del host del endpoint de OTLP. Dado que el OpenTelemetry Collector se ejecuta como un DaemonSet, se debe seleccionar el host actual. Ejecuta la variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT` de tu contenedor de la aplicación en consecuencia, como en el [gráfico del ejemplo][8]: ```yaml # ... @@ -133,6 +147,30 @@ El uso de un DaemonSet es la forma más común y recomendada de configurar la re # ... ``` + 1. Configura la recopilación de metadatos del host para garantizar la exactitud de la información del host. Configura tu DaemonSet para recopilar y reenviar metadatos del host: + + ```yaml + processors: + resourcedetection: + detectors: [system, env] + k8sattributes: + # existing k8sattributes config + transform: + trace_statements: + - context: resource + statements: + - set(attributes["datadog.host.use_as_metadata"], true) + ... + service: + pipelines: + traces: + receivers: [otlp] + processors: [resourcedetection, k8sattributes, transform, batch] + exporters: [datadog] + ``` + + Esta configuración recopila metadatos del host utilizando el procesador `resourcedetection`, añade metadatos de Kubernetes con el procesador `k8sattributes` y configura el atributo `datadog.host.use_as_metadata` en `true`. Para obtener más información, consulta [Asignar las convenciones semánticas de OpenTelemetry a la información del host de la lista de infraestructuras][9]. + [1]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart [2]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/daemonset.yaml#L33-L38 @@ -142,16 +180,16 @@ El uso de un DaemonSet es la forma más común y recomendada de configurar la re [6]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/roles.yaml [7]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/deployment.yaml#L21-L22 [8]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/deployment.yaml#L32-L39 +[9]: /es/opentelemetry/schema_semantics/host_metadata/ -{{% /tab %}} -{{% tab "Kubernetes (Gateway)" %}} - -Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un despliegue de Kubernetes Gateway -1. Utiliza este [ejemplo completo de configuración de OpenTelemetry Collector con el Exportador de Datadog como DaemonSet][1], incluyendo el ejemplo de configuración de la aplicación. +{{% /tab %}} +{{% tab "Gateway" %}} - [Algunas opciones de configuración en el ejemplo][2] (repetidas más abajo) aseguran que los puertos esenciales del DaemonSet están expuestos y accesibles a tu aplicación: +Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un despliegue de Kubernetes Gateway: +1. Utiliza esta [configuración del ejemplo][1], incluida la configuración de la aplicación, para configurar OpenTelemetry Collector con el Exportador de Datadog como DaemonSet. +2. Asegúrate de que los puertos esenciales para el DaemonSet estén expuestos y accesibles para tu aplicación. Las siguientes opciones de configuración [del ejemplo][2] definen estos puertos: ```yaml # ... ports: @@ -162,10 +200,9 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg - containerPort: 8888 # Default endpoint for querying Collector observability metrics. # ... ``` +
Si tu aplicación no requiere HTTP ni gRPC, elimina los puertos no utilizados de la configuración.
- Si no necesitas los puertos HTTP estándar y gRPC para tu aplicación, puedes eliminar las opciones correspondientes de configuración. - -2. Para recopilar valiosos atributos de Kubernetes, que se utilizan para el etiquetado del contenedor de Datadog, informa la IP del pod como atributo de recurso, [como se muestra en el ejemplo][3]: +1. Para recopilar valiosos atributos de Kubernetes, que se utilizan para el etiquetado del contenedor de Datadog, informa la IP del pod como atributo de recurso, [como se muestra en el ejemplo][3]: ```yaml # ... @@ -180,9 +217,9 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg # ... ``` - Esto asegura que [Kubernetes Attributes Processor][4] que se utiliza en [el mapa de configuración][5] es capaz de extraer los metadatos necesarios para adjuntar a trazas. Hay [roles][6] adicionales que deben configurarse para permitir el acceso a estos metadatos. [El ejemplo][1] está completo, listo para usar, y tiene los roles correctos configurados. + Esto asegura que [Kubernetes Attributes Processor][4], que se utiliza en [el mapa de configuración][5], sea capaz de extraer los metadatos necesarios para adjuntar a trazas (traces). Hay [roles][6] adicionales que se deben configurar para permitir el acceso a estos metadatos. [El ejemplo][1] está completo, listo para usar y tiene configurados los roles correctos. -3. Proporciona tu [contenedor de aplicación][7]. Para configurar tu contenedor de aplicación, asegúrate de que se utiliza el nombre de host correcto del endpoint OTLP. El OpenTelemetry Collector se ejecuta como un DaemonSet, por lo que el actual host necesita ser dirigido. Establece tu variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT` del contenedor de aplicación correctamente, como en el [gráfico de ejemplo][8]: +1. Configura tu [contenedor de la aplicación][7] para utilizar el nombre correcto del host del endpoint de OTLP. Dado que el OpenTelemetry Collector se ejecuta como un DaemonSet, se debe seleccionar el host actual. Configura la variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT` de tu contenedor de la aplicación en consecuencia, como en el [gráfico del ejemplo][8]: ```yaml # ... @@ -198,7 +235,7 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg # ... ``` -4. Cambia el DaemonSet para incluir un [exportador OTLP][9] en lugar del Exportador de Datadog [actualmente en su lugar][10]: +1. Cambia el DaemonSet para incluir un [exportador OTLP][9] en lugar del Exportador de Datadog [actualmente en su lugar][10]: ```yaml # ... @@ -208,7 +245,7 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg # ... ``` -5. Asegúrate de que los pipelines de servicio utilizan este exportador, en lugar del de Datadog que [está en el ejemplo][11]: +1. Asegúrate de que los pipelines de servicio utilizan este exportador, en lugar del de Datadog que [está en el ejemplo][11]: ```yaml # ... @@ -227,9 +264,9 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg Esto asegura que cada Agent reenvíe sus datos a través del protocolo OTLP a la gateway de Collector. -6. Sustituye `GATEWAY_HOSTNAME` por la dirección de tu gateway de OpenTelemetry Collector. +1. Sustituye `` por la dirección de tu puerta enlace de OpenTelemetry Collector. -7. Para garantizar que los metadatos de Kubernetes sigan aplicándose a trazas, indica al [procesador`k8sattributes`][12] que reenvíe la IP del pod a la gateway de Collector para que pueda obtener los metadatos: +1. Configura el [procesador `k8sattributes`][12] para reenviar la IP del pod al Collector de puertas de enlace, de manera tal que pueda obtener los metadatos: ```yaml # ... @@ -240,7 +277,7 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg Para más información sobre la opción `passthrough`, lee [su documentación][13]. -8. Asegúrate de que la configuración de la gateway de Collector utiliza la misma configuración del exportador de Datadog que ha sido sustituida por el exportador OTLP en el Agent. Por ejemplo (donde `` es tu sitio, {{< region-param key="dd_site" code="true" >}}): +1. Asegúrate de que la configuración de la gateway de Collector utiliza la misma configuración del exportador de Datadog que ha sido sustituida por el exportador OTLP en el Agent. Por ejemplo (donde `` es tu sitio, {{< region-param key="dd_site" code="true" >}}): ```yaml # ... @@ -251,7 +288,52 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg key: ${env:DD_API_KEY} # ... ``` +1. Configura la recopilación de metadatos del host: + En una implementación de puerta de enlace, debes asegurarte de que los recopiladores del Agent recopilen los metadatos del host y que el recopilador de puertas de enlace los conserve. Esto garantiza que los agentes recopilen los metadatos del host y que se reenvíen correctamente a través de la puerta de enlace a Datadog. + Para obtener más información, consulta [Asignar convenciones semánticas de OpenTelemetry a la información del host de la lista de infraestructuras][14]. + + **Configuración del Agent Collector**: + ```yaml + processors: + resourcedetection: + detectors: [system, env] + k8sattributes: + passthrough: true + + exporters: + otlp: + endpoint: ":4317" + + service: + pipelines: + traces: + receivers: [otlp] + processors: [resourcedetection, k8sattributes, transform, batch] + exporters: [otlp] + ``` + + **Configuración del recopilador de puertas de enlace**: + + ```yaml + processors: + k8sattributes: + extract: + metadata: [node.name, k8s.node.name] + + exporters: + datadog: + api: + key: ${DD_API_KEY} + hostname_source: resource_attribute + + service: + pipelines: + traces: + receivers: [otlp] + processors: [k8sattributes, batch] + exporters: [datadog] + ``` [1]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart [2]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/daemonset.yaml#L33-L38 @@ -266,9 +348,10 @@ Para desplegar OpenTelemetry Collector y el Exportador de Datadog en un desplieg [11]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/configmap.yaml#L136-L148 [12]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/examples/k8s-chart/configmap.yaml#L69 [13]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/k8sattributesprocessor#as-a-gateway +[14]: /es/opentelemetry/schema_semantics/host_metadata/ {{% /tab %}} -{{% tab "Kubernetes (Operator)" %}} +{{% tab "Operator" %}} Para utilizar el OpenTelemetry Operator, sigue la [documentación oficial para desplegar el OpenTelemetry Operator][1]. Como se describe allí, despliega el gestor de certificados, además del Operator. @@ -278,14 +361,14 @@ Configura el Operator utilizando una de las configuraciones estándar de Kuberne [1]: https://github.com/open-telemetry/opentelemetry-operator#readme -[2]: /es/opentelemetry/collector_exporter/?tab=kubernetesdaemonset#running-the-collector -[3]: /es/opentelemetry/collector_exporter/?tab=kubernetesgateway#running-the-collector +[2]: /es/opentelemetry/collector_exporter/deployment/?tab=daemonset#kubernetes +[3]: /es/opentelemetry/collector_exporter/deployment/?tab=gateway#kubernetes {{% /tab %}} {{< /tabs >}} -### Resolución de nombres de host +## Resolución de nombres de host Consulta [Asignación de convenciones semánticas de OpenTelemetry a nombres de host][25] para entender cómo se resuelve el nombre de host. @@ -293,7 +376,7 @@ Consulta [Asignación de convenciones semánticas de OpenTelemetry a nombres de El OpenTelemetry Collector tiene [dos métodos principales de despliegue][20]: Agent y Gateway. Según tu método de despliegue, los siguientes componentes están disponibles: -| Modo de despliegue | Métricas de host | Métricas de orquestación de Kubernetes | Trazas | Autoingesta de logs | +| Modo de despliegue | Métricas de host | Métricas de orquestación de Kubernetes | Trazas | Autoingesta de logs | | --- | --- | --- | --- | --- | | como Gateway | | {{< X >}} | {{< X >}} | | | como Agent | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | diff --git a/content/es/real_user_monitoring/browser/data_collected.md b/content/es/real_user_monitoring/browser/data_collected.md index 57fb291705d7a..2a4b1263a527d 100644 --- a/content/es/real_user_monitoring/browser/data_collected.md +++ b/content/es/real_user_monitoring/browser/data_collected.md @@ -116,7 +116,7 @@ Los datos detallados de temporización de red para la carga de los recursos de u | Métrica | Tipo | Descripción | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | número | Tiempo total empleado en cargar el recurso. | +| `resource.duration` | número | Tiempo total empleado en cargar el recurso. | | `resource.size` | número (bytes) | Tamaño del recurso. | | `resource.connect.duration` | número (ns) | Tiempo empleado en establecer una conexión con el servidor (connectEnd - connectStart). | | `resource.ssl.duration` | número (ns) | Tiempo empleado por el protocolo TLS. Si la última solicitud no es en HTTPS, esta métrica no aparece (connectEnd - secureConnectionStart). | diff --git a/content/es/real_user_monitoring/browser/monitoring_resource_performance.md b/content/es/real_user_monitoring/browser/monitoring_resource_performance.md new file mode 100644 index 0000000000000..5ddf89de56821 --- /dev/null +++ b/content/es/real_user_monitoring/browser/monitoring_resource_performance.md @@ -0,0 +1,84 @@ +--- +further_reading: +- link: https://www.datadoghq.com/blog/real-user-monitoring-with-datadog/ + tag: Blog + text: Real User Monitoring (RUM) +- link: /real_user_monitoring/explorer/ + tag: Documentación + text: Explora tus vistas dentro de Datadog +- link: /real_user_monitoring/explorer/visualize/ + tag: Documentación + text: Aplica visualizaciones a tus eventos +- link: /real_user_monitoring/platform/dashboards/ + tag: Documentación + text: Dashboards de RUM +title: Monitorizar el rendimiento de los recursos +--- + +El SDK de RUM Browser recopila recursos y activos para cada vista de RUM (carga de página): solicitudes de [XMLHttpRequest][1] (XHR) y de Fetch, además de imágenes, archivos CSS, activos de JavaScript y archivos de fuentes. Para cada uno de ellos, se genera un evento de recurso de RUM, con tiempos y metadatos detallados. + +Los recursos de RUM heredan de todo el contexto relacionado con la vista de RUM activa en el momento de la recopilación. + +## Vincular recursos de RUM a trazas de APM + +Para obtener una visibilidad de extremo a extremo aún más completa de las solicitudes según van moviéndose a través de las capas de tu stack tecnológico, conecta tus datos de RUM con las trazas (traces) de backend correspondientes. Al hacerlo, podrás: + +* Localizar problemas de backend que hayan dado lugar a un error para el usuario. +* Identificar hasta qué punto se ven afectados los usuarios por un problema de tu stack tecnológico. +* Consultar solicitudes de extremo a extremo completas en las gráficas de llamas, lo que te permitirá navegar sin problemas entre RUM y APM y a la inversa, con un contexto preciso. + +Consultar [Conectar RUM y trazas ][2] para obtener información sobre cómo configurar esta función. + +{{< img src="real_user_monitoring/browser/resource_performance_graph.png" alt="Información de trazas de APM para un recurso de RUM" >}} + +## Tiempos y métricas de recursos + +Los datos de tiempo de red detallados para recursos se recopilan con los métodos de navegador nativos Fetch y XHR y con la [API de Performance Resource Timing][3]. + +| Atributo | Tipo | Descripción | +|----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| +| `resource.duration` | número | Tiempo total empleado en cargar el recurso. | +| `resource.size` | número (bytes) | Tamaño del recurso. | +| `resource.connect.duration` | número (ns) | Tiempo empleado en establecer una conexión con el servidor (connectEnd - connectStart). | +| `resource.ssl.duration` | número (ns) | Tiempo empleado por el protocolo TLS. Si la última solicitud no es en HTTPS, esta métrica no aparece (connectEnd - secureConnectionStart).| +| `resource.dns.duration` | número (ns) | Tiempo empleado en resolver el nombre DNS de la última solicitud (domainLookupEnd - domainLookupStart). | +| `resource.redirect.duration` | número (ns) | Tiempo empleado en las siguientes solicitudes HTTP (redirectEnd - redirectStart). | +| `resource.first_byte.duration` | número (ns) | Tiempo de espera empleado para recibir el primer byte de respuesta (responseStart - RequestStart). | +| `resource.download.duration` | número (ns) | Tiempo empleado para descargar la respuesta (responseEnd - responseStart). | + +**Nota**: Si tienes problemas para recopilar el tiempo detallado de algunos recursos, consulta [Tiempo de recursos y CORS](#resource-timing-and-cors). + +## Atributos del recurso + +| Atributo | Tipo | Descripción | +|--------------------------------|--------|-----------------------------------------------------------------------------------------| +| `resource.type` | cadena | El tipo de recurso que se recopila (por ejemplo, `css`, `javascript`, `media`, `XHR`, `image`). | +| `resource.method` | cadena | El método HTTP (por ejemplo, `POST`, `GET`). | +| `resource.status_code` | número | El código de estado de la respuesta. | +| `resource.url` | cadena | La URL del recurso. | +| `resource.url_host` | cadena | La parte de host de la URL. | +| `resource.url_path` | cadena | La parte de ruta de la URL. | +| `resource.url_query` | objecto | Las partes de la cadena de consulta de la URL desglosadas como atributos de clave/valor de parámetros de consulta. | +| `resource.url_scheme` | cadena | El nombre del protocolo de la URL (HTTP o HTTPS). | +| `resource.provider.name` | cadena | El nombre del proveedor de recursos. Por defecto es `unknown`. | +| `resource.provider.domain` | cadena | El dominio del proveedor del recurso. | +| `resource.provider.type` | cadena | El tipo de proveedor de recursos (por ejemplo, `first-party`, `cdn`, `ad`, `analytics`). | + +## Identificar recursos de terceros + +RUM infiere el nombre y la categoría del proveedor de recursos de la parte de host de la URL del recurso. Si el host de la URL del recurso coincide con el host de la URL de la página actual, la categoría se configura en `first party`. En caso contrario, la categoría será `cdn`, `analytics` o `social`, por ejemplo. + +## Tiempo de recursos y CORS + +La [API de tiempo de recursos][3] permite recopilar tiempo de recursos de RUM. Está sujeta a las limitaciones de seguridad de origen cruzado que los navegadores aplican a los scripts. Por ejemplo, si tu aplicación web está alojada en `www.example.com` y carga tus imágenes a través de `images.example.com`, por defecto solo obtendrás el tiempo correspondiente a los recursos cargados alojados en `www.example.com`. + +Para solucionarlo, activa la recopilación de datos ampliada para recursos sujetos a CORS añadiendo el encabezado de respuesta HTTP `Timing-Allow-Origin`a tus recursos de origen cruzado. Por ejemplo, para otorgar acceso al tiempo de recursos a cualquier origen, utiliza `Timing-Allow-Origin: *`. Puedes obtener más información sobre CORS en [los documentos web de MDN][4] + +## Referencias adicionales + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest +[2]: /es/real_user_monitoring/platform/connect_rum_and_traces +[3]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming +[4]: https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API#Coping_with_CORS \ No newline at end of file diff --git a/content/es/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md b/content/es/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md index d37dfd6ebebac..5e08b692aa78f 100644 --- a/content/es/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md +++ b/content/es/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md @@ -158,7 +158,7 @@ Los eventos de acción, error, recurso y tarea larga de RUM contienen informaci | Métrica | Tipo | Descripción | | ------------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `duration` | número (ns) | Tiempo total empleado en cargar el recurso. | +| `resource.duration` | número (ns) | Tiempo total empleado en cargar el recurso. | | `resource.size` | número (bytes) | Tamaño del recurso. | | `resource.connect.duration` | número (ns) | Tiempo empleado en establecer una conexión con el servidor (connectEnd - connectStart). | | `resource.ssl.duration` | número (ns) | Tiempo empleado por el protocolo TLS. Si la última solicitud no es en HTTPS, esta métrica no aparece (connectEnd - secureConnectionStart). | diff --git a/content/es/service_management/incident_management/declare.md b/content/es/service_management/incident_management/declare.md new file mode 100644 index 0000000000000..1760c4f4254a0 --- /dev/null +++ b/content/es/service_management/incident_management/declare.md @@ -0,0 +1,80 @@ +--- +title: Declarar un incidente +--- + +## Información general + +En el paradigma de Datadog, cualquiera de las siguientes situaciones es apropiada para declarar una incidencia: +- Un problema afecta o puede afectar a los clientes. +- Crees que un problema (incluso interno) debe tratarse con carácter de urgencia. +- No sabes si debes considerarlo un incidente - notificar a otras personas y aumentar la gravedad adecuadamente. + +Puedes declarar un incidente desde múltiples lugares dentro de la plataforma Datadog, como un widget gráfico en un dashboard, la interfaz de usuario de incidentes o cualquier alerta que se notifique en Datadog. + +## En la página de incidentes + +En la [interfaz de usuario de Datadog][1], haz clic en **Declare Incident** (Declarar incidencia) para crear una incidencia. + +El modal *Declarar incidente* muestra un panel lateral plegable que contiene texto de ayuda y descripciones de las gravedades y los estados utilizados por tu organización. El texto de ayuda y las descripciones se pueden personalizar en [Configuración del incidentes][2]. + +## Desde un monitor + +Puedes declarar un incidente directamente desde un monitor desde el desplegable Acciones. Selecciona **Declarar incidente** para abrir un modal de creación de incidentes y el monitor se añadirá al incidente como una señal. También puedes añadir un monitor a un incidente existente. + +{{< img src="service_management/incidents/declare/declare_monitor.png" alt="Menú desplegable de Acciones en monitores donde puedes seleccionar la opción Declarar incidente" style="width:50%;" >}} + +## Desde una señal de seguridad + +Declara un incidente directamente desde un panel lateral de señales de amenazas de Cloud SIEM o Cloud Security Management, haciendo clic en **Declarar incidente** o **Escalar investigación**. Para obtener más información, consulta [Investigar señales de seguridad][3] para Cloud Security Management. + +Declara un incidente desde una señal de Application Security Management a través de las acciones enumeradas en el panel lateral de la señal. Haz clic en **Mostrar todas las acciones** y haz clic en **Declarar incidente**. +Para obtener más información, consulta [Investigar señales de seguridad][4] para Application Security Management. + +{{< img src="/service_management/incidents/declare/declare_asm.png" alt="Tu descripción de imagen" style="width:90%;" >}} + +## A partir de un caso + +Declarar un incidente desde [Gestión de Casos][5]. En la página de detalles del caso individual, haz clic en **Declarar incidente** para elevar un caso a la categoría de incidente. + +{{< img src="service_management/incidents/declare/declare_case_management.png" alt="Ejemplo de una página de un caso donde está resaltado el botón Declarar incidente en la parte superior de la página" style="width:90%;" >}} + +## A partir de un gráfico +Puedes declarar una incidencia directamente desde un gráfico al hacer clic en el botón de exportación del gráfico y, a continuación, en **Declare incident** (Declarar incidencia). Aparecerá el modo de creación de incidencias y el gráfico se añadirá a la incidencia como una señal. + +{{< img src="service_management/incidents/from-a-graph.png" alt="Crear una incidencia desde un gráfico" style="width:80%;">}} + +## A partir de un test de Sintético + +Crea incidentes directamente desde un [Test de Sintético][8] a través del desplegable Acciones. Selecciona **Declarar incidente** para abrir un modal de creación de incidentes, donde se añade un resumen del test a tu línea de tiempo de incidentes, que te permite continuar la investigación desde ahí. + +{{< img src="service_management/incidents/declare/synthetics_declare_incident.png" alt="Declara un incidente desde un test de Sintético." style="width:90%;" >}} + +## Desde el portapapeles de Datadog +Utiliza el [Portapapeles de Datadog][6] para reunir varios monitores y gráficos y generar un incidente. Para declarar un incidente desde el portapapeles, copia un gráfico que desees investigar y abre el portapapeles con el comando `Cmd/Ctrl + Shift + K`. Haz clic en **Declarar incidente** o en el icono de exportación para añadirlo al incidente como señal. + +{{< img src="service_management/incidents/declare/declare_clipboard.png" alt="Declara un incidente desde el portapapeles de Datadog" style="width:90%;" >}} + +## Desde Slack + +Si tienes habilitada la opción [Integración de Datadog en Slack][7], puedes declarar un nuevo incidente con el comando de barra `/datadog incident` desde cualquier canal de Slack. + +Si el usuario que declara el incidente conecta su Slack a su cuenta Datadog, en forma predeterminada, ese usuario aparece como Comandante de incidentes. El Comandante de incidentes (CI) puede cambiarse posteriormente en la aplicación si fuera necesario. Si el usuario que declara un incidente no es miembro de una cuenta Datadog, el CI se asigna a una cuenta genérica `Slack app user` y puede asignarse a otro CI en la aplicación. + +{{< img src="service_management/incidents/from-slack.png" alt="Crear una incidencia desde Slack" style="width:60%;">}} + +Después de declarar un incidente desde Slack, se genera un canal de incidentes. + +## Próximos pasos + +{{< whatsnext desc="Añade información útil a tu incidente y brinda contexto a todos los participantes de la investigación.">}} + {{< nextlink href="/service_management/incident_management/describe" >}}Describe el incidente: Añade contexto y detalles{{< /nextlink >}} +{{< /whatsnext >}} + +[1]: https://app.datadoghq.com/incidents +[2]: /es/service_management/incident_management/incident_settings#information +[3]: /es/security/threats/security_signals/#declare-an-incident +[4]:/es/security/application_security/threats/security_signals/#declare-an-incident +[5]: /es/service_management/case_management/view_and_manage +[6]: /es/service_management/incident_management/datadog_clipboard +[7]: /es/integrations/slack/?tab=slackapplicationbeta#using-the-slack-app +[8]: https://app.datadoghq.com/synthetics/tests \ No newline at end of file diff --git a/content/es/service_management/workflows/actions/http.md b/content/es/service_management/workflows/actions/http.md deleted file mode 100644 index fc1343925e2f4..0000000000000 --- a/content/es/service_management/workflows/actions/http.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -disable_toc: false -further_reading: -- link: /service_management/workflows/connections/ - tag: Documentación - text: Más información sobre las credenciales de conexión para la automatización - de flujos de trabajo -title: Solicitudes HTTP ---- - -{{< site-region region="gov" >}} -
La automatización de flujos de trabajo no es compatible con el sitio de Datadog seleccionado ({{< region-param key="dd_site_name" >}}).
-{{< /site-region >}} - -Utiliza la acción **Make request** (Realizar solicitud) para realizar una solicitud personalizada a un endpoint HTTP. Puedes controlar el método de solicitud y su contenido, cómo se autentica y procesa, y cómo debe responder a situaciones como certificados caducados o redirecciones. Si necesitas añadir rangos de direcciones IP de Datadog a tu lista de autorizaciones, para que la acción HTTP funcione como se espera, utiliza las direcciones IP enumeradas en el objeto `webhooks`. Consulta la [API de rangos de IP][1] para obtener más información. - -Para añadir una solicitud HTTP: -- En un nuevo flujo de trabajo, haz clic en **Add step** (Añadir paso) y busca `Make request`. Selecciona la acción **Make request** (Realizar solicitud) para añadirla a tu flujo de trabajo. -- En un flujo de trabajo existente, haz clic en **+** y busca `Make request`. Selecciona la acción **Make request** (Realizar solicitud) para añadirla a tu flujo de trabajo. - -Especifica el método de solicitud y cualquier [autenticación][2] necesaria. Lee las siguientes secciones para obtener más información sobre las opciones de configuración disponibles. Opcionalmente, la solicitud puede esperar en las condiciones que especifiques en la sección **Conditional Wait** (Espera condicional) y volver a reintentar en un intervalo dado si la condición no se cumple. - -## Autenticación - -Si necesitas autenticar tu solicitud, utiliza la **Connection** (Conexión) de la acción para configurar el método de autenticación. Puedes seleccionar una conexión preconfigurada del menú desplegable o crear una conexión. - -### Crear una conexión AWS - -1. En la sección **Connection** (Conexión), haz clic en el icono más (**+**). -2. Selecciona **AWS**. -3. Introduce un **Connection Name** (Nombre de conexión), **Account ID** (ID de cuenta) y **AWS Role Name** (Nombre de rol AWS). -4. Haz clic en **Create** (Crear). - -### Crear una conexión Azure - -1. En la sección **Connection** (Conexión), haz clic en el icono más (**+**). -2. Selecciona **Azure**. -3. Introduce un **Connection Name** (Nombre de conexión), un **Tenant ID** (ID de arrendatario), un **Client ID** (ID de cliente) y un **Client Secret** (Secreto de cliente). -4. Opcionalmente, introduce el **Custom Scope** (Contexto personalizado) que se solicitará a Microsoft al adquirir un token de acceso OAuth 2. El contexto de un recurso se construye utilizando el URI identificador del recurso y `.default`, separados por una barra oblicua (`/`). Por ejemplo, `{identifierURI}/.default`. Para obtener más información, consulta [la documentación de Microsoft sobre contextos por defecto][3]. -5. Haz clic en **Create** (Crear). - -### Crear una conexión HTTP con autenticación basada en tokens - -La conexión con autenticación basada en tokens utiliza un token de portador para autenticar la solicitud HTTP. - -1. En la sección **Connection** (Conexión), haz clic en el icono más (**+**). -2. Selecciona **HTTP**. -3. Introduce un **Connection Name** (Nombre de conexión). -4. Introduce la **Base URL** (URL de base) para la autenticación. -5. En el menú desplegable **Authentication Type** (Tipo de autenticación), selecciona **Token Auth** (Autenticación mediante token). -6. Introduce un **Token Name** (Nombre de token) y un **Token Value** (Valor de token). Puedes introducir varios tokens. Para hacer referencia a tu token en un encabezado, un parámetro o el cuerpo de la solicitud, utiliza la sintaxis `{{ secretTokenName }}`. -7. Opcionalmente, puedes añadir **Request Headers** (Encabezados de solicitud), **URL parameters** (Parámetros URL) y un **Body** (Cuerpo) a tu solicitud. -8. Haz clic en **Create** (Crear). - -### Crear una conexión HTTP con autenticación básica - -La conexión con autenticación básica utiliza un encabezado de autorización con un nombre de usuario y una contraseña para autenticar la solicitud HTTP. - -1. En la sección **Connection** (Conexión), haz clic en el icono más (**+**). -2. Selecciona **HTTP**. -3. Introduce un **Connection Name** (Nombre de conexión). -4. Introduce la **Base URL** (URL de base) para la autenticación. -5. En el menú desplegable **Authentication Type** (Tipo de autenticación), selecciona **Basic Auth** (Autenticación básica). -6. Introduce un **Username** (Nombre de usuario) y un **Password** (Contraseña). El encabezado de la solicitud de autorización requerido se rellena automáticamente con tu nombre de usuario y tu contraseña. -7. Haz clic en **Create** (Crear). - -### Crear una conexión HTTP con autenticación en 2 pasos - -La conexión HTTP de 2 pasos te permite realizar una solicitud preliminar para recuperar un token de acceso con el que autenticar la solicitud HTTP. - -1. En la sección **Connection** (Conexión), haz clic en el icono más (**+**). -2. Selecciona **HTTP**. -3. Introduce un **Connection Name** (Nombre de conexión). -4. Introduce la **Base URL** (URL de base) para la autenticación. -5. En el menú desplegable **Authentication Type** (Tipo de autenticación), selecciona **2 Step Auth** (Autenticación en 2 pasos). - -{{< tabs >}} -{{% tab "Autenticación basada en tokens" %}} -Configura la consulta preliminar del token de acceso: -1. En el menú desplegable **Secret Type** (Tipo de secreto), selecciona **Token Auth** (Autenticación basada en tokens). -2. **Token Name** (Nombre de token) y un **Token Value** (Valor de token). -3. Introduce la **Request URL** (URL de solicitud) y especifica el tipo de solicitud como **GET** o **POST**. -4. Opcionalmente, puedes añadir **Request Headers** (Encabezados de solicitud), **URL parameters** (Parámetros URL) y un **Body** (Cuerpo) a tu solicitud. - -Obtén el token de acceso de la respuesta: -1. En **Variable Path to Access Token** (Ruta de la variable al token de acceso), introduce la ruta al token de acceso en la respuesta. Esta es la ruta a través de la cual se devuelve el token de acceso después de realizar la llamada de autenticación. Por ejemplo, si el token de acceso se devuelve como cuerpo de la solicitud de acceso, utiliza `body`. Si el token de acceso se devuelve en una propiedad llamada `token` de la respuesta `body`, utiliza `body.token`. Las rutas distinguen entre mayúsculas y minúsculas. -2 Opcionalmente, introduce un **Refresh Interval** (Intervalo de actualización). Esta es la duración hasta la expiración del token de acceso, indicada en segundos. Cuando el token caduca, la conexión solicita automáticamente un nuevo token de acceso. Si se establece un intervalo de `0`, se desactiva la actualización del token. - -Utiliza el token recuperado para autenticar la conexión: -1. En **Request Detail** (Detalle de la solicitud), introduce **Request Headers** (Encabezados de solicitud), **URL parameters** (Parámetros URL) y un **Body** (Cuerpo) para completar tu solicitud utilizando el token de acceso recuperado. -2. Haz clic en **Create** (Crear). -{{% /tab %}} - -{{% tab "Autenticación básica" %}} -Configura la consulta de autenticación preliminar: -1. En el menú desplegable **Secret Type** (Tipo de secreto), selecciona **Basic Auth** (Autentificación básica). -2. Introduce un **Username** (Nombre de usuario) y un **Password** (Contraseña). La sección **Request Headers** (Encabezados de solicitud) se rellena automáticamente con tu nombre de usuario y tu contraseña. - -Configura la solicitud de autenticación: -1. Introduce la **Request URL** (URL de la solicitud) y especifica el tipo de solicitud como **GET** o **POST**. -2. Opcionalmente, añade **Request Headers** (Encabezados de solicitud), **URL parameters** (Parámetros URL) y un **Body** (Cuerpo) a tu solicitud. - -Obtén el token de acceso de la respuesta: -1. En **Variable Path to Access Token** (Ruta de la variable al token de acceso), introduce la ruta al token de acceso en la respuesta. Esta es la ruta a través de la cual se devuelve el token de acceso después de realizar la llamada de autenticación. Por ejemplo, si el token de acceso se devuelve como cuerpo de la solicitud de acceso, utiliza `body`. Si el token de acceso se devuelve en una propiedad llamada `token` de la respuesta `body`, utiliza `body.token`. Las rutas distinguen entre mayúsculas y minúsculas. -2. Opcionalmente, introduce un **Refresh Interval** (Intervalo de actualización). Esta es la duración hasta el vencimiento del token de acceso, indicada en segundos. Cuando el token caduca, la conexión solicita automáticamente un nuevo token de acceso. Si se establece un intervalo de `0`, se desactiva la actualización del token. - -Utiliza el token recuperado para autenticar la conexión: -1. En **Request Detail** (Detalle de la solicitud), introduce **Request Headers** (Encabezados de solicitud), **URL parameters** (Parámetros URL) y un **Body** (Cuerpo) para completar tu solicitud utilizando el token de acceso recuperado. -1. Haz clic en **Create** (Crear). -{{% /tab %}} -{{< /tabs >}} - -### Crear una conexión HTTP mTLS - -La conexión de autenticación mutua TLS (mTLS) permite utilizar una clave privada y un certificado TLS para autenticar la solicitud HTTP. - -
El certificado del cliente (.crt, .pem) y la clave privada (.key, .pem) deben utilizar el formato PEM.
- -1. En la sección **Connection** (Conexión), haz clic en el icono más (**+**). -1. Selecciona **HTTP**. -1. Introduce un **Connection Name** (Nombre de conexión). -1. Introduce la **Base URL** (URL de base) para la autenticación. -1. En el menú desplegable **Authentication Type** (Tipo de autenticación), selecciona **mTLS Auth** (Autenticación mTLS). -1. Haz clic en **Upload File** (Cargar archivo) para cargar tu **Private Key** (Clave privada). -1. Haz clic en **Upload File** (Cargar archivo) para cargar tu **Certificate** (Certificado). -1. Haz clic en **Create** (Crear). - -## Entradas - -Se requiere una URL y un método de solicitud para tu solicitud. Opcionalmente, puedes introducir: -- parámetros URL -- encabezados -- tipo de contenido -- un cuerpo de solicitud -- cookies - -También puedes seleccionar si quieres permitir certificados caducados o seguir redireccionamientos. - -### Opciones de respuestas - -En **Error on Status** (Error de estado), introduce una lista delimitada por comas de cualquier código de estado sobre el cual devolver un error. Utiliza el menú desplegable **Response Parsing** (Clasificación de respuestas) para anular el método de clasificación de respuestas predeterminado, deducido de los encabezados, y **Response Encoding** (Codificación de respuestas), si el servidor de destino especifica una codificación incorrecta en sus encabezados de respuestas. - -## Leer más - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: https://docs.datadoghq.com/es/api/latest/ip-ranges/#list-ip-ranges -[2]: /es/service_management/workflows/access/ -[3]: https://learn.microsoft.com/en-us/azure/active-directory/develop/scopes-oidc#the-default-scope \ No newline at end of file diff --git a/content/es/service_management/workflows/connections.md b/content/es/service_management/workflows/connections.md deleted file mode 100644 index 19df8a8513e66..0000000000000 --- a/content/es/service_management/workflows/connections.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -algolia: - tags: - - flujo de trabajo - - flujos de trabajo - - automatización del flujo de trabajo -aliases: -- /es/flujos de trabajo/conexiones -- /es/flujos de trabajo/configuración -description: Conexiones de flujo de trabajo -disable_toc: false -further_reading: -- link: /getting_started/workflow_automation/ - tag: Documentación - text: Empezando con Workflow Automation -title: Conexiones ---- - -{{< site-region region="gov" >}} -
Workflow Automation no es compatible con el sitio Datadog seleccionado ({{< region-param key="dd_site_name" >}}).
-{{< /site-region >}} - -Dado que las acciones de flujo de trabajo se conectan con sistemas de software externos, es posible que tengas que autenticar tu cuenta Datadog en la integración correspondiente. Un flujo de trabajo solo puede ejecutarse correctamente si todas las acciones de flujo de trabajo que requieren autenticación pueden verificar la identidad de tu cuenta Datadog. Cuando concedas permisos a Datadog, asegúrate de seguir las mejores prácticas de seguridad y de conceder únicamente los permisos necesarios para que se ejecute un flujo de trabajo. - -Las acciones de flujo de trabajo pueden autenticarse de dos maneras: -- Credenciales y permisos configurados en el cuadro de integración -- Credenciales de conexión - -## Credenciales de cuadro de integración - -Las credenciales y la autenticación de cuenta que configures en los siguientes cuadros de integración Datadog se propagan automáticamente a las acciones correspondientes en Workflow Automation: -- Jira -- Buscapersonas -- Slack -- GitHub - -Configurar los cuadros de integración siguiendo las instrucciones de [Datadog Integrations, integraciones Datadog][6]. - -Si la integración que necesitas configurar no aparece en la lista anterior, configura las credenciales de conexión. - -## Credenciales de conexión - -Las conexiones de flujo de trabajo amplían sus integraciones instaladas para ofrecerte control sobre la autenticación de los pasos del flujo de trabajo. Utiliza las credenciales de conexión para autenticar una [generic action (acción genérica)][8] o cualquier acción para la que el cuadro de integración no ofrezca autenticación. Para una lista de integraciones que utilizan el cuadro de integración para la autenticación, consulta la sección [Integration tile credentials (credenciales del cuadro de integración)](#integration-tile-credentials). Las credenciales de conexión solo están disponibles para su uso dentro del producto Workflow Automation. - -Las conexiones admiten los siguientes ejemplos de casos de uso: -- La integración que necesitas no está disponible como conexión integrada. -- Deseas autenticar una acción personalizada. Por ejemplo, necesitas utilizar la acción HTTP con tu propio servicio. -- Los permisos necesarios no son compatibles con la integración, como los permisos de escritura en AWS. -- Deseas un control de acceso granular, por ejemplo, restringiendo el acceso de los usuarios a determinados flujos de trabajo. - -### Consideraciones sobre la seguridad de la conexión - -Antes de crear una conexión, piensa en los permisos necesarios para cumplir la tarea requerida y concede a la conexión solo los permisos necesarios para cumplir esa tarea. Además, la conexión debe estar restringida únicamente a las personas que necesiten utilizarla. - -Siempre que sea posible, utiliza conexiones granulares para diferentes flujos de trabajo. Por ejemplo, si tienes un flujo de trabajo que escribe en un bucket de Amazon S3 y un flujo de trabajo que termina instancias de Amazon EC2, no utilices la misma conexión para ambos flujos de trabajo. En su lugar, crea dos conexiones respectivas, cada una correspondiente a un rol de IAM con contexto limitado. - -## Trabajar con conexiones - -### Ver conexiones - -1. Desde la [Workflow Automation page (página de Workflow Automation)][2], haz clic en **Connections** (Conexiones) en la parte superior derecha. Se abre la ventana [connections list (lista de conexiones)][3]. -1. Haz clic en una línea para ver los detalles de la conexión. - -### Crear una conexión - -Para establecer una conexión, se requiere la siguiente información: -- A qué conectarse (por ejemplo, nombre del producto, URL) -- Cómo autenticarse (por ejemplo, clave API, nombre de usuario/contraseña, oauth) - -Para crear una conexión: -1. Navega hasta la [connections list (lista de conexiones)][3]. -1. Haz clic en el botón **New Connection** (Nueva conexión) situado en la parte superior derecha. Aparece el cuadro de diálogo **New Connection** (Nueva conexión). -1. Haz clic en un icono para elegir un esquema integración. -1. Rellena los campos correspondientes. Haz clic en **Create** (Crear). - -También puedes añadir una conexión desde la página de flujo de trabajo: -1. Ve a [Workflow Automation list (lista de Workflow Automation)][9]. -1. Selecciona el flujo de trabajo que contiene la acción a la que necesitas añadir una credencial. Aparecerá el generador de flujos de trabajo. -1. En la visualización del flujo de trabajo, haz clic en la acción a la que necesitas añadir una credencial. El panel de la derecha se rellena con los detalles de la acción. -1. En la pestaña **Configure** (Configurar), busca el menú desplegable **Connection** (Conexión) y haz clic en el icono **+**. -1. En el cuadro de diálogo **New Connection** (Nueva conexión), asigna un nombre a la conexión e introduce los datos de autenticación necesarios. -1. Haz clic en **Save** (Guardar). - -El siguiente ejemplo muestra el cuadro de diálogo **New Connection** (Nueva conexión) para la conexión OpenAI. Cada conexión requiere una información de autenticación diferente. La conexión OpenAI requiere un Nombre de conexión y un token de API válidos. - -{{< img src="service_management/workflows/new-connection2.png" alt="Cuadro de diálogo Nueva conexión para la conexión OpenAI" >}} - -### Editar una conexión - -1. Navega hasta la [connections list (lista de conexiones)][3]. -1. Pasa el cursor sobre la conexión que deseas editar. Los iconos **Edit** (Editar), **Permissions** (Permisos) y **Delete** (Eliminar) aparecen a la derecha. -1. Haz clic en el icono del lápiz (**Edit**). Aparecerá un cuadro de diálogo. -1. Actualiza los campos que deseas modificar. -1. Haz clic en **Save** (Guardar). - -### Eliminar una conexión - -1. Navega hasta la [connections list (lista de conexiones)][3]. -1. Pasa el cursor sobre la conexión que deseas eliminar. A la derecha aparecen los iconos **Editar**, **Permisos** y **Eliminar**. -1. Haz clic en el icono de la papelera (**Eliminar**). Aparecerá el texto "¿Estás seguro?". -1. Selecciona **Eliminar**. - -### Restringir el uso de la conexión - -Para saber cómo restringir el uso de la conexión, consulta [Access and Authentication (Acceso y autenticación)][4]. - -## Conexión HTTP - -Para conectarte a una dirección servicio arbitraria, utiliza el tipo de conexión HTTP. Para conocer las opciones de autenticación y las instrucciones de configuración, consulta [HTTP action (acción HTTP)][10]. - -## Leer más - -{{< partial name="whats-next/whats-next.html" >}} - -[1]: /es/service_management/workflows/actions_catalog/generic_actions/ -[2]: https://app.datadoghq.com/workflow -[3]: https://app.datadoghq.com/workflow/connections -[4]: /es/service_management/workflows/access/#restrict-connection-use -[6]: /es/integrations/ -[8]: /es/service_management/workflows/actions_catalog/generic_actions/ -[9]: https://app.datadoghq.com/workflow -[10]: /es/service_management/workflows/actions/http/ \ No newline at end of file diff --git a/content/fr/api/latest/app-builder/_index.md b/content/fr/api/latest/app-builder/_index.md new file mode 100644 index 0000000000000..dffd4e3fb8dd0 --- /dev/null +++ b/content/fr/api/latest/app-builder/_index.md @@ -0,0 +1,3 @@ +--- +title: App Builder +--- diff --git a/content/fr/real_user_monitoring/browser/data_collected.md b/content/fr/real_user_monitoring/browser/data_collected.md index 817a9ab5362b0..4771ee6ed29ff 100644 --- a/content/fr/real_user_monitoring/browser/data_collected.md +++ b/content/fr/real_user_monitoring/browser/data_collected.md @@ -10,7 +10,7 @@ further_reading: - link: https://www.datadoghq.com/blog/real-user-monitoring-with-datadog/ tag: Blog text: Présentation du service Real User Monitoring (RUM) de Datadog -- link: /real_user_monitoring/browser/modifying_data_and_context +- link: /real_user_monitoring/browser/advanced_configuration tag: Documentation text: Modifier des données RUM et ajouter du contexte - link: /real_user_monitoring/explorer/ @@ -25,100 +25,34 @@ further_reading: title: Données RUM recueillies (Browser) --- -## Présentation +## Section Overview Le SDK Browser RUM génère des événements auxquels sont associés des métriques et attributs. Chaque événement RUM contient tous les [attributs par défaut](#attributs-par-defaut), comme l'URL de la page (`view.url`) et des informations sur l'utilisateur, telles que son type d'appareil (`device.type`) et son pays (`geo.country`). Il existe d'autres [métriques et attributs propres à un type d'événement donné](#metriques-et-attributs-specifiques-a-un-evenement). Par exemple, la métrique `view.loading_time` est associée aux événements de type vue, et l'attribut `resource.method` aux événements de type ressource. -| Type d'événement | Rétention | Description | +| Type d'événement | Rétention | Rôle | |----------------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Session | 30 jours | Une session utilisateur débute lorsqu'un utilisateur commence à parcourir l'application Web. Une session inclut des informations générales sur l'utilisateur (navigateur, appareil, géolocalisation). Elle agrège tous les événements RUM recueillis lors du parcours utilisateur en appliquant un attribut `session.id` unique. **Remarque :** la session est réinitialisée après 15 minutes d'inactivité. | | Vue | 30 jours | Un événement de type Vue est généré à chaque fois qu'un utilisateur consulte une page de l'application Web. Tant que l'utilisateur reste sur la même page, les événements de type Ressource, Tâche longue, Erreur et Action sont associés à cette vue RUM via l'attribut `view.id`. | -| Ressource | 15 jours | Un événement de type Ressource est généré pour les images, XHR, Fetch, CSS ou bibliothèques JS chargés sur une page Web. Celui-ci contient des informations détaillées sur le temps de chargement. | -| Tâche longue | 15 jours | Un événement de type Tâche longue est généré à chaque fois qu'une tâche du navigateur bloque le thread principal pendant plus de 50 ms. | -| Error | 30 jours | La fonction RUM recueille toutes les erreurs frontend émises par le navigateur. | +| Ressource | 30 jours | Un événement de type Ressource est généré pour les images, XHR, Fetch, CSS ou bibliothèques JS chargés sur une page Web. Celui-ci contient des informations détaillées sur le temps de chargement. | +| Tâche longue | 30 jours | Un événement de type Tâche longue est généré à chaque fois qu'une tâche du navigateur bloque le thread principal pendant plus de 50 ms. | +| Erreur | 30 jours | La fonction RUM recueille toutes les erreurs frontend émises par le navigateur. | | Action | 30 jours | Les événements RUM de type Action enregistrent les interactions effectuées durant chaque parcours utilisateur et peuvent également être envoyés manuellement pour surveiller des actions utilisateur personnalisées. | Le schéma suivant présente la hiérarchie des événements RUM : {{< img src="real_user_monitoring/data_collected/event-hierarchy.png" alt="Hiérarchie des événements RUM" style="width:50%;border:none" >}} - ## Attributs par défaut -Chacun de ces types d'événements possède par défaut les attributs ci-dessous. Vous pouvez donc toujours les utiliser, peu importe le type d'événement RUM interrogé. - -### Core - -| Nom de l'attribut | Type | Description | -|------------------|--------|-----------------------------| -| `type` | chaîne | Le type de l'événement (par exemple, `view` ou `resource`). | -| `application.id` | chaîne | L'ID d'application Datadog généré lorsque vous créez une application RUM. | -| `service` | chaîne | Un service désigne un ensemble de pages créées par une équipe qui offrent une fonctionnalité spécifique dans votre application Browser. Vous pouvez attribuer des pages Web à un service à l'aide du [suivi manuel des vues][1]. | - -### Attributs de vue - -Les événements RUM de type Action, Erreur, Ressource et Tâche longue contiennent des informations sur la vue RUM active au moment de la collecte : - -| Nom de l'attribut | Type | Description | -|--------------------------------|--------|----------------------------------------------------------------------------------------------------------------| -| `view.id` | chaîne | ID généré aléatoirement pour chaque vue de page. | -| `view.loading_type` | chaîne | Le type de chargement de page : `initial_load` ou `route_change`. Pour en savoir plus, consultez la [documentation sur la prise en charge des applications monopage][2].| -| `view.referrer` | chaîne | L'URL de la page Web précédente à partir de laquelle l'utilisateur a accédé à la page actuelle. | -| `view.url` | chaîne | L'URL de la vue. | -| `view.url_hash` | chaîne | La partie de l'URL correspondant au hachage.| -| `view.url_host` | chaîne | La partie de l'URL correspondant au host. | -| `view.url_path` | chaîne | La partie de l'URL correspondant au chemin. | -| `view.url_path_group` | chaîne | Le groupe d'URL généré automatiquement pour les URL connexes (par exemple, `/dashboard/?` pour `/dashboard/123` et `/dashboard/456`). | -| `view.url_query` | objet | Les parties de l'URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête. | -| `view.url_scheme` | objet | La partie de l'URL correspondant au schéma. | - -### Appareil - -Les attributs sur l'appareil suivants sont joints automatiquement à tous les événements recueillis par Datadog : - -| Nom de l'attribut | Type | Description | -|------------------------------------------|--------|-------------------------------------------------| -| `device.type` | chaîne | Le type d'appareil indiqué par l'appareil (en-tête HTTP User-Agent). | -| `device.brand` | chaîne | La marque de l'appareil indiquée par l'appareil (en-tête HTTP User-Agent). | -| `device.model` | chaîne | Le modèle de l'appareil indiqué par l'appareil (en-tête HTTP User-Agent). | -| `device.name` | chaîne | Le nom de l'appareil indiqué par l'appareil (en-tête HTTP User-Agent). | - -### Système d'exploitation - -Les attributs sur le système d'exploitation suivants sont joints automatiquement à tous les événements recueillis par Datadog : - -| Nom de l'attribut | Type | Description | -|------------------------------------------|--------|-------------------------------------------------| -| `os.name` | chaîne | Le nom du système d'exploitation indiqué par l'appareil (en-tête HTTP User-Agent). | -| `os.version` | chaîne | La version du système d'exploitation indiquée par l'appareil (en-tête HTTP User-Agent). | -| `os.version_major` | chaîne | La version majeure du système d'exploitation indiquée par l'appareil (en-tête HTTP User-Agent). | - -### Géolocalisation - -Les attributs suivants sont liés à la géolocalisation des adresses IP : - -| Nom complet | Type | Description | -|:--------------------------------------------|:-------|:-------------------------------------------------------------------------------------------------------------------------------------| -| `geo.country` | chaîne | Le nom du pays. | -| `geo.country_iso_code` | chaîne | Le [code ISO][3] du pays (par exemple, `US` pour les États-Unis ou `FR` pour la France). | -| `geo.country_subdivision` | chaîne | Le nom du premier niveau de division du pays (par exemple, `California` aux États-Unis ou le département de la `Sarthe` en France). | -| `geo.continent_code` | chaîne | Le code ISO du continent (`EU`, `AS`, `NA`, `AF`, `AN`, `SA` ou `OC`). | -| `geo.continent` | chaîne | Le nom du continent (`Europe`, `Australia`, `North America`, `Africa`, `Antarctica`, `South America` ou `Oceania`). | -| `geo.city` | chaîne | Le nom de la ville (par exemple, `Paris` ou `New York`). | - -**Remarque** : par défaut, Datadog stocke l'adresse IP client. Si vous souhaitez ne plus recueillir d'adresse IP, [contactez l'assistance][4]. Cette opération n'a aucune incidence sur la collecte des attributs de géolocalisation répertoriés ci-dessus. - -### Attributs utilisateur - -En plus des attributs par défaut, vous pouvez ajouter des données sur les utilisateurs à tous les types d'événements RUM en [identifiant les sessions utilisateur][5]. Vous avez ainsi la possibilité de suivre le parcours d'un utilisateur spécifique, d'identifier les utilisateurs les plus affectés par des erreurs et de surveiller les performances de vos utilisateurs les plus importants. +Consultez la liste complète des [attributs standards][1] pour le RUM Browser. Par défaut, les attributs sont joints à chaque type d'événement, de sorte que vous pouvez les utiliser quel que soit le type d'événement du RUM interrogé. ## Métriques et attributs spécifiques à un événement ### Métriques des sessions -| Métrique | Type | Description | +| Métrique | Type | Rôle | |------------|--------|----------------------------| | `session.time_spent` | nombre (ns) | Durée d'une session utilisateur. | | `session.view.count` | nombre | Nombre total de vues recueillies lors de la session. | @@ -129,12 +63,12 @@ En plus des attributs par défaut, vous pouvez ajouter des données sur les util ### Attributs des sessions -| Nom de l'attribut | Type | Description | +| Nom de l'attribut | Type | Rôle | |--------------------------------|--------|----------------------------------------------------------------------------------------------------------------| | `session.id` | chaîne | Un ID généré aléatoirement pour chaque session. | -| `session.ip` | chaîne | L'adresse IP client. Si vous souhaitez arrêter la collecte de cet attribut, [contactez l'assistance][4]. | -| `session.is_active` | booléen | Indique si la session est actuellement active. Une session prend fin lorsqu'un utilisateur quitte l'application ou ferme la fenêtre du navigateur. Elle expire après 4 heures ou 15 minutes d'inactivité. | -| `session.type` | chaîne | Le type de session : `user` ou `synthetics`. Les sessions provenant des [tests Browser de la surveillance Synthetic][6] sont exclus de la facturation. | +| `session.ip` | chaîne | Adresse IP du client. si vous souhaitez arrêter de recueillir cet attribut, modifiez le paramètre correspondant dans les [détails de votre application][2]. | +| `session.is_active` | booléen | Indique si la session est active. La session prend fin après 4 heures d'activité ou 15 minutes d'inactivité. | +| `session.type` | chaîne | Le type de session : `user` ou `synthetics`. Les sessions provenant des [tests Browser de la surveillance Synthetic][3] sont exclus de la facturation. | | `session.referrer` | chaîne | L'URL de la page Web précédente à partir de laquelle l'utilisateur a accédé à la page actuelle. | | `session.initial_view.id` | chaîne | L'ID de la première vue RUM générée par l'utilisateur. | | `session.initial_view.url_host` | chaîne | La partie de l'URL correspondant au host. | @@ -151,20 +85,26 @@ En plus des attributs par défaut, vous pouvez ajouter des données sur les util ### Métriques de durée des vues +**Remarque** : les métriques de durée d'affichage incluent la durée pendant laquelle une page est ouverte en arrière-plan. -| Attribut | Type | Description | +| Attribut | Type | Rôle | |---------------------------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `view.time_spent` | nombre (ns) | Temps passé sur la vue actuelle. | | `view.first_byte` | nombre (ns) | Temps écoulé avant la réception du premier octet de la vue. | | `view.largest_contentful_paint` | nombre (ns) | Temps nécessaire lors du chargement de la page pour afficher le plus grand objet DOM dans la fenêtre d'affichage. | +| `view.largest_contentful_paint_target_selector` | chaîne (sélecteur CSS) | Sélecteur CSS de lʼélément correspondant au rendu du contenu principal. | | `view.first_input_delay` | nombre (ns) | Délai entre le moment où l'utilisateur interagit pour la première fois avec la page et le moment où le navigateur répond à cette interaction. | +| `view.first_input_delay_target_selector` | chaîne (sélecteur CSS) | Sélecteur CSS du premier élément avec lequel l'utilisateur a interagi. | +| `view.interaction_to_next_paint`| nombre (ns) | Durée la plus longue entre l'interaction d'un utilisateur avec la page et le rendu suivant. | +| `view.interaction_to_next_paint_target_selector`| chaîne (sélecteur CSS) | Sélecteur CSS de l'élément associé à l'interaction la plus longue avant le rendu suivant. | | `view.cumulative_layout_shift` | nombre | Nombre de mouvements de page inattendus causés par le chargement de contenu dynamique (par exemple, des publicités tierces). Lorsqu'aucun décalage ne se produit, cette métrique a pour valeur `0`. | -| `view.loading_time` | nombre (ns) | Temps écoulé avant que la page ne soit prête et que toutes les requêtes réseau ou mutations DOM soient terminées. [Consultez la section Surveillance des performances de pages pour en savoir plus][7]. | -| `view.first_contentful_paint` | nombre (ns) | Temps écoulé avant le premier affichage de texte, d'une image (images d'arrière-plan incluses), d'un canvas non blanc ou d'un SVG. Pour en savoir plus sur le rendu par le navigateur, consultez la [définition du w3c][8]. | -| `view.dom_interactive` | nombre (ns) | Temps écoulé avant que le parser ait fini de travailler sur le document principal. [Consultez la documentation MDN pour en savoir plus][9]. | -| `view.dom_content_loaded` | nombre (ns) | Temps écoulé avant que l'événement de chargement ne se déclenche et que le document HTML initial soit entièrement chargé et parsé, même si les feuilles de style, les images et les sous-cadres qui ne bloquent pas l'affichage n'ont pas fini de charger. [Consultez la documentation MDN pour en savoir plus][10]. | -| `view.dom_complete` | nombre (ns) | Temps écoulé avant que la page et toutes les sous-ressources soient prêtes. Pour l'utilisateur, l'indicateur de chargement à proximité du curseur disparaît alors. [Consultez la documentation MDN pour en savoir plus][11]. | -| `view.load_event` | nombre (ns) | Temps écoulé avant que l'événement de chargement ne se déclenche, indiquant que la page est entièrement chargée. Cet événement entraîne généralement le déclenchement de logique d'application supplémentaire. [Consultez la documentation MDN pour en savoir plus][12]. | +| `view.cumulative_layout_shift_target_selector` | chaîne (sélecteur CSS) | Sélecteur CSS de lʼélément le plus modifié contribuant au CLS de la page. | +| `view.loading_time` | nombre (ns) | Temps écoulé avant que la page ne soit prête et que toutes les requêtes réseau ou mutations DOM soient terminées. [Consultez la section Surveillance des performances de pages pour en savoir plus][4]. | +| `view.first_contentful_paint` | nombre (ns) | Temps écoulé avant le premier affichage de texte, d'une image (images d'arrière-plan incluses), d'un canvas non blanc ou d'un SVG. Pour en savoir plus sur le rendu par le navigateur, consultez la [définition du w3c][5]. | +| `view.dom_interactive` | nombre (ns) | Temps écoulé avant que le parser ait fini de travailler sur le document principal. [Consultez la documentation MDN pour en savoir plus][6]. | +| `view.dom_content_loaded` | nombre (ns) | Temps écoulé avant que l'événement de chargement ne se déclenche et que le document HTML initial soit entièrement chargé et parsé, même si les feuilles de style, les images et les sous-cadres qui ne bloquent pas l'affichage n'ont pas fini de charger. [Consultez la documentation MDN pour en savoir plus][7]. | +| `view.dom_complete` | nombre (ns) | Temps écoulé avant que la page et toutes les sous-ressources ne soient prêtes. Pour l'utilisateur, l'indicateur de chargement à proximité du curseur disparaît alors. [Consultez la documentation MDN pour en savoir plus][8]. | +| `view.load_event` | nombre (ns) | Temps écoulé avant que l'événement de chargement ne se déclenche, indiquant que la page est entièrement chargée. Cet événement entraîne généralement le déclenchement de logique d'application supplémentaire. [Consultez la documentation MDN pour en savoir plus][9]. | | `view.error.count` | nombre | Nombre total d'erreurs recueillies pour cette vue. | | `view.long_task.count` | nombre | Nombre total de tâches longues recueillies pour cette vue. | | `view.resource.count` | nombre | Nombre total de ressources recueillies pour cette vue. | @@ -172,11 +112,11 @@ En plus des attributs par défaut, vous pouvez ajouter des données sur les util ### Métriques de durée des ressources -L'[API Performance Resource Timing][13] recueille des données réseau temporelles détaillées sur le chargement des ressources d'une application. +L'[API Performance Resource Timing][10] recueille des données réseau temporelles détaillées sur le chargement des ressources d'une application. -| Métrique | Type | Description | +| Métrique | Type | Rôle | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | nombre | Durée totale de chargement de la ressource. | +| `resource.duration` | nombre | Durée totale de chargement de la ressource. | | `resource.size` | nombre (octets) | Taille de la ressource. | | `resource.connect.duration` | nombre (ns) | Durée d'établissement d'une connexion au serveur (connectEnd - connectStart). | | `resource.ssl.duration` | nombre (ns) | Durée d'établissement de la liaison TLS. Si la dernière requête ne suit pas le protocole HTTPS, cette métrique n'apparaît pas (connectEnd - secureConnectionStart). | @@ -187,69 +127,64 @@ L'[API Performance Resource Timing][13] recueille des données réseau temporell ### Attributs des ressources -| Attribut | Type | Description | -|--------------------------------|--------|-----------------------------------------------------------------------------------------| -| `resource.type` | chaîne | Le type de ressource à recueillir (par exemple, `css`, `javascript`, `media`, `XHR` ou `image`). | -| `resource.method` | chaîne | La méthode HTTP (par exemple, `POST` ou `GET`). | -| `resource.status_code` | nombre | Le code de statut de la réponse. | -| `resource.url` | chaîne | L'URL de la ressource. | -| `resource.url_host` | chaîne | La partie de l'URL correspondant au host. | -| `resource.url_path` | chaîne | La partie de l'URL correspondant au chemin. | -| `resource.url_query` | objet | Les parties de l'URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête. | -| `resource.url_scheme` | chaîne | Le nom du protocole de l'URL (HTTP ou HTTPS). | -| `resource.provider.name` | chaîne | Le nom du fournisseur de ressources. Valeur par défaut : `unknown`. | -| `resource.provider.domain` | chaîne | Le domaine du fournisseur de ressources. | -| `resource.provider.type` | chaîne | Le type de fournisseur de ressources (par exemple, `first-party`, `cdn`, `ad` ou `analytics`). | - +| Attribut | Type | Rôle | +|----------------------------|--------|------------------------------------------------------------------------------------------------------| +| `resource.type` | chaîne | Le type de ressource à recueillir (par exemple, `css`, `javascript`, `media`, `XHR` ou `image`). | +| `resource.method` | chaîne | La méthode HTTP (par exemple, `POST` ou `GET`). | +| `resource.status_code` | nombre | Le code d'état de la réponse (disponible uniquement pour les ressources fetch/XHR). | +| `resource.url` | chaîne | L'URL de la ressource. | +| `resource.url_host` | chaîne | La partie de l'URL correspondant au host. | +| `resource.url_path` | chaîne | La partie de l'URL correspondant au chemin. | +| `resource.url_query` | objet | Les parties de l'URL correspondant à la chaîne de requête, décomposées en attributs key/value de paramètres de requête. | +| `resource.url_scheme` | chaîne | Le nom du protocole de l'URL (HTTP ou HTTPS). | +| `resource.provider.name` | chaîne | Le nom du fournisseur de ressources. Valeur par défaut : `unknown`. | +| `resource.provider.domain` | chaîne | Le domaine du fournisseur de ressources. | +| `resource.provider.type` | chaîne | Le type de fournisseur de ressources (par exemple, `first-party`, `cdn`, `ad` ou `analytics`). | ### Métriques de durée des tâches longues -| Métrique | Type | Description | +| Métrique | Type | Rôle | |------------|--------|----------------------------| | `long_task.duration` | nombre | Durée de la tâche longue. | - ### Attributs d'erreur -| Attribut | Type | Description | +| Attribut | Type | Rôle | |-----------------|--------|-------------------------------------------------------------------| -| `error.source` | chaîne | L'origine de l'erreur (par exemple, `console` ou `network`). | +| `error.source` | chaîne | L'origine de l'erreur (par exemple, `console``). Consultez la section [Sources des erreurs][11]. | | `error.type` | chaîne | Le type d'erreur (ou le code dans certains cas). | | `error.message` | chaîne | Un message d'une ligne lisible et concis décrivant l'événement. | | `error.stack` | chaîne | La stack trace ou toutes informations complémentaires relatives à l'erreur. | - #### Erreurs source -Les erreurs de type source comprennent des informations au niveau du code concernant l'erreur. Pour en savoir plus les différents types d'erreurs, consultez [la documentation MDN][13]. +Les erreurs de type source comprennent des informations au niveau du code concernant l'erreur. Pour en savoir plus les différents types d'erreurs, consultez [la documentation MDN][12]. -| Attribut | Type | Description | +| Attribut | Type | Rôle | |-----------------|--------|-------------------------------------------------------------------| | `error.type` | chaîne | Le type d'erreur (ou le code dans certains cas). | - - ### Métriques de durée des actions -| Métrique | Type | Description | +| Métrique | Type | Rôle | |--------------|--------|--------------------------| -| `action.loading_time` | nombre (ns) | La durée de chargement de l'action. Consultez la [documentation relative aux actions utilisateur][14] pour découvrir comment elle est calculée. | +| `action.loading_time` | nombre (ns) | La durée de chargement de l'action. Consultez la [documentation relative au suivi des actions utilisateur][13] pour découvrir sa méthode de calcul. | | `action.long_task.count` | nombre | Nombre total de tâches longues recueillies pour cette action. | | `action.resource.count` | nombre | Nombre total de ressources recueillies pour cette action. | | `action.error.count` | nombre | Nombre total d'erreurs recueillies pour cette action.| ### Attributs d'action -| Attribut | Type | Description | +| Attribut | Type | Rôle | |--------------|--------|--------------------------| | `action.id` | chaîne | UUID de l'action utilisateur. | -| `action.type` | chaîne | Type d'action utilisateur. Pour les [actions utilisateur personnalisées][15], ce paramètre est défini sur `custom`. | +| `action.type` | chaîne | Type d'action utilisateur. Pour les [actions utilisateur personnalisées][14], ce paramètre est défini sur `custom`. | | `action.target.name` | chaîne | Élément avec lequel l'utilisateur a interagi. Uniquement pour les actions recueillies automatiquement. | -| `action.name` | chaîne | Le nom courant de l'action créée (par exemple, `Clic sur #checkout`). Pour les [actions utilisateur personnalisées][15], il s'agit du nom d'action indiqué dans l'appel de l'API. | +| `action.name` | chaîne | Le nom courant de l'action créée (par exemple, `Clic sur #checkout`). Pour les [actions utilisateur personnalisées][14], il s'agit du nom d'action indiqué dans l'appel de l'API. | ### Champs des signaux de frustration -| Champ | Type | Description | +| Champ | Type | Rôle | |-------------------------------|--------|---------------------------------------------------------------| | `session.frustration.count` | nombre | Nombre total de signaux de frustration associés à une session. | | `view.frustration.count` | nombre | Nombre total de signaux de frustration associés à une vue. | @@ -257,22 +192,31 @@ Les erreurs de type source comprennent des informations au niveau du code concer | `action.frustration.type:rage_click` | chaîne | Clics de rage détectés par le SDK Browser RUM. | | `action.frustration.type:error_click` | chaîne | Clics effectués par erreur détectés par le SDK Browser RUM. | +### Attributs UTM + +| Champ | Type | Rôle | +|-------------------------------|--------|---------------------------------------------------------------| +| `view.url_query.utm_source` | chaîne | Le paramètre de l'URL effectuant le suivi de la source du trafic. | +| `view.url_query.utm_medium` | chaîne | Le paramètre de l'URL effectuant le suivi du canal à l'origine du trafic. | +| `view.url_query.utm_campaign` | chaîne | Le paramètre de l'URL identifiant la campagne de marketing spécifique liée à cette vue. | +| `view.url_query.utm_content` | chaîne | Le paramètre de l'URL identifiant l'élément spécifique sur lequel un utilisateur a cliqué dans une campagne marketing. | +| `view.url_query.utm_term` | chaîne | Le paramètre de l'URL effectuant le suivi du mot-clé recherché par un utilisateur et ayant déclenché une campagne donnée. | + ## Pour aller plus loin {{< partial name="whats-next/whats-next.html" >}} -[1]: /fr/real_user_monitoring/browser/modifying_data_and_context/?tab=npm#override-default-rum-view-names -[2]: /fr/real_user_monitoring/browser/monitoring_page_performance/#monitoring-single-page-applications-spa -[3]: https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes -[4]: /fr/help/ -[5]: /fr/real_user_monitoring/browser/modifying_data_and_context/#identify-user-sessions -[6]: /fr/synthetics/browser_tests/ -[7]: /fr/real_user_monitoring/browser/monitoring_page_performance/#how-loading-time-is-calculated -[8]: https://www.w3.org/TR/paint-timing/#sec-terminology -[9]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/domInteractive -[10]: https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event -[11]: https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event -[12]: https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event -[13]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming -[14]: /fr/real_user_monitoring/browser/tracking_user_actions/?tab=npm#how-action-loading-time-is-calculated -[15]: /fr/real_user_monitoring/browser/tracking_user_actions/?tab=npm#custom-actions \ No newline at end of file +[1]: /fr/standard-attributes/?product=browser +[2]: /fr/data_security/real_user_monitoring/#ip-address +[3]: /fr/synthetics/browser_tests/ +[4]: /fr/real_user_monitoring/browser/monitoring_page_performance/#how-loading-time-is-calculated +[5]: https://www.w3.org/TR/paint-timing/#sec-terminology +[6]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming/domInteractive +[7]: https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event +[8]: https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event +[9]: https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event +[10]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming +[11]: /fr/real_user_monitoring/browser/collecting_browser_errors#error-sources +[12]: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming +[13]: /fr/real_user_monitoring/browser/tracking_user_actions/?tab=npm#action-timing-metrics +[14]: /fr/real_user_monitoring/browser/tracking_user_actions/?tab=npm#custom-actions \ No newline at end of file diff --git a/content/fr/real_user_monitoring/browser/monitoring_resource_performance.md b/content/fr/real_user_monitoring/browser/monitoring_resource_performance.md index 8990844ce3f06..9b05a264f318b 100644 --- a/content/fr/real_user_monitoring/browser/monitoring_resource_performance.md +++ b/content/fr/real_user_monitoring/browser/monitoring_resource_performance.md @@ -37,7 +37,7 @@ Les méthodes natives Fetch et XHR pour navigateur, ainsi que l'[API Performance | Attribut | Type | Description | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | nombre | Durée totale de chargement de la ressource. | +| `resource.duration` | nombre | Durée totale de chargement de la ressource. | | `resource.size` | nombre (octets) | Taille de la ressource. | | `resource.connect.duration` | nombre (ns) | Durée d'établissement d'une connexion au serveur (connectEnd - connectStart). | | `resource.ssl.duration` | nombre (ns) | Durée d'établissement de la liaison TLS. Si la dernière requête ne suit pas le protocole HTTPS, cette métrique n'apparaît pas (connectEnd - secureConnectionStart).| diff --git a/content/fr/service_management/workflows/connections.md b/content/fr/service_management/workflows/connections.md deleted file mode 100644 index 5b240a3b6fc5a..0000000000000 --- a/content/fr/service_management/workflows/connections.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -aliases: -- /fr/workflows/connections -- /fr/workflows/setup -description: Connexions des workflows -disable_toc: false -title: Connexions ---- - -{{< site-region region="gov" >}} -
La solution Workflow Automation n'est pas prise en charge pour le Datadog site ({{< region-param key="dd_site_name" >}}) que vous avez sélectionné.
-{{< /site-region >}} - -Étant donné que les actions des workflows se connectent à des systèmes logiciels externes, il se peut que vous deviez authentifier votre compte Datadog auprès des intégrations correspondantes. Pour qu'un workflow soit exécuté correctement, chacune de ses actions nécessitant une authentification doit pouvoir vérifier l'identité de votre compte Datadog. Lorsque vous accordez des autorisations à Datadog, assurez-vous de suivre les meilleures pratiques en matière de sécurité et d'accorder uniquement les autorisations nécessaires à l'exécution d'un workflow. - -Les actions de workflow peuvent être authentifiées de deux manières : -- Avec des Identifiants et autorisations configurés dans les carrés d'intégration -- Avec des identifiants de connexion - -## Identifiants dans les carrés d'intégration - -Les identifiants et l'authentification de compte que vous configurez dans les carrés d'intégration Datadog sont automatiquement appliqués aux actions correspondantes dans Workflow Automation : -- Jira -- PagerDuty -- Slack -- GitHub - -Suivez les instructions indiquées dans la [documentation relative aux intégrations Datadog][6] pour configurer les carrés d'intégration. - -Si l'intégration que vous devez configurer n'est pas répertoriée ci-dessus, configurez des identifiants de connexion. - -## Identifiants de connexion - -Les connexions de workflow viennent enrichir les intégrations que vous avez installées en vous permettant de contrôler l'authentification des étapes des workflows. Utilisez les identifiants de connexion pour authentifier une [action générique][8] ou toute action pour laquelle le carré d'intégration ne propose pas de système d'authentification. Pour obtenir la liste des intégrations qui utilisent le carré d'intégration pour l'authentification, consultez la rubrique [Identifiants dans les carrés d'intégration](#identifiants-dans-les-carres-d-integration). Les identifiants de connexion ne peuvent être utilisés que dans la solution Workflow Automation. - -Les connexions sont utiles pour un grand nombre de cas d'utilisation : -- L'intégration dont vous avez besoin n'est pas disponible en tant que connexion intégrée. -- Vous souhaitez authentifier une action personnalisée, par exemple pour utiliser une action HTTP avec votre propre service. -- Une intégration ne prend pas en charge les autorisations requises, notamment les accès en écriture sur AWS. -- Vous souhaitez bénéficier d'un contrôle d'accès granulaire, par exemple pour limiter l'accès des utilisateurs à certains workflows. - -### Considérations relatives à la sécurisation de la connexion - -Avant d'établir une connexion, prenez en compte les autorisations nécessaires pour accomplir la tâche requise, puis n'accordez que ces autorisations à la connexion. Prenez également soin d'attribuer ces autorisations uniquement aux personnes qui en ont besoin. - -Si possible, utilisez des connexions granulaires lorsque vos workflows diffèrent. Par exemple, pour un workflow qui écrit des données dans un compartiment Amazon S3, et un autre qui met fin à des instances Amazon EC2, n'utilisez pas la même connexion pour les deux workflows. Établissez plutôt deux connexions différentes, chacune correspondant à un rôle IAM avec une portée limitée. - -## Utiliser les connexions - -### Visualiser les connexions - -1. Depuis la [page Workflow Automation][2], cliquez sur **Connections** en haut à droite. La [liste des connexions][3] s'ouvre alors. -1. Cliquez sur une ligne pour afficher les détails de la connexion. - -### Établir une connexion - -Les informations suivantes sont nécessaires pour établir une connexion : -- L'élément à connecter (par exemple, nom du produit, URL) -- Le mode d'authentification (par exemple, clé d'API, nom d'utilisateur et mot de passe, oauth) - -Pour établir une connexion, procédez comme suit : -1. Accédez à la [liste des connexions][3]. -1. Cliquez sur **New Connection** en haut à droite. La boîte de dialogue **New Connection** s'affiche alors. -1. Cliquez sur une icône pour choisir un schéma d'intégration. -1. Remplissez les champs appropriés, puis cliquez sur **Create**. - -Vous pouvez également ajouter une connexion à partir de la page du workflow : -1. Accédez à la [liste Workflow Automation][9]. -1. Sélectionnez le workflow contenant l'action à laquelle vous souhaitez ajouter un identifiant. Le générateur de workflow s'affiche alors. -1. Dans la vue du workflow, cliquez sur l'action à laquelle vous devez ajouter un identifiant. Le volet de droite contient les détails de l'action. -1. Sous l'onglet **Configure**, recherchez le menu déroulant **Connection** et cliquez sur l'icône **+**. -1. Dans la boîte de dialogue **New Connection**, attribuez un nom à la connexion et saisissez les informations d'authentification requises. -1. Cliquez sur **Save**. - -L'exemple ci-dessous représente la boîte de dialogue **New Connection** de la connexion AWS. Les informations d'authentification varient selon la connexion. La connexion AWS nécessite l'ID d'un compte AWS IAM et le nom du rôle. - -{{< img src="service_management/workflows/new-connection.png" alt="La boîte de dialogue New Connection de la connexion AWS" >}} - -### Modifier une connexion - -1. Accédez à la [liste des connexions][3]. -1. Passez le curseur sur la connexion que vous souhaitez modifier. Les icônes **Edit**, **Permissions** et **Delete** apparaissent alors à droite. -1. Cliquez sur l'icône en forme de crayon (**Edit**). Une boîte de dialogue s'affiche alors. -1. Modifiez les champs de votre choix. -1. Cliquez sur **Save**. - -### Supprimer une connexion - -1. Accédez à la [liste des connexions][3]. -1. Passez le curseur sur la connexion que vous souhaitez supprimer. Les icônes **Edit**, **Permissions** et **Delete** apparaissent alors à droite. -1. Cliquez sur l'icône en forme de corbeille (**Delete**). Le message de demande de confirmation « Are you sure? » s'affiche alors. -1. Sélectionnez **Delete**. - -### Restreindre l'utilisation des connexions - -Pour savoir comment limiter l'utilisation des connexions, consultez la section [Accès et authentification][4]. - -## Connexion HTTP - -Pour vous connecter à un service arbitraire, utilisez le type de connexion HTTP, puis choisissez parmi les deux options d'authentification suivantes : -- Authentification basée sur un token -- Nom d'utilisateur et mot de passe - -### Établir une connexion HTTP - -1. Accédez à la [liste des connexions][3]. -1. Sélectionnez **New Connection**. Une boîte de dialogue apparaît alors. -1. Sélectionnez **HTTP Connection**. La boîte de dialogue affiche alors les paramètres de connexion HTTP. -1. Saisissez l'URL de base dans le champ **Base URL**. -1. Si besoin, cliquez sur le bouton **Add +** pertinent pour ajouter des en-têtes ou des paramètres d'URL. -1. Choisissez un type de connexion : **Token Auth** ou **Basic Auth**. Saisissez les paramètres appropriés. -1. Cliquez sur **Create** pour enregistrer votre connexion HTTP. - -[1]: /fr/service_management/workflows/actions_catalog/generic_actions/ -[2]: https://app.datadoghq.com/workflow -[3]: https://app.datadoghq.com/workflow/connections -[4]: /fr/service_management/workflows/access/#restrict-connection-use -[6]: /fr/integrations/ -[8]: /fr/service_management/workflows/actions_catalog/generic_actions/ -[9]: https://app.datadoghq.com/workflow \ No newline at end of file diff --git a/content/ja/account_management/billing/vsphere.md b/content/ja/account_management/billing/vsphere.md index 8bcfacf50ede9..8af41a44a75ce 100644 --- a/content/ja/account_management/billing/vsphere.md +++ b/content/ja/account_management/billing/vsphere.md @@ -4,7 +4,7 @@ title: vSphere インテグレーションの課金 ## 概要 -Datadog では、vCenter サーバーにインストールされている Agent および監視される VM のそれぞれに対して課金が発生します。 +Datadog では、vCenter サーバーにインストールされている Agent および監視される VM および ESXi ホストのそれぞれに対して課金が発生します。 ## vSphere VM の除外 diff --git a/content/ja/agent/logs/advanced_log_collection.md b/content/ja/agent/logs/advanced_log_collection.md index 24a1da8b50ed4..53dd333b04afb 100644 --- a/content/ja/agent/logs/advanced_log_collection.md +++ b/content/ja/agent/logs/advanced_log_collection.md @@ -259,10 +259,6 @@ spec: ## ログの機密データのスクラビング -{{< callout url="https://www.datadoghq.com/private-beta/sensitive-data-scanner-using-agent-in-your-premises/" >}} - Agent を使用した Sensitive Data Scanner はプレビュー版です。詳細はブログ記事ドキュメントをご覧ください。アクセスをリクエストするには、このフォームに記入してください。 -{{< /callout >}} - 編集が必要な機密データがログに含まれている場合は、機密要素をスクラビングするように Datadog Agent を構成します。それには、構成ファイルで `log_processing_rules` パラメーターを使用して、type に `mask_sequences` を指定します。 これにより、一致したすべてのグループが `replace_placeholder` パラメーターの値に置換されます。 @@ -564,9 +560,9 @@ spec: image: testApp:latest ``` -複数行の自動検出は、一般的な正規表現のリストを使用して、ログとのマッチングを試みます。組み込みのリストでは不十分な場合、`DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS` 環境変数で `datadog.yaml` ファイルにカスタムパターンを追加することもできます。 +自動複数行検出は、一般的な正規表現リストを使用してログとのマッチングを試みます。組み込みリストで不足している場合は、`DD_LOGS_CONFIG_AUTO_MULTI_LINE_EXTRA_PATTERNS` 環境変数を使用して `datadog.yaml` ファイルにカスタムパターンを追加することが可能です。 -パターンがライン一致のしきい値に一致しない場合は、より低い値の `DD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD` 環境変数を追加します。これにより、自動複数行集計が機能するためにログが一致しなければならない頻度を決定するしきい値が構成されます。現在のしきい値を確認するには、[エージェントの `status` コマンド] を実行します。 +パターンが行一致のしきい値を満たさない場合は、`DD_LOGS_CONFIG_AUTO_MULTI_LINE_DEFAULT_MATCH_THRESHOLD` 環境変数をより低い値で追加します。これにより、自動複数行集計が機能するためにログが一致する頻度を決定するしきい値を構成します。現在のしきい値を確認するには、[エージェントの `status` コマンド] を実行します。 [1]: https://docs.datadoghq.com/ja/agent/configuration/agent-commands/#agent-information diff --git a/content/ja/api/latest/app-builder/_index.md b/content/ja/api/latest/app-builder/_index.md new file mode 100644 index 0000000000000..b5a8d8f93342e --- /dev/null +++ b/content/ja/api/latest/app-builder/_index.md @@ -0,0 +1,3 @@ +--- +title: アプリビルダー +--- diff --git a/content/ja/cloud_cost_management/azure.md b/content/ja/cloud_cost_management/azure.md index f7355991ea9c4..4ac23c8bd5621 100644 --- a/content/ja/cloud_cost_management/azure.md +++ b/content/ja/cloud_cost_management/azure.md @@ -20,7 +20,7 @@ title: Azure To use Azure Cloud Cost Management in Datadog, you must set up the Datadog Azure integration and set up **amortized** and **actual** exports in Azure. Additionally, Datadog must have permissions to read the exports from the container. -Datadog provides cost visibility on a Subscription, Resource Group, and Billing Account Level. Microsoft Customer Agreements (MCA) can only set up at the Subscription level. Pay as you go (PAYG) and CSP accounts are not supported. +Datadog provides cost visibility on a Subscription, Resource Group, and Billing Account Level. Microsoft Customer Agreements (MCA) can be set up at all three scopes. Pay as you go (PAYG) and CSP accounts are not supported. ## セットアップ @@ -245,4 +245,4 @@ You can create historical data in your storage account using the [Microsoft API] [6]: https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-export-acm-data?tabs=azure-cli [7]: https://support.microsoft.com [8]: https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-improved-exports -[9]: https://learn.microsoft.com/en-us/azure/cost-management-billing/understand/download-azure-daily-usage \ No newline at end of file +[9]: https://learn.microsoft.com/en-us/azure/cost-management-billing/understand/download-azure-daily-usage diff --git a/content/ja/glossary/terms/sast.md b/content/ja/glossary/terms/sast.md index 4df5a227d0dfe..38a3946de3f41 100644 --- a/content/ja/glossary/terms/sast.md +++ b/content/ja/glossary/terms/sast.md @@ -4,7 +4,7 @@ core_product: - appsec synonyms: - static analysis -- コード分析 +- コードセキュリティ title: スタティックアプリケーションセキュリティテスト (SAST) --- diff --git a/content/ja/real_user_monitoring/browser/data_collected.md b/content/ja/real_user_monitoring/browser/data_collected.md index 3995c8054ced6..0d308c1b7234d 100644 --- a/content/ja/real_user_monitoring/browser/data_collected.md +++ b/content/ja/real_user_monitoring/browser/data_collected.md @@ -31,13 +31,13 @@ RUM ブラウザ SDK は、メトリクスと属性が関連付けられたイ 追加の[特定のイベントタイプに固有のメトリクスと属性](#event-specific-metrics-and-attributes)があります。たとえば、`view.loading_time` メトリクスはビューイベントに関連付けられ、`resource.method` 属性はリソースイベントに関連付けられます。 -| イベントタイプ | 保存期間 | 説明 | +| イベントタイプ | 保持 | 説明 | |----------------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | セッション | 30 日 | ユーザーセッションは、ユーザーが Web アプリケーションの閲覧を始めると開始されます。これには、ユーザーに関する高レベルの情報 (ブラウザー、デバイス、ジオロケーション) が含まれています。これは、ユーザージャーニー中に収集されたすべての RUM イベントを一意の `session.id` 属性で集約します。**注:** セッションは、15 分間使用しないとリセットされます。 | | ビュー | 30 日 | ビューイベントは、ユーザーが Web アプリケーションのページにアクセスするたびに生成されます。ユーザーが同じページにいる間、リソース、ロングタスク、エラー、アクションのイベントは、`view.id` 属性を使用して関連する RUM ビューにリンクされます。 | | Resource | 15 日 | リソースイベントは、Web ページにロードされた画像、XHR、Fetch、CSS、または JS ライブラリに対して生成されます。詳細なロードタイミング情報が含まれています。 | | ロングタスク | 15 日 | ロングタスクイベントは、メインスレッドを 50 ミリ秒以上ブロックするブラウザ内のすべてのタスクに対して生成されます。 | -| エラー | 30 日 | RUM は、ブラウザによって発行されたすべてのフロントエンドエラーを収集します。 | +| Error | 30 日 | RUM は、ブラウザによって発行されたすべてのフロントエンドエラーを収集します。 | | アクション | 30 日 | RUM アクションイベントは、ユーザージャーニー中のユーザーインタラクションを追跡し、カスタムユーザーアクションを監視するために手動で送信することもできます。 | 次の図は、RUM イベント階層を示しています。 @@ -116,7 +116,7 @@ RUM ブラウザの[標準属性][1]の完全なリストをご覧ください | メトリクス | タイプ | 説明 | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | 数値 | リソースのロードにかかった全時間。 | +| `resource.duration` | 数値 | リソースのロードにかかった全時間。 | | `resource.size` | 数値(バイト) | リソースのサイズ。 | | `resource.connect.duration` | 数値(ns) | サーバーへの接続が確立されるまでにかかった時間 (connectEnd - connectStart)。 | | `resource.ssl.duration` | 数値(ns) | TLS ハンドシェイクにかかった時間。最後のリクエストが HTTPS 経由ではなかった場合、このメトリクスは収集されません (connectEnd - secureConnectionStart)。 | diff --git a/content/ja/real_user_monitoring/browser/monitoring_resource_performance.md b/content/ja/real_user_monitoring/browser/monitoring_resource_performance.md index c346be8c5b54f..73405cc50af94 100644 --- a/content/ja/real_user_monitoring/browser/monitoring_resource_performance.md +++ b/content/ja/real_user_monitoring/browser/monitoring_resource_performance.md @@ -37,7 +37,7 @@ RUM リソースは、収集時にアクティブな RUM ビューに関連す | 属性 | タイプ | 説明 | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | 数値 | リソースのロードにかかった全時間。 | +| `resource.duration` | 数値 | リソースのロードにかかった全時間。 | | `resource.size` | 数値(バイト) | リソースのサイズ。 | | `resource.connect.duration` | 数値(ns) | サーバーへの接続が確立されるまでにかかった時間 (connectEnd - connectStart)。 | | `resource.ssl.duration` | 数値(ns) | TLS ハンドシェイクにかかった時間。最後のリクエストが HTTPS 経由ではなかった場合、このメトリクスは収集されません (connectEnd - secureConnectionStart)。| diff --git a/content/ja/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md b/content/ja/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md index 131628d047e22..8b2968ac0be91 100644 --- a/content/ja/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md +++ b/content/ja/real_user_monitoring/mobile_and_tv_monitoring/data_collected/roku.md @@ -158,7 +158,7 @@ RUM アクション、エラー、リソース、ロングタスクのイベン | メトリクス | タイプ | 説明 | | ------------------------------ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `duration` | 数値(ns) | リソースのロードにかかった全時間。 | +| `resource.duration` | 数値(ns) | リソースのロードにかかった全時間。 | | `resource.size` | 数値(バイト) | リソースのサイズ。 | | `resource.connect.duration` | 数値(ns) | サーバーへの接続が確立されるまでにかかった時間 (connectEnd - connectStart)。 | | `resource.ssl.duration` | 数値(ns) | TLS ハンドシェイクにかかった時間。最後のリクエストが HTTPS 経由ではなかった場合、このメトリクスは収集されません (connectEnd - secureConnectionStart)。 | diff --git a/content/ja/reference_tables/_index.md b/content/ja/reference_tables/_index.md new file mode 100644 index 0000000000000..ced9f305da38c --- /dev/null +++ b/content/ja/reference_tables/_index.md @@ -0,0 +1,197 @@ +--- +aliases: +- /ja/logs/guide/enrichment-tables/ +- /ja/logs/guide/reference-tables/ +- /ja/integrations/guide/reference-tables +further_reading: +- link: /logs/log_configuration/processors + tag: ドキュメント + text: ルックアッププロセッサを使用して、リファレンステーブルからログをリッチ化する +- link: /logs/explorer/advanced_search#filter-logs-based-on-reference-tables + tag: ドキュメント + text: リファレンステーブルに基づくログのフィルター +- link: /cloud_cost_management/tag_pipelines/#map-multiple-tags + tag: ドキュメント + text: リファレンステーブルを使用して、コストデータに複数のタグを追加する +- link: https://www.datadoghq.com/blog/add-context-with-reference-tables/ + tag: ブログ + text: リファレンステーブルを使用してログにさらにコンテキストを追加する +- link: https://www.datadoghq.com/blog/add-context-with-reference-tables-in-cloud-siem/ + tag: ブログ + text: Datadog リファレンステーブルを使用して、Cloud SIEM の検出と調査にさらなるコンテキストを付与する +title: リファレンステーブル +--- + +## 概要 + +リファレンステーブルを使用すると、Datadog にすでにある情報にカスタムメタデータを結合することができます。情報のテーブルを含む CSV ファイルをアップロードすることで、顧客の詳細、サービス名と情報、または IP アドレスなどの新しいエンティティを定義することができます。エンティティは、リファレンステーブルの主キーと関連するメタデータによって表現されます。 + +{{< img src="reference_tables/reference-table.png" alt="org id、org name、parent org、account owner、csm の列にデータが格納されたリファレンステーブル" style="width:100%;">}} + +## 検証ルール + +リファレンステーブルの名前と列のヘッダーは、以下の命名規則で検証され、必要に応じて自動的に更新または正規化されます。 + +| ルール | 正規化 | +| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| 名前とヘッダーは重複できません。 | 重複した名前は列挙されます。例えば、`fileid` が名前として 2 回使用された場合、最初のインスタンスは `fileid1` に、2 番目のインスタンスは `fileid2` になります。名前またはヘッダーを列挙した際に、56 文字を超える場合は拒否され、名前を変更する必要があります。 | +| 名前とヘッダーに大文字を含めることはできません。 | 大文字で書かれた名前は、小文字に変換されます。この変換の結果、名前が重複することがありますが、その場合は列挙されます。例えば、`Fileid` と `FileID` は両方とも `fileid` となり、それぞれ `fileid1` と `fileid2` に列挙されます。 | +| 名前とヘッダーにスペースを含めることはできません。 | 先頭と末尾のスペース以外のスペースは、アンダースコア `_` 文字に置き換えられます。先頭と末尾のスペースは削除されます。例えば、`customer names` は `customer_names` に置き換えられます。 | +| 名前とヘッダーは小文字で始める必要があります。 | 大文字は小文字に変換されます。文字以外の先頭の文字は削除されます。例えば、`23Two_three` は `two_three` となります。 | +| 名前とヘッダーは、小文字のアルファベットと数字、および `_` 文字のみをサポートします。 | サポートされていない文字はアンダースコア (`_`) に置き換えられます。ただし、上記のルールのいずれかに違反する場合は、その文字は該当するルールに従って正規化されます。 | +| 名前とヘッダーは 56 文字以内にする必要があります。 | 正規化は行われません。56 文字以上の名前とヘッダーは拒否され、名前を変更する必要があります。 | + +## リファレンステーブルを作成する + +{{< tabs >}} +{{% tab "手動アップロード" %}} + +**New Reference Table +** をクリックしてから、CSV ファイルをアップロードし、適切な列に名前を付けて、ルックアップのプライマリキーを定義します。 + +{{< img src="reference_tables/enrichment-table-setup.png" alt="Define the Schema セクションで、org_id を主キーとするテーブルと、org id、org name、parent org、account owner、および csm のデータを持つ列を表示しています " style="width:100%;">}} + +**注**: CSV の手動アップロードは、4MB までのファイルをサポートしています。 + +{{% /tab %}} + +{{% tab "Amazon S3" %}} + +リファレンステーブルは、Amazon S3 バケットから CSV ファイルを自動的に取得し、データを常に最新の状態に保つことができます。このインテグレーションは、S3 上の CSV ファイルに変更がないかを検知し、ファイルが更新されるとリファレンステーブルを新しいデータで置き換えます。初期リファレンステーブルを一度構成しておけば、S3 API を使用した API レベルでの更新も可能です。**注**: CSV ファイルの内容に変更がない場合は、リファレンステーブルは置き換えられません。 + +S3 からリファレンステーブルを更新するために、Datadog は [AWS インテグレーション][1]用に構成した AWS アカウントの IAM ロールを使用します。このロールをまだ作成していない場合は、[こちらの手順][2]で作成してください。このロールがリファレンステーブルを更新できるようにするには、次のアクセス許可ステートメントを IAM ポリシーに追加します。バケット名は、環境に合わせて編集します。 + +**注**: サーバーサイド暗号化を使用する場合、Amazon S3 管理キー (SSE-S3) または AWS Key Management Service キー (SSE-KMS) で暗号化されたリファレンステーブルをアップロードできます。 + +```json +{ + "Statement": [ + { + "Sid": "EnrichmentTablesS3", + "Effect": "Allow", + "Action": [ + "s3:GetObject", + "s3:ListBucket" + ], + "Resource": [ + "arn:aws:s3:::", + "arn:aws:s3:::" + ] + } + ], + "Version": "2012-10-17" +} +``` +### テーブルを定義する + +**New Reference Table +** をクリックしてから、名前を追加し、Amazon S3 を選択し、すべてのフィールドに入力し、インポートをクリックして、ルックアップのプライマリキーを定義します。 + +{{< img src="reference_tables/configure-s3-reference-table.png" alt="Amazon S3 タイルを選択し、AWS Account、Bucket、Path のデータを記入した upload your data セクション" style="width:100%;">}} + +**注**: S3 バケットからのアップロードは、200MB までのファイルをサポートしています。 + +[1]: https://app.datadoghq.com/account/settings#integrations/amazon-web-services +[2]: https://docs.datadoghq.com/ja/integrations/amazon_web_services/?tab=automaticcloudformation#installation +{{% /tab %}} + +{{% tab "Azure ストレージ" %}} + +1. まだの場合は、リファレンステーブルをインポートするストレージアカウントを保持するサブスクリプション内で、[Azure インテグレーション][1]をセットアップしてください。これには、[Datadog がインテグレーションできるアプリ登録の作成][2]を伴います。 +2. Azure Portal で、リファレンステーブルファイルを保存するストレージアカウントを選択します。 +3. ストレージアカウント内で、**Access Control (IAM)** に移動し、**Add** > **Add Role Assignment** を選択します。 +4. **Storage Blob Data Reader** ロールを入力し、選択します。[Storage Blob Data Reader ロール][3]は、Datadog がストレージコンテナや Blob を読み込んで一覧表示できるようにするものです。 +5. **Members** タブで、**+ Select members** をクリックします。ステップ 1 で作成したアプリ登録を選択します。 + + {{< img src="reference_tables/add_members.png" alt="Azure Portal の Members セクションで、メンバーが選択され、Name、Object ID、Type にデータが入力された状態" style="width:85%;">}} + +ロールの確認と割り当てが完了したら、Azure からリファレンステーブルにインポートすることができます。Datadog で Azure の構成が更新されるまで、数分かかる場合があります。 + +{{< img src="reference_tables/azure_storage.png" alt="新規リファレンステーブルのワークフローの Upload or import data セクションにある Azure Storage タイル" style="width:80%;">}} + +詳しくは、[Azure インテグレーションドキュメント][4]を参照してください。 + +**注**: クラウドオブジェクトストレージからのアップロードは、200MB までのファイルをサポートしています。 + +[1]: https://app.datadoghq.com/integrations/azure +[2]: /ja/integrations/azure/?tab=azurecliv20#integrating-through-the-azure-portal +[3]: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#storage-blob-data-reader +[4]: /ja/integrations/azure/ + +{{% /tab %}} + +{{% tab "Google Cloud ストレージ" %}} + +1. Datadog で Google Cloud インテグレーションをセットアップしていない場合、またはレガシー Google プロジェクト ID ファイル (レガシープロジェクトであることは GCP インテグレーションタイルに表示されています) を使用している場合は、[Google Cloud Platform インテグレーション][1]のセットアップ手順に従ってください。これには、[Google Cloud サービスアカウント][2]を作成する必要があります。 + +1. Google Cloud コンソールから、**Cloud Storage** ページに移動します。 + +1. アクセス権を与えたいバケットを見つけてクリックします。 + +1. **Permissions** タブをクリックします。"View By Principals" の下にある **Grant Access** ボタンをクリックします。 + +1. 表示されるウィンドウで、"New principals" フィールドの下に、ステップ 1 で作成して GCP タイルに追加したサービスアカウントのメールアドレスを入力します。"Assign roles" の下で、**Storage Object Viewer** ロールを選択します。**Save** をクリックします。 + + +{{< img src="reference_tables/grant_access.png" alt="アクセスを許可する構成を示す Google Cloud コンソール" style="width:100%;" >}} + +ロールの確認と割り当てが完了したら、Google Cloud からリファレンステーブルにインポートすることができます。Datadog で構成が更新されるまで、数分かかる場合があります。 + +{{< img src="reference_tables/gcp_upload_import_ui.png" alt="新しいリファレンステーブルを作成する際に、データのアップロードまたはインポートで GCP ストレージを選択します" style="width:100%;" >}} + +**注**: クラウドオブジェクトストレージからのアップロードは、200MB までのファイルをサポートしています。 + +[1]: /ja/integrations/google_cloud_platform/#setup +[2]: /ja/integrations/google_cloud_platform/#1-create-your-google-cloud-service-account + +{{% /tab %}} +{{< /tabs >}} + +このリファレンステーブルを使用して、[Lookup Processor][1] でログに属性を追加できます。 + +## リファレンステーブルを変更する + +既存のリファレンステーブルを新しいデータで変更するには、テーブルを選択し、右上の **Update Config** をクリックします。 +選択した CSV がテーブルにアップサートされます。つまり、 + +* 同じ主キーを持つ既存の行はすべて更新される +* すべての新しい行が追加される +* 新しいファイルに含まれない古い行はすべて削除される + +テーブルが保存されると、アップサートされた行は非同期で処理され、プレビューで更新されます。更新が完了するまでには、最大で 10 分かかる場合があります。 + +## リファレンステーブルを削除する + +リファレンステーブルを削除するには、テーブルを選択し、右上の歯車アイコンをクリックし、 **Delete Table** をクリックします。 +テーブルと関連するすべての行が削除されます。 + +リファレンステーブルを使用している Lookup Processor がある場合、ログエンリッチメントが停止します。エンリッチメントが停止するまで、最大で 10 分かかる場合があります。 + +## リファレンステーブルアクティビティの監視 + +[監査証跡][2]または[変更イベント][3]でリファレンステーブルのアクティビティを監視することができます。特定のリファレンステーブルの監査証跡と変更イベントを表示するには、そのテーブルを選択し、**Update Config** の隣にある設定アイコンをクリックします。監査証跡を表示するには、組織の管理権限が必要です。 + +### Audit trail(監査証跡) + +リファレンステーブルの監査証跡を使用して、ユーザーをトリガーとするアクションを追跡することができます。監査証跡イベントは、ユーザーが最初に CSV ファイルをアップロードまたはインポートしたとき、またはユーザーがリファレンステーブルを作成、変更、または削除したときに送信されます。 + +`reference_table_file` アセットタイプはインポート/アップロードのイベントを表示し、`reference_table` アセットタイプはリファレンステーブルのイベントを表示します。監査証跡は、リファレンステーブルの内容の観測可能性を提供します。 + +### 変更イベント + +リファレンステーブルの変更イベントを使用して、自動化またはユーザートリガーによるアクションを追跡します。イベントは、クラウドファイルがユーザーまたは自動更新からインポートされたときに送信されます。イベントはユーザートリガーのアクションを追跡できますが、主にリファレンステーブルが自動的に新しい CSV ファイルを取り込む際のトリガーインポートを追跡するために使用されます。 + +イベントには、インポートの成功ステータス、パス、テーブル名に関する情報が含まれます。エラーが発生した場合は、エラーの種類に関する情報が提供されます。 + +### アラート設定 + +インポート中に発生したエラーについてアラートを受けるには、リファレンステーブルの変更イベントに [イベントモニター][4] を使用します。リファレンステーブルの変更イベントは `reference_tables` ソースから送信されます。 + +**Monitors** タブからモニターを作成するか、**New Reference Table +** の横にある設定アイコンをクリックすると、あらかじめ入力されたモニターを生成することができます。 + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/logs/log_configuration/processors/#lookup-processor +[2]: /ja/account_management/audit_trail/ +[3]: /ja/events/ +[4]: /ja/monitors/types/event/ \ No newline at end of file diff --git a/content/ja/security/cloud_security_management/vulnerabilities/_index.md b/content/ja/security/cloud_security_management/vulnerabilities/_index.md new file mode 100644 index 0000000000000..14484557e9a56 --- /dev/null +++ b/content/ja/security/cloud_security_management/vulnerabilities/_index.md @@ -0,0 +1,151 @@ +--- +aliases: +- /ja/security/infrastructure_vulnerabilities/ +- /ja/security/vulnerabilities/ +further_reading: +- link: /infrastructure/containers/container_images/#enable-sbom-collection + tag: ドキュメント + text: CSM Vulnerabilities で SBOM 収集を有効化する +- link: /security/cloud_security_management/setup/csm_enterprise/?tab=aws#hosts + tag: ドキュメント + text: ホストの脆弱性のセットアップ +- link: /infrastructure/containers/container_images + tag: ドキュメント + text: コンテナイメージの表示 +- link: /security/cloud_security_management/troubleshooting/vulnerabilities + tag: ドキュメント + text: CSM Vulnerabilities のトラブルシューティング +- link: https://www.datadoghq.com/blog/csm-vulnerability-management/ + tag: ブログ + text: Datadog Cloud Security Management でインフラストラクチャーの脆弱性を軽減 +- link: https://www.datadoghq.com/blog/datadog-container-image-view/ + tag: ブログ + text: Datadog Container Monitoring のコンテナイメージによるトラブルシューティングワークフローの強化 +title: Cloud Security Management Vulnerabilities +--- + +{{< site-region region="gov" >}} +
選択した Datadog サイト ({{< region-param key="dd_site_name" >}}) では Cloud Security Management Vulnerabilities はサポートされていません。
+{{< /site-region >}} + +## 概要 + +Cloud Security Management Vulnerabilities (CSM Vulnerabilities) は、CI/CD パイプラインから本番環境まで、コンテナイメージ、ホスト、ホストイメージ、およびサーバーレス関数を継続的にスキャンして脆弱性を検出し、セキュリティ体制を強化し、コンプライアンスを達成するのに役立ちます。ランタイムでの可観測性を活用し、日々のワークフローの中で悪用可能な脆弱性を優先的に特定・修正できるよう支援します。すべてを単一のビューで把握でき、他の Datadog 製品への依存は必要ありません。 + +CSM Vulnerabilities を使用すると、クラウドセキュリティ管理戦略を 1 つの場所で管理できます。 + +- CI/CD パイプラインから本番環境リソースまでを対象とした脆弱性管理プログラムを作成 +- SOC2、PCI、HIPAA、CIS、FedRamp などのコンプライアンス監査に合格 +- 新たに発生する脆弱性 (ゼロデイ CVE など) を修正 + +**注**: アプリケーションライブラリにおける脆弱性管理については [Software Composition Analysis][5] を、アプリケーションコードについては [Code Security][10] を参照してください。 + +## 主な機能 + +エージェントレスまたは統合 Datadog Agent を使用してデプロイ +: すでに導入済みの統合 Datadog Agent を利用するか、エージェントレスでインフラストラクチャー全体をすばやくスキャンし、脆弱性を検出できます。 + +クラウドリソースをリアルタイムでインベントリ収集 +: コンテナイメージ、ホスト、サーバーレス関数、そしてインフラストラクチャーで稼働しているすべてのパッケージをリアルタイムでインベントリし、SBOM をエクスポートできます。 + +脆弱性を継続的に検出 +: 稼働中のコンテナイメージ、ホスト、ホストイメージ、サーバーレスで発生する新規の変更や新たに公開された CVE をスキャンし、脆弱なコンテナイメージレイヤーを特定します。 + +ランタイムの可観測性を利用して悪用可能な脆弱性を優先順位付け +: CVSS をベースにした Datadog 独自のセキュリティスコアを活用し、CISA KEV、EPSS、公開されているエクスプロイト情報などを組み合わせてリスクを評価します。ランタイムの可観測性を活用することで、本番稼働状況、攻撃への露出度、機密データの処理状況、特権アクセスの有無などを把握できます。 + +ガイド付きの修正を活用 +: どのレイヤーが影響を受けているかを確認し、各イメージに固有の修正方法を提案。脆弱性ライフサイクル管理のアクションに繋げられます。 + +自動化とインテグレーションを実装 +: Jira チケット作成の自動化や SLA の導入が可能です。Datadog のパブリック API を活用して脆弱性情報、カバレッジ、SBOM などをエクスポートできます。 + +レポートを参照 +: ダッシュボードで脆弱性情報を可視化・監視できます。 + +## デプロイ方法 + +数分以内に CSM Vulnerabilities を導入し、インフラストラクチャーを網羅するには以下を参照してください。 +- [Agentless Scanning][11][Agentless Scanning][11] +- [Unified Datadog Agent][12] + +両方を併用することも可能です。既に統合 Datadog Agent を導入している場所で Agent を使い、その他の場所ではエージェントレスを利用できます。 + +有効化後、Datadog はリソースを継続的にスキャンし、約 1 時間以内に [CSM Vulnerability Explorer][1] 上で優先度の高い脆弱性を報告し始めます。 + +どのソリューションを選択すべきか (比較表) +| 機能 | エージェントレス | 統合 Datadog Agent | +|-------------------------------------------|-----------------------------------------------|--------------------------------| +| インフラストラクチャー全体への導入に要する時間 | 数分 | 数時間~数週間 | +| 脆弱性の優先順位付け | 対応 | ランタイム情報を活用して優先度を算定 | +| 脆弱性スキャンの頻度 | 12 時間ごと | リアルタイム | + +| 脆弱性検出の対象範囲 | エージェントレス | 統合 Datadog Agent | +|-------------------------------------------|-----------------------------------------------|--------------------------------| +| ホストやホストイメージ | OS パッケージおよびアプリケーションパッケージ (イメージにマッピング) | OS パッケージ | +| コンテナイメージ | OS パッケージおよびアプリケーションパッケージ (イメージにマッピング) | OS パッケージ | +| クラウドプロバイダー | AWS、[Azure (プレビュー)][15] | AWS、Azure、GCP、オンプレミスなど | +| オペレーティングシステム | Linux | Linux、Windows | +| サーバーレス | AWS Lambda | 該当なし | +| コンテナレジストリ | [Amazon ECR (プレビュー)][16] | 該当なし | + +互換性の詳細は [CSM Vulnerabilities Hosts and Containers Compatibility][13] を参照してください。サポートが必要な場合は、[トラブルシューティングガイド][14]や support@datadoghq.com にお問い合わせください。 + +## 悪用可能な脆弱性を継続的に検出、優先度付け、修正 +[CSM Vulnerabilities Explorer][1] では、コンテナイメージ、ホストイメージ、稼働中のホスト、サーバーレス関数に対して検出された脆弱性を、フィルタやグルーピング機能を用いて調査できます。 + +Datadog Severity Score を用いて、まずは悪用される可能性が高い脆弱性に注目しましょう。このスコアは CVSS の基本スコアに加え、機密データの有無、環境の機微度、攻撃への露出度、エクスプロイトの有無、脅威インテリジェンスソースなど多くのリスク要因を組み合わせて算出されます。 + +修正可能な脆弱性については、Explorer がガイド付きの修正手順を提供し、Dev や Ops チームがより迅速かつ効果的に問題を解決できるよう支援します。また、脆弱性のステータス管理 (トリアージ、ミュート、コメント、アサインなど) も行い、ライフサイクルを通じて管理できます。 + +{{< img src="security/vulnerabilities/csm-vm-explorer-actionability.png" alt="CSM Vulnerability Explorer で脆弱性を表示し、ユーザーが対処アクションを取れる様子" width="100%">}} + +## 自動化と Jira との連携 +[セキュリティ通知ルール][17]や[ オートメーションパイプライン (プレビュー) ][20] を設定して、CSM Vulnerabilities を日々のワークフローに組み込みましょう。 +- 自分のスコープにおける悪用可能な脆弱性が検出された場合にアラートを受け取る +- 自動的に Jira チケットを作成する +- 脆弱性を修正するための SLA を設定する + +{{< img src="security/vulnerabilities/csm-notifications.png" alt="通知ルール設定画面" width="100%">}} + +## トラッキングとレポート +標準で用意されている [CSM Vulnerabilities ダッシュボード][18]を活用して進捗を追跡し、ステークホルダーにレポートできます。必要に応じてクローンしてカスタマイズも可能です。 + +{{< img src="security/vulnerabilities/csm-vm-reporting.png" alt="CSM Vulnerabilities ダッシュボード" width="100%">}} + +## インフラストラクチャー内パッケージの調査 + +[Infrastructure Packages Catalog][19] では、ホスト、ホストイメージ、コンテナイメージで稼働中のパッケージをリアルタイムにインベントリとして確認できます。脆弱性やランタイム情報が付与された SBOM を一元的に調査できるインターフェイスを提供します。 + +緊急度の高い新たな脆弱性が発生した場合、該当するパッケージのバージョンを検索し、そのパッケージが使われているすべてのリソースを特定して影響範囲をすばやく評価できます。 + +{{< img src="security/vulnerabilities/csm_package_explorer.png" alt="脆弱性情報付きのパッケージ一覧と、それを使用しているリソースへのピボット機能" width="100%">}} + +## ビデオウォークスルー + +次のビデオでは、CSM Vulnerabilities を有効にして使用する方法の概要を説明しています。 + +{{< img src="security/csm/how-to-use-csm-vulnerabilities.mp4" alt="CSM Vulnerabilities のインストールと使用方法の概要を説明するビデオ" video=true >}} + +[1]: https://app.datadoghq.com/security/csm/vm +[2]: https://app.datadoghq.com/containers/images +[3]: https://app.datadoghq.com/security/csm +[4]: https://app.datadoghq.com/security/infra-vulnerability?query=asset_type%3AHost&group=none +[5]: /ja/security/code_security/software_composition_analysis/ +[6]: https://www.datadoghq.com/product/infrastructure-monitoring/ +[9]: https://www.cisa.gov/known-exploited-vulnerabilities-catalog +[10]: /ja/security/code_security/iast/ +[11]: /ja/security/cloud_security_management/setup/agentless_scanning/ +[12]: /ja/security/cloud_security_management/setup/agent +[13]: /ja/security/cloud_security_management/vulnerabilities/hosts_containers_compatibility +[14]: /ja/security/cloud_security_management/troubleshooting/vulnerabilities/ +[15]: https://www.datadoghq.com/product-preview/agentless-vulnerability-scanning-for-azure/ +[16]: https://www.datadoghq.com/product-preview/ecr-vulnerability-scanning/ +[17]: https://app.datadoghq.com/security/configuration/notification-rules +[18]: https://app.datadoghq.com/dash/integration/csm_vulnerabilities?fromUser=true&refresh_mode=sliding&from_ts=1733323465252&to_ts=1733928265252&live=true +[19]: https://app.datadoghq.com/security/catalog/libraries +[20]: https://www.datadoghq.com/product-preview/security-automation-pipelines/ + +## 参考資料 + +{{< partial name="whats-next/whats-next.html" >}} \ No newline at end of file diff --git a/content/ja/service_management/events/correlation/_index.md b/content/ja/service_management/events/correlation/_index.md new file mode 100644 index 0000000000000..8452f12c17be0 --- /dev/null +++ b/content/ja/service_management/events/correlation/_index.md @@ -0,0 +1,37 @@ +--- +algolia: + tags: + - イベントの相関 + - イベントのグループ化 + - 相関パターン +disable_toc: false +further_reading: +- link: service_management/events/ + tag: ドキュメント + text: Event Management +- link: service_management/case_management/ + tag: ドキュメント + text: Case Management +title: 相関 +--- +{{% site-region region="gov" %}} +
+Event Correlation は現在、{{< region-param key=dd_datacenter code="true" >}} サイトでは利用できません。 +
+{{% /site-region %}} +## 概要 + +Event Correlation では、イベント間の関連性やユーザーが定義した設定に基づいてイベントをグループ化し、環境から得られる通知や問題を削減します。相関機能とケースを活用することで、以下が可能になります。 +* アラートによる疲弊の軽減 +* 受信するチケットや通知の件数の削減 +* すべての該当チームがサイロ化せず、一つの問題を把握できるようにする + +{{< whatsnext desc="はじめに:" >}} +    {{< nextlink href="/service_management/events/correlation/configuration" >}}相関(Correlation) - 2 種類の相関機能の利用を開始する{{< /nextlink >}} +    {{< nextlink href="/service_management/events/correlation/triage_and_notify/" >}}トリアージと通知 - 作成された相関について、ビューの確認、トリアージ、通知、チケットの受信を行う{{< /nextlink >}} +    {{< nextlink href="/service_management/events/correlation/analytics/" >}}分析 - 割り当てられたケース数、サービスごとの件数など、相関で得られるメトリクスを分析・調査する{{< /nextlink >}} +{{< /whatsnext >}} + +## その他の参考資料 + +{{< partial name="whats-next/whats-next.html" >}} \ No newline at end of file diff --git a/content/ja/service_management/workflows/connections.md b/content/ja/service_management/workflows/connections.md deleted file mode 100644 index 5756356a005e1..0000000000000 --- a/content/ja/service_management/workflows/connections.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -algolia: - tags: - - ワークフロー - - workflows/ - - ワークフローの自動化 -aliases: -- /ja/workflows/connections -- /ja/workflows/setup -description: ワークフロー接続 -disable_toc: false -further_reading: -- link: /getting_started/workflow_automation/ - tag: ドキュメント - text: Workflow Automation を始める -title: 接続 ---- - -{{< site-region region="gov" >}} -
選択した Datadog サイト ({{< region-param key="dd_site_name" >}}) では Workflow Automation はサポートされていません。
-{{< /site-region >}} - -ワークフローのアクションは、外部のソフトウェアシステムと接続するため、対応するインテグレーションに対して、Datadog アカウントの認証が必要になる場合があります。ワークフローは、認証を必要とするすべてのワークフローアクションが Datadog アカウントの身元を確認できる場合にのみ、正常に実行することができます。Datadog に権限を付与する際には、セキュリティのベストプラクティスに従い、ワークフローの実行に必要な権限のみを付与するようにします。 - -ワークフローアクションは、2 つの方法で認証することができます。 -- インテグレーションタイルで構成された資格情報および権限 -- 接続の資格情報 - -## インテグレーションタイルの資格情報 - -以下の Datadog インテグレーションタイルで設定した資格情報やアカウント認証は、Workflow Automation の対応するアクションに自動的に伝搬されます。 -- Jira -- PagerDuty -- Slack -- GitHub - -[Datadog インテグレーション][6]の説明に従って、インテグレーションタイルを構成します。 - -設定する必要があるインテグレーションが上記に記載されていない場合は、接続資格情報を設定します。 - -## 接続の資格情報 - -Workflow connections extend your installed integrations to give you control over workflow step authentication. Use connection credentials to authenticate a [generic action][8] or any action for which the integration tile does not offer authentication. For a list of integrations that use the integration tile for authentication, see the [Integration tile credentials](#integration-tile-credentials) section. Connection credentials are only available for use within the Workflow Automation and App Builder products. - -接続は、以下のユースケース例に対応しています。 -- 必要なインテグレーションが、ビルトイン接続では利用でない場合。 -- カスタムアクションを認証したい場合。例えば、独自のサービスで HTTP アクションを使用する必要があります。 -- AWS の書き込み権限など、インテグレーションでサポートされていない権限が必要です。 -- 特定のワークフローへのユーザーのアクセスを制限するなど、きめ細かなアクセス制御を行いたい場合。 - -### 接続セキュリティへの配慮 - -接続を作成する前に、必要なタスクを実行するために必要な権限を考え、そのタスクを実行するために必要な権限のみを接続に付与します。さらに、接続は、その接続を使用する必要がある人だけに制限される必要があります。 - -Where possible, use granular connections for different workflows. For example, if you have a workflow that writes to an Amazon S3 bucket, and a workflow that terminates Amazon EC2 instances, do not use the same connection for both workflows. Instead, create two respective connections, each corresponding to an IAM role with limited scope. - -## 接続の使用 - -### 接続の表示 - -1. [Workflow Automation ページ][2]から、右上の **Connections** をクリックします。[接続リスト][3]が表示されます。 -1. 一行をクリックすると、接続の詳細が表示されます。 - -### 接続の作成 - -接続を確立するためには、以下の情報が必要です。 -- 接続先 (製品名、URL など) -- 認証方法 (API キー、ユーザー名/パスワード、oauth など) - -接続を作成するには -1. [接続リスト][3]に移動します。 -1. 右上の **New Connection** ボタンをクリックします。**New Connection** ダイアログボックスが表示されます。 -1. アイコンをクリックして、インテグレーションスキーマを選択します。 -1. 該当するフィールドを入力します。**Create** をクリックします。 - -または、ワークフローページから接続を追加します。 -1. [Workflow Automation リスト][9]に移動します。 -1. 資格情報を追加する必要があるアクションを含むワークフローを選択します。ワークフロービルダーが表示されます。 -1. ワークフローの視覚化で、資格情報を追加する必要のあるアクションをクリックします。右側のパネルには、アクションの詳細が表示されます。 -1. **Configure** タブの下にある **Connection** のドロップダウンを探し、**+** のアイコンをクリックします。 -1. **New Connection** ダイアログボックスで、接続に名前を付け、必要な認証の詳細を入力します。 -1. **Save** をクリックします。 - -以下の例では、OpenAI 接続の **New Connection** ダイアログボックスを表示しています。各接続では、異なる認証情報が必要です。OpenAI 接続では、有効な Connection Name と API Token が必要です。 - -{{< img src="service_management/new-connection.png" alt="OpenAI 接続の New Connection ダイアログボックス" >}} - -### 接続の編集 - -1. [接続リスト][3]に移動します。 -1. 編集したい接続にカーソルを合わせます。右側に、**Edit**、**Permissions**、**Delete** のアイコンが表示されます。 -1. 鉛筆 (**Edit**) アイコンをクリックします。ダイアログボックスが表示されます。 -1. 変更したいフィールドを更新します。 -1. **Save** をクリックします。 - -### 接続の削除 - -1. [接続リスト][3]に移動します。 -1. 削除したい接続にカーソルを合わせます。右側に、**Edit**、**Permissions**、**Delete** のアイコンが表示されます。 -1. ゴミ箱 (**Delete**) のアイコンをクリックします。"Are you sure?” のテキストが表示されます。 -1. **Delete** を選択します。 - -### 接続の利用を制限する - -接続の利用を制限する方法については、[アクセス・認証][4]を参照してください。 - -## HTTP 接続 - -To connect to an arbitrary service, use the HTTP connection type. For authentication options and setup instructions, see [HTTP action][10]. - -## 参考資料 - -{{< partial name="whats-next/whats-next.html" >}} - -
Do you have questions or feedback? Join the **#workflows** channel on the [Datadog Community Slack][11]. - -[1]: /ja/service_management/workflows/actions_catalog/generic_actions/ -[2]: https://app.datadoghq.com/workflow -[3]: https://app.datadoghq.com/workflow/connections -[4]: /ja/service_management/workflows/access/#restrict-connection-use -[6]: /ja/integrations/ -[8]: /ja/service_management/workflows/actions_catalog/generic_actions/ -[9]: https://app.datadoghq.com/workflow -[10]: /ja/service_management/workflows/actions/http/ -[11]: https://datadoghq.slack.com/ \ No newline at end of file diff --git a/content/ja/synthetics/api_tests/websocket_tests.md b/content/ja/synthetics/api_tests/websocket_tests.md index 94c0284d4dd89..c1a166bbc9131 100644 --- a/content/ja/synthetics/api_tests/websocket_tests.md +++ b/content/ja/synthetics/api_tests/websocket_tests.md @@ -32,13 +32,21 @@ WebSocket テストは、ネットワークの外部または内部からのテ ## 構成 -`WebSocket` テストの作成を選択した後、テストのリクエストを定義します。 +You may create a test using one of the following options: -### リクエストを定義する +- **Create a test from a template**: -1. テストを実行する **URL** を指定します。 -2. テストで送信したい文字列を入力します。 -3. **Advanced Options** (オプション) をテストに追加します。 + 1. Hover over one of the pre-populated templates and click **View Template**. This opens a side panel displaying pre-populated configuration information, including: Test Details, Request Details, Assertions, Alert Conditions, and Monitor Settings. + 2. Click **+Create Test** to open the **Define Request** page, where you can review and edit the pre-populated configuration options. The fields presented are identical to those available when creating a test from scratch. + 3. Click **Save Details** to submit your API test.

+ {{< img src="getting_started/synthetics/synthetics_templates_api_video.mp4" alt="Video of Synthetics API test landing page with templates" video="true" >}} + +- **Build a test from scratch**: + + 1. テストを一から作成するには、**+ Start from scratch** テンプレートをクリックし、`WebSocket` リクエストタイプを選択します。 + 1. テストを実行する **URL** を指定します。 + 1. テストで送信したい文字列を入力します。 + 1. **Advanced Options** (オプション) をテストに追加します。

{{< tabs >}} @@ -57,14 +65,15 @@ WebSocket テストは、ネットワークの外部または内部からのテ {{< /tabs >}} -
+
-4. WebSocket テストに**名前**を付けます。 -5. WebSocket テストに `env` **タグ**とその他のタグを追加します。次に、これらのタグを使用して、[Synthetic Monitoring & Continuous Testing ページ][3]で Synthetic テストをフィルタリングできます。 + 5. WebSocket テストに**名前**を付けます。 + 6. WebSocket テストに Environment **タグ**とその他のタグを追加します。次に、これらのタグを使用して、[Synthetic Monitoring & Continuous Testing ページ][3]で Synthetic テストをフィルタリングできます。 + 7. **Send** をクリックして、リクエストの構成をテストします。画面の右側に応答プレビューが表示されます。 -{{< img src="synthetics/api_tests/websocket_test_config.png" alt="WebSocket リクエストを定義する" style="width:90%;" >}} + {{< img src="synthetics/api_tests/websocket_test_config_2.png" alt="WebSocket リクエストを定義する" style="width:90%;" >}} -**Test URL** をクリックして、リクエストのコンフィギュレーションをテストします。画面の右側に応答プレビューが表示されます。 + 8. Click **Create Test** to submit your API test. ### スニペット @@ -94,7 +103,7 @@ WebSocket テストは、ネットワークの外部または内部からのテ WebSocket テストを実行する**ロケーション**を選択します。WebSocket テストは、ネットワークの外部または内部のどちらからテストを実行するかの好みによって、管理ロケーションと[プライベートロケーション][1]の両方から実行できます。 -{{% managed-locations %}} +{{% managed-locations %}} ### テストの頻度を指定する @@ -106,7 +115,7 @@ WebSocket テストは次の頻度で実行できます。 {{% synthetics-alerting-monitoring %}} -{{% synthetics-variables %}} +{{% synthetics-variables %}} ### 変数を使用する @@ -116,7 +125,7 @@ WebSocket テストの URL、高度なオプション、アサーションで、 ## テストの失敗 -テストが 1 つ以上のアサーションを満たさない場合、またはリクエストが途中で失敗した場合、テストは `FAILED` と見なされます。場合によっては、エンドポイントに対するアサーションをテストせずにテストが実際に失敗することがあります。 +テストが 1 つ以上のアサーションを満たさない場合、またはリクエストが時期尚早に失敗した場合、テストは `FAILED` と見なされます。場合によっては、エンドポイントに対してアサーションをテストすることなくテストが実際に失敗することがあります。 これらの理由には以下が含まれます。 @@ -126,7 +135,7 @@ WebSocket テストの URL、高度なオプション、アサーションで、 `DNS` : テスト URL に対応する DNS エントリが見つかりませんでした。原因としては、テスト URL の誤構成や DNS エントリの誤構成が考えられます。 -`INVALID_REQUEST` +`INVALID_REQUEST` : テストのコンフィギュレーションが無効です (URL に入力ミスがあるなど)。 `SSL` @@ -150,11 +159,7 @@ WebSocket テストの URL、高度なオプション、アサーションで、 ### アクセス制限 -アカウントに[カスタムロール][12]を使用しているお客様は、アクセス制限が利用可能です。 - -組織内の役割に基づいて、WebSocket テストへのアクセスを制限することができます。WebSocket テストを作成する際に、(ユーザーのほかに) どのロールがテストの読み取りと書き込みを行えるかを選択します。 - -{{< img src="synthetics/settings/restrict_access_1.png" alt="テストの権限の設定" style="width:70%;" >}} +{{% synthetics_grace_permissions %}} ## その他の参考資料 @@ -170,5 +175,4 @@ WebSocket テストの URL、高度なオプション、アサーションで、 [8]: /ja/synthetics/guide/synthetic-test-monitors [9]: /ja/synthetics/api_tests/errors/#ssl-errors [10]: /ja/account_management/rbac/ -[11]: /ja/account_management/rbac#custom-roles -[12]: /ja/account_management/rbac/#create-a-custom-role \ No newline at end of file +[11]: /ja/account_management/rbac#custom-roles \ No newline at end of file diff --git a/content/ja/tests/explorer/_index.md b/content/ja/tests/explorer/_index.md new file mode 100644 index 0000000000000..1c93c6deba094 --- /dev/null +++ b/content/ja/tests/explorer/_index.md @@ -0,0 +1,137 @@ +--- +description: Test Optimization Explorer でテスト実行を検索およびフィルタリングする方法について学びます。 +further_reading: +- link: /continuous_integration/tests/ + tag: ドキュメント + text: 問題のあるテストを見つけて修正するために、テストデータを調査する +- link: https://www.datadoghq.com/blog/configure-pipeline-alerts-with-ci-monitors/ + tag: ブログ + text: Datadog CI モニターによるパイプラインアラートの構成 +title: Test Optimization Explorer +--- + +## 概要 + +Test Optimization Explorer では、任意のタグを使用して、テスト実行を複数のレベルで[検索とフィルター](#search-and-filter)、[視覚化](#visualize)、[エクスポート](#export)することができます。 + +[**Software Delivery** > **Test Optimization** > **Test Runs**][6] に移動すると、**Session**、**Module**、**Suite**、**Test** のレベルで CI のテスト実行結果が表示されます。各テストレベルは、テストの集計の異なるレベルを表します。 + +{{< img src="/tests/explorer/test_runs.png" text="Test Optimization Explorer のテスト実行結果の一覧" style="width:100%" >}} + +## 一般的なファセット + +左側の **Test** パネルには、テスト実行の検索に使用できるデフォルトのファセットが表示されます。 + +| ファセット | 説明 | +|---|---| +| Test Status | テストの結果: `Passed`、`Failed`、または `Skipped` | +| Duration | テストが完了するまでの時間。 | +| Test Service | CI Visibility でインスツルメンテーションされた[テストサービス][12]。 | +| Test Full Name | テストの識別子です。テスト名、テストスイート名、構成やパラメーターがある場合はそれを含みます。 | +| Test Name | テストケースの簡潔な名前です。テスト自体で定義されます。 | +| テストスイート | 言語やテストフレームワークによって、同じコード単位を実行する[テストのグループ][13]です。 | +| Flaky | 同じコミットに対して複数回テストを実行した際に、通過と失敗の両方のステータスを示します。 | +| Has Parameters | テストにパラメーターがあるかどうか: `true` または `false`。 | +| Known Flaky | テストが不安定であるかどうか (`true` または `false`) です。

このテスト実行が失敗し、現在のブランチまたはデフォルトブランチで、そのテストが不安定と認識された場合です。 | +| 言語 | テストを生成したライブラリのプログラミング言語。 | +| New Flaky | この不安定なテストが以前に発生したかどうか (`true` または `false`) です。

このテストが実行されたコミットで、そのテストが不安定であることが特定されます。このテストが、以前に現在のブランチやデフォルトブランチでは不安定なテストとして認識されなかった場合です。 | +| Performance Regression | テスト実行が回帰としてマークされるのは、その期間が平均の 5 倍であり、デフォルトブランチの同じテストの最大期間よりも長い場合です。 | +| Baseline Mean | テスト回帰の場合、デフォルトブランチにおける同じテストの、直近 1 週間の平均実行時間を示します。 | +| Baseline Standard Deviation | テスト回帰の場合、デフォルトブランチにおける同じテストの標準偏差を、直近 1 週間の実行期間で計算した値で示します。 | +| Absolute Change | テスト回帰の場合、ベースライン平均と比較したテスト実行期間の絶対変化を示します。 | +| Relative Change | テスト回帰の場合、ベースライン平均と比較したテスト実行期間の相対変化を示します。 | +| Standard Deviation Change | テストが新しく追加されたかどうかを示します。 | +| Test Code Owners | リポジトリの構成から推測されるテストのコード所有者の名前です。 | +| Test Fingerprint | 個々のテスト実行に対する一意の識別子です。 | +| Test Framework | テストの作成と実行に使われた基本的なフレームワークやツールのセットです。 | +| Test Command | テストの実行に使われたコマンドです。 | +| Test Bundle | テストモジュールに相当します。以前のバージョンの Datadog テストライブラリで使用されます。 | +| Test Full Name | テストの正式名称。 | +| Test Module | テストモジュールは言語によって異なります。

.NET では、テストモジュールは同じユニットテストプロジェクトの下で実行されるすべてのテストをグループ化します。
Swift では、テストモジュールは指定されたバンドルのために実行されるすべてのテストをグループ化します。
JavaScript では、テストモジュールはテストセッションに 1 対 1 でマッピングされます。
Java では、テストモジュールは同じ Maven Surefire、Failsafe、または Gradle Test タスク実行によって実行されるすべてのテストをグループ化します。
Python では、テストモジュールは通常 `unittest` や `pytest` のようなフレームワークによって管理されるテストスイートの一部として、同じ `.py` ファイルの下で実行されるすべてのテストをグループ化します。
Ruby では、テストモジュールは通常 `RSpec` や `Minitest` のようなフレームワークによって管理される同じテストファイル内で実行されるすべてのテストをグループ化します。 | +| Test Traits | `category:flaky` のようなテストの特性。 | +| Test Type | `unit benchmark` や `browser` などのテストの種類。 | +| RUM Active | テストがアクティブな [Real User Monitoring][14] Web セッションの中で実行されたかどうかを示します。 | +| Is New | テストが新しく追加されたかどうかを示します。 | +| Is Retry | テストが再試行の結果として実行されたかどうかを示します。 | +| Code Coverage Enabled | [Test Impact Analysis][16] がセッションのテストごとに[コードカバレッジ][17]を有効にしたかどうかを示します。 | +| Skipped by ITR | Test Impact Analysis によってセッション中にスキップされたテストの数です。 | +| Test Skipping Enabled | Test Impact Analysis によってテストセッションまたはモジュールのスキップが許可されているかどうか。 | +| Test Skipping Type | Test Impact Analysis がスキップするテストを決定するために使用される方法または基準です。 | +| Test Skipped | テストセッション中に実行されなかったテストの総数。これには、スキップするように構成されたテストや、手動で除外されたテストが含まれる場合があります。 | +| Time Saved | Test Impact Analysis の使用によってセッションで節約された時間の長さです。 | +| Early Flake Detection Enabled | [Early Flake Detection][15] を使用してテストが実行されたかどうかを示します。 | +| Early Flake Detection Abort Reason | テストの Early Flake Detection による中止理由を示します。 | + +Test Optimization Explorer で検索クエリの一部として使用できる一般的なファセットについては、[テスト実行ファセット][3]を参照してください。 + +### セッション + +テストセッションは最も高いレベルの集計です。これらは `yarn test` や `mvn test`、`dotnet test` などのテストコマンドに一対一で対応しています。 + +JUnit レポートのアップロードでは、アップロードされたレポートファイル 1 つにつき 1 セッションです。 + +### モジュール + +モジュールの定義は言語によって若干の違いがあります。 + +* .NET では、テストモジュールは、同じ[ユニットテストプロジェクト][9]の下で実行されるすべてのテストをグループ化します。 +* Swift では、テストモジュールは、与えられたバンドルに対して実行されるすべてのテストをグループ化します。 +* JavaScript では、テストモジュールはテストセッションに一対一でマッピングされます。 +* Java では、テストモジュールは、同じ Maven Surefire/Failsafe または Gradle Test タスク実行で実行されるすべてのテストをグループ化します。 +* JUnit レポートのアップロードでは、テストモジュールはテストセッションに一対一でマッピングされます。 + +モジュールの例としては、`SwiftLintFrameworkTests` があり、これは [`SwiftLint`][10] のテストターゲットに対応します。 + +### スイート + +テストスイートは、同じコードのユニットを実行するテストのグループです。 + +テストスイートの例としては、`src/commands/junit/__tests__/upload.test.ts` があり、これは [`datadog-ci`][11] のテストファイルに対応します。 + +テスト実行データは、[ダッシュボード][7]や[ノートブック][8]で利用できるため、ビルドエンジニアリングチームは、優先度の高い作業や CI の経時的傾向に関するコミュニケーションをカスタマイズすることができます。 + +## 検索とフィルター + +左側のファセットをクリックするか、検索バーに独自のカスタムクエリを記述することで、テスト実行のサブセットに焦点を絞ったり、広げたり、シフトしたりできます。ファセットを選択または選択解除すると、検索バーに変更が自動的に反映されます。同様に、検索バーのクエリを変更するか、検索バーにクエリをゼロから記述して、左側のファセットを選択または選択解除できます。 + +- テストの検索方法については、[Explorer][1] を参照してください。 +- クエリの作成方法については、[検索構文][2]を参照してください。 + +## 分析 + +情報を導出または統合するために、クエリされたテスト実行を、フィールド、パターン、トランザクションなどの上位エンティティにグループ化します。属性を検索するために作成する必要のない [ファセット][3]を使用すると、以下のアクションを実行できます。 + +- CI/CD パイプラインで実行されているテストの進捗を検索し、追跡します。 +- すべての CI/CD ジョブの実行を調査して、失敗したテスト実行を特定してトラブルシューティングします。 +- 修正する[不安定なテスト][5]を特定します。 + +## 視覚化 + +視覚化の種類を選択して、フィルターや集計の結果を視覚化し、テストの実行をよりよく理解できます。たとえば、テスト結果をリストで表示してテストデータを列ごとに整理したり、[時系列グラフ][18]で表示して CI テストデータの経時変化を測定したりできます。 + +## エクスポート + +Test Optimization Explorer の[ビューをエクスポート][4]すると、後で別のコンテキストで再利用できます。 + +## 参考資料 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ja/tests/explorer/ +[2]: /ja/tests/explorer/search_syntax +[3]: /ja/tests/explorer/facets +[4]: /ja/tests/explorer/saved_views +[5]: /ja/tests/flaky_test_management +[6]: https://app.datadoghq.com/ci/test-runs +[7]: https://app.datadoghq.com/dashboard/lists +[8]: https://app.datadoghq.com/notebook/list +[9]: https://learn.microsoft.com/en-us/visualstudio/test/create-a-unit-test-project?view=vs-2022#to-create-a-unit-test-project +[10]: https://github.com/realm/SwiftLint/blob/7738f0c0a5990201ca6556bdb2f13f8e67b5191d/Package.swift#L71 +[11]: https://github.com/DataDog/datadog-ci/blob/6de6ea3bbffa57d8576422535061ca35c759feb6/src/commands/junit/__tests__/upload.test.ts +[12]: /ja/glossary/?product=ci-cd#test-service +[13]: /ja/glossary/?product=ci-cd#test-suite +[14]: /ja/real_user_monitoring/ +[15]: /ja/tests/flaky_test_management/early_flake_detection/ +[16]: /ja/intelligent_test_runner/ +[17]: /ja/tests/code_coverage/ +[18]: https://app.datadoghq.com/ci/test-runs?viz=timeseries \ No newline at end of file diff --git a/content/ko/agent/basic_agent_usage/windows.md b/content/ko/agent/basic_agent_usage/windows.md index cdcfa42413ccb..8a8f30af5a5d6 100644 --- a/content/ko/agent/basic_agent_usage/windows.md +++ b/content/ko/agent/basic_agent_usage/windows.md @@ -196,7 +196,7 @@ Windows에 에이전트를 설치할 때 다음 각 구성 옵션을 명령줄 | `PROXY_USER` | 문자열 | (프록시를 사용하는 경우) 프록시 사용자를 설정합니다. [Datadog 에이전트를 프록시와 함께 사용하는 방법에 대해 자세히 알아보세요][4]. | | `PROXY_PASSWORD` | 문자열 | (프록시를 사용하는 경우) 프록시 비밀번호를 설정하세요. 프로세스/컨테이너 에이전트의 경우 이 변수는 인증 비밀번호를 전달하는 데 필요하며 이름을 바꿀 수 없습니다. [Datadog 에이전트를 프록시와 함께 사용하는 방법에 대해 자세히 알아보세요][4]. | | `EC2_USE_WINDOWS_PREFIX_DETECTION` | Boolean | EC2의 Windows 호스트에는 EC2 인스턴스 ID를 사용합니다. _(v7.28.0+)_ | -| [지원 중단됨] `ADDLOCAL` | 문자열 | 추가 에이전트 구성 요소를 활성화합니다. `"MainApplication,NPM"`로 설정하면 [네트워크 성능 모니터링][5]용 드라이버 구성 요소가 설치됩니다. _(버전 7.44.0 및 이전)_ | +| [지원 중단됨] `ADDLOCAL` | 문자열 | 추가 에이전트 구성 요소를 활성화합니다. `"MainApplication,NPM"`로 설정하면 [클라우드 네트워크 모니터링][5]용 드라이버 구성 요소가 설치됩니다. _(버전 7.44.0 및 이전)_ | **참고:** 에이전트 7은 Python 3만 지원합니다. 업그레이드하기 전에 사용자 지정 검사가 Python 3과 호환되는지 확인합니다. 자세한 내용은 [Python 3 Custom Check Migration][1] 가이드를 참조하세요. 사용자 정의 검사를 사용하지 않거나 이미 호환성을 확인한 경우 일반적인 방법으로 업그레이드합니다. @@ -397,7 +397,7 @@ process_config: [2]: /ko/agent/supported_platforms/?tab=windows [3]: /ko/agent/faq/windows-agent-ddagent-user/ [4]: /ko/agent/configuration/proxy/ -[5]: /ko/network_monitoring/performance +[5]: /ko/network_monitoring/cloud_network_monitoring [6]: /ko/agent/guide/datadog-agent-manager-windows/ [7]: /ko/integrations/wmi_check/ [8]: https://app.datadoghq.com/monitors/create/integration diff --git a/content/ko/containers/amazon_ecs/_index.md b/content/ko/containers/amazon_ecs/_index.md index 703ad2ebf3347..ca583775b18eb 100644 --- a/content/ko/containers/amazon_ecs/_index.md +++ b/content/ko/containers/amazon_ecs/_index.md @@ -20,6 +20,9 @@ further_reading: - link: https://www.datadoghq.com/blog/cloud-cost-management-container-support/ tag: 블로그 text: Datadog 클라우드 비용 관리를 통해 Kubernetes 및 ECS 지출 내역을 확인하세요. +- link: https://www.datadoghq.com/architecture/using-datadog-with-ecs-fargate/ + tag: 아키텍처 센터 + text: FCS Fargate와 함께 Datadog 사용 title: Amazon ECS --- @@ -200,7 +203,7 @@ EC2 인스턴스의 보안 그룹 설정이 APM 및 DogStatsD의 포트를 공 } {{< /highlight >}} -#### 네트워크 성능 모니터링 +#### 클라우드 네트워크 모니터링
이 기능은 리눅스에서만 사용할 수 있습니다. @@ -264,7 +267,7 @@ EC2 인스턴스의 보안 그룹 설정이 APM 및 DogStatsD의 포트를 공 ``` #### 네트워크 경로 -
네트워크 경로 Datadog 네트워크 성능 모니터링 미리보기 중입니다. 가입하려면 Datadog 담당자에게 문의하세요.
+
Datadog 클라우드 네트워크 모니터링용 네트워크 경로는 서비스가 일부에게만 허용됩니다. 사용해 보려면 Datadog 담당자에게 문의하세요.
1. ECS 클러스터에서 [네트워크 경로][31]를 활성화하려면 `datadog-agent-sysprobe-ecs.json` 파일에 다음 환경 변수를 추가하여 `system-probe` 추적 경로 모듈을 활성화합니다. diff --git a/content/ko/data_security/logs.md b/content/ko/data_security/logs.md new file mode 100644 index 0000000000000..b67d018c843ba --- /dev/null +++ b/content/ko/data_security/logs.md @@ -0,0 +1,91 @@ +--- +aliases: +- /ko/logs/security/ +further_reading: +- link: /data_security/ + tag: 설명서 + text: Datadog에 제출된 주요 데이터 카테고리 검토 +- link: /data_security/pci_compliance/ + tag: 설명서 + text: PCI 준수 Datadog 조직 설정하기 +- link: https://www.datadoghq.com/blog/datadog-pci-compliance-log-management-apm/ + tag: 블로그 + text: Datadog의 PCI 준수 로그 관리 및 애플리케이션 성능 모니터링(APM) 공지 +title: 로그 관리 데이터 보안 +--- + +
이 페이지는 Datadog으로 전송되는 데이터의 보안에 관한 것입니다. 클라우드 및 애플리케이션 보안 제품 및 기능을 찾으려면 보안 섹션을 참조하세요.
+ +로그 관리 프로덕트는 여러 [환경 및 형식][1]을 지원하므로 원하는 거의 모든 데이터를 Datadog에 제출할 수 있습니다. 본 문서에서는 로그를 Datadog에 제출할 때 사용할 수 있는 주요 보안 보장 및 필터링 제어에 대해 설명합니다. + +**참고**: 로그는 다양한 Datadog 프로덕트에서 확인할 수 있습니다. 애플리케이션 성능 모니터링(APM) 트레이스 페이지에 표시되는 로그를 포함하여 Datadog UI에서 표시되는 모든 로그는 로그 관리 프로덕트의 일부입니다. + +## 정보 보안 + +Datadog 에이전트는 HTTPS 또는 포트 10516의 TLS 암호화 TCP 연결을 통해 로그를 Datadog으로 제출하며, 이 떄 아웃바운드 통신이 필요합니다([에이전트 로그 전송][2] 참조). + +Datadog은 유휴 상태인 인덱싱된 로그에 대칭형 암호화(AES-256)를 사용합니다. 인덱싱된 로그는 사용자가 정의한 보존 기간이 만료되면 Datadog 플랫폼에서 삭제됩니다. + +## 로그 필터링 + +버전 6 이상에서는 에이전트가 Datadog 애플리케이션으로 전송하는 로그를 필터링하도록 에이전트를 설정할 수 있습니다. 특정 로그의 제출을 방지하려면 `log_processing_rules` [설정][3]을 **exclude_at_match** 또는 **include_at_match** `type`과 함께 사용합니다. 이 설정을 사용하면 하나 이상의 정규식이 포함된 목록을 생성할 수 있으며, 에이전트가 제공된 포함 또는 제외 규칙에 따라 로그를 필터링하도록 지시합니다. + +## 로그 난독화 + +버전 6 이상에서는 에이전트가 Datadog 애플리케이션으로 전송하는 로그 내의 특정 패턴을 난독화하도록 에이전트를 설정할 수 있습니다. 특정 로그의 민감한 시퀀스를 마스킹하려면 `log_processing_rules` [설정][4]을 **mask_sequences** `type`과 함께 사용합니다. 이 설정을 사용하면 하나 이상의 정규식이 포함된 목록을 생성할 수 있으며, 에이전트가 로그 내의 민감한 데이터를 수정하도록 지시합니다. + +또는 클라우드나 에이전트에서 [민감한 데이터 스캐너][7]를 사용하여 민감한 데이터를 식별, 태깅 및 수정합니다. 민감한 데이터 스캐너에서 스캔 그룹을 설정하여 스캔할 데이터를 정의한 다음, 스캔 규칙을 설정하여 데이터 내에서 일치하는 민감한 정보를 결정합니다. Datadog은 신용카드 번호, 이메일 주소, IP 주소, API 키 등과 같은 민감한 정보를 감지하기 위해 미리 정의된 규칙 라이브러리를 제공합니다. 또한 정규식 기반 스캔 규칙을 정의하여 민감한 정보를 식별할 수도 있습니다. + +민감한 데이터 스캐너는 [통합 관측성 파이프라인][9]의 [프로세서][8]로도 사용할 수 있습니다. 관측성 파이프라인을 사용하면 자체 인프라스트럭처 내에서 로그를 수집 및 처리한 다음 다운스트림 통합으로 라우팅할 수 있습니다. + +## HIPAA 사용 고객 + +{{% hipaa-customers %}} + +## 로그 관리에 대한 PCI DSS 규정 준수 + +{{< site-region region="us" >}} + +
+로그 관리에 대한 PCI DSS 규정 준수는 US1 사이트의 Datadog 조직에서만 사용 가능합니다. +
+ +Datadog을 사용하면 고객은 요청 시에 로그를 PCI DSS를 준수하는 Datadog 조직으로 전송할 수 있습니다. PCI를 준수하는 Datadog 조직을 설정하려면 다음 단계를 따르세요. + +{{% pci-logs %}} + +자세한 내용은 [PCI DSS 규정 준수][1]를 참조하세요. 애플리케이션 성능 모니터링(APM)에 대한 PCI 규정 준수를 활성화하려면 [애플리케이션 성능 모니터링(APM)의 PCI DSS 규정 준수][1]를 참조하세요. + +[1]: /ko/data_security/pci_compliance/ +[2]: /ko/data_security/pci_compliance/?tab=apm + +{{< /site-region >}} + +{{< site-region region="us3,us5,eu,gov,ap1" >}} + +{{< region-param key="dd_site_name" >}} 사이트에서는 로그 관리에 대한 PCI DSS 규정 준수를 사용할 수 없습니다. + +{{< /site-region >}} + +## 엔드포인트 암호화 + +모든 로그 제출 엔드포인트는 암호화됩니다. 이러한 레거시 엔드포인트는 계속 지원됩니다. + +* `tcp-encrypted-intake.logs.datadoghq.com` +* `lambda-tcp-encrypted-intake.logs.datadoghq.com` +* `gcp-encrypted-intake.logs.datadoghq.com` +* `http-encrypted-intake.logs.datadoghq.com` + +### 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/logs/log_collection/ +[2]: /ko/agent/logs/log_transport +[3]: /ko/agent/logs/advanced_log_collection/#filter-logs +[4]: /ko/agent/logs/advanced_log_collection/#scrub-sensitive-data-from-your-logs +[5]: /ko/logs/explorer/#share-views +[6]: https://www.datadoghq.com/legal/hipaa-eligible-services/ +[7]: /ko/sensitive_data_scanner/ +[8]: /ko/observability_pipelines/processors/sensitive_data_scanner +[9]: /ko/observability_pipelines/ \ No newline at end of file diff --git a/content/ko/data_streams/_index.md b/content/ko/data_streams/_index.md index 9caef695f64f8..35f8901fcc061 100644 --- a/content/ko/data_streams/_index.md +++ b/content/ko/data_streams/_index.md @@ -21,6 +21,9 @@ further_reading: - link: https://www.datadoghq.com/blog/data-streams-monitoring-sqs/ tag: 블로그 text: 데이터 스트림 모니터링으로 SQS 모니터링 +- link: https://www.datadoghq.com/blog/confluent-connector-dsm-autodiscovery/ + tag: 블로그 + text: Confluent Cloud 커넥터를 자동 탐지하고 데이터 스트림 모니터링에서 쉽게 성능 모니터링하기 title: 데이터 스트림 모니터링 --- @@ -47,10 +50,10 @@ title: 데이터 스트림 모니터링 | 런타임 | 지원되는 기술 | |---|----| | 자바(Java)/Scala | Kafka(자체 호스팅됨, Amazon MSK, Confluent Cloud / Platform), RabbitMQ, HTTP, gRPC, Amazon SQS | -| 파이썬(Python) | Kafka(자체 호스팅, Amazon MSK, Confluent Cloud/플랫폼), RabbitMQ, Amazon SQS | +| Python | Kafka(자체 호스팅, Amazon MSK, Confluent Cloud/플랫폼), RabbitMQ, Amazon SQS | | .NET | Kafka(자체 호스팅, Amazon MSK, Confluent Cloud/플랫폼), RabbitMQ, Amazon SQS | | Node.js | Kafka(자체 호스팅, Amazon MSK, Confluent Cloud/플랫폼), RabbitMQ, Amazon SQS | -| 고(Go) | 전체([수동 계측 포함][1]) | +| Go | 전체([수동 계측 포함][1]) | ## 데이터 스트림 모니터링 살펴보기 diff --git a/content/ko/data_streams/go.md b/content/ko/data_streams/go.md index 6f4d657b4278b..d30b79d3cec2c 100644 --- a/content/ko/data_streams/go.md +++ b/content/ko/data_streams/go.md @@ -2,80 +2,101 @@ title: Go용 데이터 스트림 모니터링 설정 --- +다음 계측 유형을 사용할 수 있습니다. +* [Kafka 기반 워크로드용 자동 계측](#automatic-instrumentation) +* [Kafka 기반 워크로드용 수동 계측](#kafka-based-workloads) +* [다른 대기열 기술 또는 프로토콜의 사전 계측](#other-queuing-technologies-or-protocols) + ### 사전 필수 조건 데이터 스트림 모니터링을 시작하려면, 다음과 같은 Datadog 에이전트 및 데이터 스트림 모니터링 라이브러리 최신 버전이 필요합니다: -* [Datadog 에이전트 v7.34.0 이상][1] -* [dd-trace-go v1.56.1 이상][2] - -### 사전 필수 조건 * [Datadog 에이전트 v7.34.0 이상][1] +* [dd-trace-go v1.56.1 이상][2] ### 지원되는 라이브러리 | 기술 | 라이브러리 | 최소 트레이서 버전 | 권장 트레이서 버전 | |------------|--------------------------------------------------------------------------|------------------------|----------------------------| -| Kafka | [confluent-kafka-go](https://github.com/confluentinc/confluent-kafka-go) | 1.56.1 | 1.66.0 이상 | -| Kafka | [Sarama](https://github.com/Shopify/sarama) | 1.56.1 | 1.66.0 이상 | +| Kafka | [confluent-kafka-go][8] | 1.56.1 | 1.66.0 이상 | +| Kafka | [Sarama][9] | 1.56.1 | 1.66.0 이상 | ### 설치 -- `DD_DATA_STREAMS_ENABLED=true` 환경변수를 설정합니다. -- [트레이서를 시작][3]합니다. +#### 자동 계측 + +자동 계측에서는 [오케스트레이션][4]을 사용해 dd-trace-go를 설치하며 Sarama와 Confluent Kafka 라이브러리 모두 지원합니다. + +서비스를 자동으로 계측하는 방법: + +1. [오케스트레이션][4]을 사용해 서비스를 컴파일하거나 실행하려면 [오케스트레이션 시작 방법][5] 가이드를 따르세요. +2. `DD_DATA_STREAMS_ENABLED=true` 환경 변수 설정 + +#### 수동 계측 + +##### Sarama Kafka 클라이언트 -다음과 같은 두 가지 계측 유형을 사용할 수 있습니다: -- Kafka 기반 워크로드용 계측 -- 기타 대기행렬 기술(queuing technology) 또는 프로토콜용 커스텀 계측 +데이터 스트림 모니터링으로 Sarama Kafka 클라이언트 수동 계측하는 방법: -### Confluent Kafka 클라이언트 +1. `ddsarama` go 라이브러리 가져오기 ```go import ( - ddkafka "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/kafka.v2" + ddsarama "gopkg.in/DataDog/dd-trace-go.v1/contrib/Shopify/sarama" // 1.x + // ddsarama "github.com/DataDog/dd-trace-go/contrib/Shopify/sarama/v2" // 2.x ) +2. `ddsarama.WrapAsyncProducer`로 생산자 래핑 + ... -// 이 래퍼로 프로듀서 생성 -producer, err := ddkafka.NewProducer(&kafka.ConfigMap{ - "bootstrap.servers": bootStrapServers, -}, ddkafka.WithDataStreams()) +config := sarama.NewConfig() +producer, err := sarama.NewAsyncProducer([]string{bootStrapServers}, config) +// 이 줄 추가 +producer = ddsarama.WrapAsyncProducer(config, producer, ddsarama.WithDataStreams()) ``` -서비스가 하나의 포인트에서 데이터를 사용하고 다른 포인트를 생성하는 경우, 다음과 같은 Go 컨텍스트 구조를 활용하여 두 포인트 간에 컨텍스트를 전파합니다: -1. 헤더에서 컨텍스트를 추출합니다: - ```go - ctx = datastreams.ExtractFromBase64Carrier(ctx, ddsarama.NewConsumerMessageCarrier(message)) - ``` +##### Confluent Kafka 클라이언트 -2. 다운스트림 생성 전에 헤더에 삽입합니다: - ```go - datastreams.InjectToBase64Carrier(ctx, ddsarama.NewProducerMessageCarrier(message)) - ``` +데이터 스트림 모니터링으로 Confluent Kafka를 수동 계측하는 방법: -### Sarama Kafka 클라이언트 +1. `ddkafka` go 라이브러리 가져오기 ```go import ( - ddsarama "gopkg.in/DataDog/dd-trace-go.v1/contrib/IBM/sarama.v1" + ddkafka "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/kafka.v2" // 1.x + // ddkafka "github.com/DataDog/dd-trace-go/contrib/confluentinc/confluent-kafka-go/kafka.v2/v2" // 2.x ) +``` -... -config := sarama.NewConfig() -producer, err := sarama.NewAsyncProducer([]string{bootStrapServers}, config) +2. `ddkafka.NewProducer`로 생산자를 래핑하고 `ddkafka.WithDataStreams()` 구성 사용 -// ADD THIS LINE -producer = ddsarama.WrapAsyncProducer(config, producer, ddsarama.WithDataStreams()) +```go +// 이 래퍼로 생산자 생성 +producer, err := ddkafka.NewProducer(&kafka.ConfigMap{ + "bootstrap.servers": bootStrapServers, +}, ddkafka.WithDataStreams()) ``` -### 수동 계측 +서비스가 하나의 포인트에서 데이터를 사용하고 다른 포인트를 생성하는 경우, 다음과 같은 Go 컨텍스트 구조를 활용하여 두 포인트 간에 컨텍스트를 전파합니다: + +3. 헤더에서 컨텍스트 추출 + ```go + ctx = datastreams.ExtractFromBase64Carrier(ctx, ddsarama.NewConsumerMessageCarrier(message)) + ``` + +4. 다운스트림 생성 전에 헤더에 삽입 + ```go + datastreams.InjectToBase64Carrier(ctx, ddsarama.NewProducerMessageCarrier(message)) + ``` + +#### 다른 대기열 기술 또는 프로토콜 수동 계측을 사용할 수도 있습니다. 예를 들어, Kinesis로 컨텍스트를 전파할 수 있습니다. -#### 생성 콜(produce call) 계측 +##### 생성 콜(produce call) 계측 -1. 메시지가 [TextMapWriter 인터페이스]를 지원하는지 확인합니다(https://github.com/DataDog/dd-trace-go/blob/main/datastreams/propagation.go#L37). +1. 메시지가 [TextMapWriter 인터페이스][6]를 지원하는지 확인하세요. 2. 메시지에 컨텍스트를 삽입하고 호출하여 생성 콜(produce call)을 계측합니다: ```go @@ -86,15 +107,20 @@ if ok { ``` -#### 소비 콜(consume call) 계측 +##### 소비 콜(consume call) 계측 -1. 메시지가 [TextMapReader 인터페이스]를 지원하는지 확인합니다(https://github.com/DataDog/dd-trace-go/blob/main/datastreams/propagation.go#L44). +1. 메시지가 [TextMapReader 인터페이스][6]를 지원하는지 확인하세요. 2. 메시지에 컨텍스트를 삽입하고 호출하여 소비 콜(consume call)을 계측합니다: ```go ctx, ok := tracer.SetDataStreamsCheckpointWithParams(datastreams.ExtractFromBase64Carrier(context.Background(), message), options.CheckpointParams{PayloadSize: payloadSize}, "direction:in", "type:kinesis", "topic:kinesis_arn") ``` - -[1]: /ko/agent +[1]: /ko/agent/ [2]: https://github.com/DataDog/dd-trace-go -[3]: https://docs.datadoghq.com/ko/tracing/trace_collection/library_config/go/ \ No newline at end of file +[3]: https://docs.datadoghq.com/ko/tracing/trace_collection/library_config/go/ +[4]: https://datadoghq.dev/orchestrion/ +[5]: https://datadoghq.dev/orchestrion/docs/getting-started/ +[6]: https://github.com/DataDog/dd-trace-go/blob/main/datastreams/propagation.go#L37 +[7]: https://github.com/DataDog/dd-trace-go/blob/main/datastreams/propagation.go#L44 +[8]: https://github.com/confluentinc/confluent-kafka-go +[9]: https://github.com/Shopify/sarama \ No newline at end of file diff --git a/content/ko/glossary/terms/sast.md b/content/ko/glossary/terms/sast.md index 365c86fd82125..34e61ce7d8b39 100644 --- a/content/ko/glossary/terms/sast.md +++ b/content/ko/glossary/terms/sast.md @@ -4,7 +4,7 @@ core_product: - appsec synonyms: - 정적 분석 -- 코드 분석 +- 코드 보안 title: 정적 애플리케이션 보안 테스트(SAST) --- diff --git a/content/ko/integrations/azure.md b/content/ko/integrations/azure.md index 9f55da1957333..3b933d61f294c 100644 --- a/content/ko/integrations/azure.md +++ b/content/ko/integrations/azure.md @@ -154,50 +154,49 @@ Datadog의 Azure 통합은 }} +![호스트 태그가 포함된 쿼리에 관해 경고하는 모니터링][5] **참고**: Datadog 에이전트를 실행하지 않는 경우에는 Azure VM의 `host` 태그는 GUID입니다. 알림 응답에서 메시지 템플릿 변수 `{{host.name_tag}}`를 사용해 파악하기 쉬운 이름을 포함하세요. -## 수집한 데이터 +## 수집한 데이터
azure.vm.status 메트릭은 사용 종료되었으며 새 Datadog 조직에는 이 메트릭이 채워지지 않습니다. 기존 사용자의 경우 2023년 6월 1일에 이 메트릭 사용이 종료되었습니다. @@ -72,28 +118,29 @@ Datadog에는 [Azure 리소스 상태 API][3]에 있는 상태에 기반하여 Azure Virtual Machine 통합에는 이벤트가 포함되어 있지 않습니다. -### 서비스 검사 +### 서비스 점검 Azure Virtual Machine 통합에는 서비스 점검이 포함되어 있지 않습니다. ## 트러블슈팅 -도움이 필요하신가요? [Datadog 지원팀][6]에 문의하세요. +도움이 필요하신가요? [Datadog 지원팀][7]에 문의하세요. ## 참고 자료 -- [Microsoft Azure VM 모니터링하는 방법][7] -- [Azure 메트릭 수집하는 방법][8] -- [Datadog로 Azure VM 모니터링하는 방법][9] -- [Datadog를 사용해 전략적으로 SQL 워크로드를 Azure로 마이그레이션하기][10] +- [Microsoft Azure VM 모니터링 방법][8] +- [Azure 메트릭 수집 방법][9] +- [Datadog로 Azure VM을 모니터링하는 방법][10] +- [Datadog를 사용해 전략적으로 SQL 워크로드를 Azure로 마이그레이션하기][11] [1]: https://docs.datadoghq.com/ko/integrations/azure/ [2]: https://docs.datadoghq.com/ko/integrations/guide/azure-troubleshooting/#enable-diagnostics [3]: https://docs.microsoft.com/en-us/rest/api/resourcehealth/ [4]: https://app.datadoghq.com/monitors/downtimes -[5]: https://github.com/DataDog/dogweb/blob/prod/integration/azure_vm/azure_vm_metadata.csv -[6]: https://docs.datadoghq.com/ko/help/ -[7]: https://www.datadoghq.com/blog/how-to-monitor-microsoft-azure-vms -[8]: https://www.datadoghq.com/blog/how-to-collect-azure-metrics -[9]: https://www.datadoghq.com/blog/monitor-azure-vms-using-datadog -[10]: https://www.datadoghq.com/blog/migrate-sql-workloads-to-azure-with-datadog/ \ No newline at end of file +[5]: images/azure_vm_automute2.png +[6]: https://github.com/DataDog/dogweb/blob/prod/integration/azure_vm/azure_vm_metadata.csv +[7]: https://docs.datadoghq.com/ko/help/ +[8]: https://www.datadoghq.com/blog/how-to-monitor-microsoft-azure-vms +[9]: https://www.datadoghq.com/blog/how-to-collect-azure-metrics +[10]: https://www.datadoghq.com/blog/monitor-azure-vms-using-datadog +[11]: https://www.datadoghq.com/blog/migrate-sql-workloads-to-azure-with-datadog/ \ No newline at end of file diff --git a/content/ko/integrations/bind9.md b/content/ko/integrations/bind9.md new file mode 100644 index 0000000000000..e6c8b981a2400 --- /dev/null +++ b/content/ko/integrations/bind9.md @@ -0,0 +1,307 @@ +--- +app_id: bind9 +app_uuid: b37533b0-6f0e-4259-9971-083f08086fac +assets: + dashboards: + Bind9 - Details: assets/dashboards/bind9_details.json + Bind9 - Overview: assets/dashboards/bind9_overview.json + integration: + auto_install: true + configuration: + spec: assets/configuration/spec.yaml + events: + creates_events: false + metrics: + check: bind9.nsstat_AuthQryRej + metadata_path: metadata.csv + prefix: bind9. + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 10222 + source_type_name: BIND 9 + logs: + source: bind9 +author: + homepage: https://www.datadoghq.com + name: Datadog + sales_email: info@datadoghq.com + support_email: help@datadoghq.com +categories: +- 네트워크 +- 로그 수집 +- 메트릭 +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-extras/blob/master/bind9/README.md +display_on_public_website: true +draft: false +git_integration_title: bind9 +integration_id: bind9 +integration_title: Bind 9 +integration_version: 1.1.0 +is_public: true +manifest_version: 2.0.0 +name: bind9 +public_title: Bind 9 +short_description: Bind9 로그 및 서버 메트릭을 수집할 수 있는 Datadog 통합 +supported_os: +- linux +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + - Category::Network + - Category::Log Collection + - Category::Metrics + - Offering::Integration + - Submitted Data Type::Logs + - Submitted Data Type::Metrics + configuration: README.md#Setup + description: Bind9 로그 및 서버 메트릭을 수집할 수 있는 Datadog 통합 + media: + - caption: Bind9 - 개요 + image_url: images/bind9_overview.png + media_type: 이미지 + - caption: Bind9 - 세부 정보 + image_url: images/bind9_details.png + media_type: 이미지 + overview: README.md#Overview + support: README.md#Support + title: Bind 9 +--- + + +## 개요 + +[Bind 9][1]는 도메인 네임 시스템(DNS) 프로토콜의 이식성이 높은 완전한 구현 버전입니다. Bind 9 네임 서버(지정됨)는 권한 있는 네임 서버, 리커시브 리졸버(recursive resolver), DNS 포워더(Forwarder) 또는 이 세 가지 역할을 동시에 수행할 수 있습니다. + + +본 통합은 쿼리, 쿼리 오류, 네트워크, 렘 서버, 알림 및 보안 로그 유형에 대한 보강 및 시각화를 제공해 드립니다. 기본 제공되는 대시보드로 DNS 요청 패턴, DNS 통신, 적절한 서버 설정 및 DNS 공격에 대한 자세한 인사이트를 시각화하여 강력하고 안정적인 DNS 환경을 확보합니다. 또한 본 통합은 기본 제공 탐지 규칙을 제공합니다. 필요에 따라 시각화에 사용할 수 있는 Bind 9 통계를 메트릭 형태로 수집합니다. + + +## 설정 + +### 설치 + +Bind 9 통합을 설치하려면 다음 에이전트 설치 명령을 실행하고 아래 단계를 따릅니다. 자세한 내용은 [통합 관리][2] 문서를 참조하세요. + +**참고**: 에이전트 버전 >= 7.58.0에서는 해당 단계를 수행할 필요가 없습니다. + +Linux 명령 + ```shell + sudo -u dd-agent -- datadog-agent integration install datadog-bind9==1.1.0 + ``` + +#### 로그 수집 + +#### 파일 모니터링 + +1. Bind 9 기기에 로그인합니다. +2. `named.conf` 파일을 열어 다음 로깅 절을 추가합니다. + ``` + logging { + channel { + file "/folder_path/file_name.log" versions > size suffix ; + print-time (yes | local | iso8601 | iso8601-utc); + print-category yes; + print-severity yes; + }; + category { ; }; + } + ``` + **참고**: `print-time`의 권장 값은 `iso8601-utc`인데, 이는 Datadog이 기본적으로 모든 로그가 UTC 시간대일 것으로 예상하기 때문입니다. Bind 9 로그의 시간대가 UTC가 아닌 경우 [다른 시간대 사용에 관한 단계][3]를 따르세요. 아울러, [Bind 9이 정의한 카테고리를 확인][4]하세요. + + 로깅 채널 예시: + ``` + logging { + channel default_log { + file "/var/log/named/query.log" versions 3 size 10m; + print-time iso8601-utc; + print-category yes; + print-severity yes; + }; + category default { default_log; }; + } + ``` +3. 파일을 저장하고 종료합니다. +4. 서비스를 다시 시작합니다. + ``` + service named restart + ``` + +#### Syslog +1. Bind 9 기기에 로그인합니다. +2. `named.conf` 파일을 열어 다음 로깅 절을 추가합니다. + ``` + logging { + channel { + syslog ; + severity (critical | error | warning | notice | info | debug [level ] | dynamic); + print-time (yes | local | iso8601 | iso8601-utc); + print-category yes; + print-severity yes; + }; + category { ; }; + } + ``` + **참고**: `print-time`의 권장 값은 `iso8601-utc`인데, 이는 Datadog이 기본적으로 모든 로그가 UTC 시간대일 것으로 예상하기 때문입니다. Bind 9 로그의 시간대가 UTC가 아닌 경우 [다른 시간대 사용에 관한 단계][3]를 따르세요. 아울러, [Bind 9이 정의한 카테고리를 확인][4]하세요. + + 로깅 채널 예시: + ``` + logging { + channel default_log { + syslog local3; + print-time iso8601-utc; + print-category yes; + print-severity yes; + }; + category default { default_log; }; + } + ``` + +3. 파일을 저장하고 종료합니다. +4. syslog/Rsyslog 설정을 편집하여 Bind 9이 선택한 기능으로 Datadog에 로깅합니다. + ``` + .* @@: + ``` +5. 다음 서비스를 재시작합니다. + ``` + service syslog/rsyslog restart + service named restart + ``` + +**참고**: Bind 9 애플리케이션용으로 설정한 채널에서 `print-category` 및 `print-severity`가 `yes`로 설정되어 있는지 확인하세요. + +### 설정 + +#### 메트릭 수집 + +1. [에이전트 설정 디렉토리][5]의 루트에 있는 `conf.d/` 폴더에서 `bind9.d/conf.yaml` 파일을 편집하여 Bind 9 [메트릭][6] 수집을 시작합니다. 사용 가능한 설정 옵션 전체를 보려면 [bind9.d/conf.yaml 샘플][7]을 참고하세요. + + ```yaml + init_config: + + instances: + - url: "" + ``` + +2. [에이전트를 재시작합니다][8]. + +#### 로그 수집 + +1. Datadog 에이전트에서 로그 수집은 기본적으로 비활성화되어 있으므로 `datadog.yaml` 파일에서 활성화합니다. + + ```yaml + logs_enabled: true + ``` + +#### 파일 모니터링 + +1. Bind 9 로그 수집을 시작하려면 이 설정 블록을 `bind9.d/conf.yaml` 파일에 추가하세요. + + 사용 가능한 모든 설정 옵션은 [bind9.d/conf.yaml 샘플][7]을 참조하세요. + + ```yaml + logs: + - type: file + path: /var/log/named/*.log + service: bind9 + source: bind9 + ``` + **참고**: `conf.yaml`의 `path` 변수를 Bind 9 애플리케이션용 채널의 `file` 파라미터에 설정된 경로와 동일한 경로로 변경하세요. + +3. [에이전트를 재시작합니다][8]. + +#### Syslog +1. Bind 9 로그 수집을 시작하려면 이 설정 블록을 `bind9.d/conf.yaml` 파일에 추가하세요. + + 사용 가능한 모든 설정 옵션은 [bind9.d/conf.yaml 샘플][7]을 참조하세요. + + ```yaml + logs: + - type: tcp + port: + service: bind9 + source: bind9 + ``` + **참고**: `port`의 값은 `syslog.conf/rsyslog.conf`에서 언급한 것과 동일해야 합니다. + +3. [에이전트를 재시작합니다][8]. + +

Bind 9 Datadog 로그 파이프라인에서 UTC가 아닌 다른 시간대 지정

+ +Datadog은 기본적으로 모든 로그가 UTC 표준 시간대일 것으로 예상합니다. Bind 9 로그의 표준 시간대가 UTC가 아니라면 Bind 9 Datadog 파이프라인에서 올바른 시간대를 지정하세요. + +Bind 9 파이프라인에서 다음과 같이 시간대를 변경합니다. + + 1. Datadog 앱에서 [파이프라인 페이지][9]로 이동합니다. + + 2. **필터 파이프라인** 검색창에 "Bind 9"을 입력합니다. + + 3. Bind 9 파이프라인 위로 마우스를 올려 **클론** 버튼을 클릭합니다. 그러면 Bind 9 파이프라인의 편집 가능한 복제본이 생성됩니다. + + 4. 다음 단계에 따라 Grok 파서를 편집합니다. + - 복제한 파이프라인에서 "Grok Parser: Parsing Bind 9 common log format"이라는 이름의 프로세서를 찾아 파이프라인 위로 마우스를 올려 `Edit` 버튼을 클릭합니다. + - **파싱 규칙 정의**에서, + - `UTC` 문자열을 Bind 9 서버 표준 시간대의 [TZ 식별자][10]로 변경합니다. 예를 들어, 표준 시간대가 IST인 경우 값을`Asia/Calcutta`로 변경합니다. + - **업데이트** 버튼을 클릭합니다. + +### 검증 + +[에이전트의 상태 하위 명령을 실행][11]하고 점검 섹션에서 `bind9`을 찾습니다. + +## 호환성 + +이 점검은 다른 주요 플랫폼과 모두 호환됩니다. + +## 수집한 데이터 + +### 로그 + +Bind 9 통합은 다음 로그 유형을 수집합니다. + +| 이벤트 유형 | +| -------------- | +| 쿼리, 쿼리 오류, Lame 서버, 알림, 보안| + +### 메트릭 +{{< get-metrics-from-git "bind9" >}} + + +### 이벤트 + +Bind 9 점검은 이벤트를 포함하지 않습니다. + +### 서비스 점검 +{{< get-service-checks-from-git "bind9" >}} + + +## 트러블슈팅 + +로그 파일을 모니터링하는 동안 **권한 거부** 오류가 표시되면 `dd-agent` 사용자에게 해당 파일 읽기 권한을 부여합니다. + + ```shell + sudo chown -R dd-agent:dd-agent /var/log/named/ + ``` + +추가로 도움이 필요하면 [Datadog 지원 팀][14]에 문의하세요. + + +[1]: https://www.isc.org/bind/ +[2]: https://docs.datadoghq.com/ko/agent/guide/integration-management/?tab=linux#install +[3]: https://docs.datadoghq.com/ko/integrations/bind9/#timezone-steps +[4]: https://downloads.isc.org/isc/bind9/9.18.29/doc/arm/html/reference.html#namedconf-statement-category +[5]: https://docs.datadoghq.com/ko/agent/guide/agent-configuration-files/#agent-configuration-directory +[6]: https://docs.datadoghq.com/ko/integrations/bind9/#metrics +[7]: https://github.com/DataDog/integrations-extras/blob/master/bind9/datadog_checks/bind9/data/conf.yaml.example +[8]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[9]: https://app.datadoghq.com/logs/pipelines +[10]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +[11]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information +[12]: https://github.com/DataDog/integrations-extras/blob/master/bind9/metadata.csv +[13]: https://github.com/DataDog/integrations-extras/blob/master/bind9/assets/service_checks.json +[14]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/integrations/cacti.md b/content/ko/integrations/cacti.md index ce87ce5fdd5c9..5f1a33dc667ac 100644 --- a/content/ko/integrations/cacti.md +++ b/content/ko/integrations/cacti.md @@ -16,8 +16,6 @@ assets: metadata_path: assets/service_checks.json source_type_id: 25 source_type_name: Cacti - logs: - source: cacti author: homepage: https://www.datadoghq.com name: Datadog @@ -26,6 +24,7 @@ author: categories: - developer tools - log collection +custom_kind: 통합 dependencies: - https://github.com/DataDog/integrations-core/blob/master/cacti/README.md display_on_public_website: true @@ -33,9 +32,8 @@ draft: false git_integration_title: cacti integration_id: cacti integration_title: Cacti -integration_version: 2.1.0 +integration_version: 4.0.0 is_public: true -custom_kind: integration manifest_version: 2.0.0 name: cacti public_title: Cacti @@ -46,8 +44,9 @@ tile: changelog: CHANGELOG.md classifier_tags: - Category::Developer Tools - - Category::로그 수집 + - Category::Log Collection - Supported OS::Linux + - Offering::Integration configuration: README.md#Setup description: Cacti RRD를 Datadog에 전달하여 더 많은 알림과 그래프화를 이용하세요. media: [] @@ -97,7 +96,7 @@ sudo yum install rrdtool-devel sudo -u dd-agent /opt/datadog-agent/embedded/bin/pip install rrdtool ``` -### 설정 +### 구성 #### Datadog 사용자 생성 @@ -170,13 +169,13 @@ sudo -u dd-agent /opt/datadog-agent/embedded/bin/pip install rrdtool rrd_path: "" ``` -2. [Restart the Agent][3]. +2. [에이전트를 재시작][3]하세요. ### 검증 -[에이전트 상태 하위 명령을 실행하고][4] 점검 섹션 아래에서 `cacti`를 찾으세요. +[에이전트 상태 하위 명령을 실행하고][4] Checks 섹션 아래에서 `cacti`를 찾으세요. -## 수집한 데이터 +## 수집한 데이터 ### 메트릭 {{< get-metrics-from-git "cacti" >}} @@ -184,7 +183,7 @@ sudo -u dd-agent /opt/datadog-agent/embedded/bin/pip install rrdtool ### 로그 수집 -1. Datadog 에이전트에서 로그 수집은 기본적으로 사용하지 않도록 설정되어 있습니다. `datadog.yaml` 파일에서 로그 수집을 사용하도록 설정합니다. +1. Datadog 에이전트에서 로그 수집은 기본적으로 사용하지 않도록 설정되어 있습니다. `datadog.yaml`파일에서 로그 수집을 사용하도록 설정합니다. ```yaml logs_enabled: true @@ -201,13 +200,13 @@ sudo -u dd-agent /opt/datadog-agent/embedded/bin/pip install rrdtool 환경에 따라 `path` 파라미터 값을 변경합니다. 사용 가능한 모든 설정 옵션은 [샘플 cacti.d/conf.yaml][2]을 참조하세요. -3. [Restart the Agent][3]. +3. [에이전트를 재시작][3]하세요. ### 이벤트 Cacti 점검은 이벤트를 포함하지 않습니다. -### 서비스 검사 +### 서비스 점검 Cacti 점검은 서비스 점검을 포함하지 않습니다. diff --git a/content/ko/integrations/cisco_aci.md b/content/ko/integrations/cisco_aci.md index 5000d2d79866d..09ce2932cf354 100644 --- a/content/ko/integrations/cisco_aci.md +++ b/content/ko/integrations/cisco_aci.md @@ -18,6 +18,10 @@ assets: metadata_path: assets/service_checks.json source_type_id: 210 source_type_name: Cisco ACI + monitors: + CPU usage is high for Cisco ACI device: assets/monitors/cpu_high.json + Health score of device is critical: assets/monitors/critical_health_score.json + Interface for a Cisco ACI device is down: assets/monitors/interface_down.json author: homepage: https://www.datadoghq.com name: Datadog @@ -25,6 +29,7 @@ author: support_email: help@datadoghq.com categories: - network +custom_kind: 통합 dependencies: - https://github.com/DataDog/integrations-core/blob/master/cisco_aci/README.md display_on_public_website: true @@ -32,9 +37,8 @@ draft: false git_integration_title: cisco_aci integration_id: cisco-aci integration_title: CiscoACI -integration_version: 2.7.0 +integration_version: 4.3.0 is_public: true -custom_kind: integration manifest_version: 2.0.0 name: cisco_aci public_title: CiscoACI @@ -46,10 +50,11 @@ supported_os: tile: changelog: CHANGELOG.md classifier_tags: - - Supported OS::Linux + - Supported OS:Linux - Supported OS::macOS - Supported OS::Windows - - Category::Network + - Category::네트워크 + - Offering::Integration configuration: README.md#Setup description: Cisco ACI 성능과 사용량을 추적하세요. media: [] @@ -68,21 +73,22 @@ Cisco ACI 통합을 통해 다음 작업을 실행할 수 있습니다. - 네트워크 상태 및 건강 추적 - ACI 용량 추적 - 스위치 및 컨트롤러 모니터링 +- [네트워크 디바이스 모니터링][1]을 통한 장치 모니터링 기능 ## 설정 ### 설치 -Cisco ACI 점검은 에이전트를 포함하므로 네트워크에서 서버에 [에이전트를 설치][1]하기만 하면 됩니다. +Cisco ACI 점검은 에이전트를 포함하므로 네트워크에서 서버에 [에이전트를 설치][2]하기만 하면 됩니다. ### 설정 {{< tabs >}} -{{% tab "Host" %}} +{{% tab "호스트" %}} #### 호스트 -호스트에서 실행 중인 에이전트에 대해 이 점검을 구성하려면: +호스트에서 실행 중인 에이전트에 이 점검을 구성하는 방법: 1. [에이전트의 설정 디렉터리][1] 루트에 있는 `conf.d/` 폴더에서 `cisco_aci.d/conf.yaml` 파일을 편집합니다. 사용 가능한 모든 설정 옵션을 보려면 [샘플 cisco_aci.d/conf.yaml][2]을 참조하세요. @@ -113,6 +119,11 @@ Cisco ACI 점검은 에이전트를 포함하므로 네트워크에서 서버에 # tenant: # - # - + + ## @param send_ndm_metadata - boolean - optional - default: false + ## Set to `true` to enable Network Device Monitoring metadata (for devices and interfaces) to be sent. + # + # send_ndm_metadata: false ``` *참고*: 통합에 대한 모든 테넌트를 지정하여 애플리케이션, EPG 등에서 메트릭을 수집합니다. @@ -123,16 +134,16 @@ Cisco ACI 점검은 에이전트를 포함하므로 네트워크에서 서버에 [2]: https://github.com/DataDog/integrations-core/blob/master/cisco_aci/datadog_checks/cisco_aci/data/conf.yaml.example [3]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#start-stop-and-restart-the-agent {{% /tab %}} -{{% tab "컨테이너화" %}} +{{% tab "컨테이너화된 환경" %}} #### 컨테이너화된 환경 -컨테이너화된 환경의 경우 [자동탐지 통합 템플릿][1]에 다음 파라미터를 적용하는 방법이 안내되어 있습니다. +컨테이너화된 환경의 경우 [자동탐지 통합 템플릿][1]에 아래 파라미터를 적용하는 방법이 안내되어 있습니다. | 파라미터 | 값 | | -------------------- | ---------------------------------------------------------------------- | | `` | `cisco_aci` | -| `` | 비워두거나 `{}` | +| `` | 비어 있음 또는 `{}` | | `` | `{"aci_url":"%%host%%", "username":"", "pwd": ""}` | [1]: https://docs.datadoghq.com/ko/agent/kubernetes/integrations/ @@ -141,9 +152,13 @@ Cisco ACI 점검은 에이전트를 포함하므로 네트워크에서 서버에 ### 검증 -[에이전트 `status` 상태 하위 명령을 실행하고][5] 점검 섹션에서 `cisco_aci`를 찾으세요. +[에이전트 `status` 상태 하위 명령을 실행하고][3] 점검 섹션에서 `cisco_aci`를 찾으세요. + +## 벤더 프로필 + +본 통합에 대한 지원 공급업체의 구체적인 프로필은 [네트워크 공급업체][4] 페이지에서 확인할 수 있습니다. -## 수집한 데이터 +## 수집한 데이터 ### 메트릭 {{< get-metrics-from-git "cisco_aci" >}} @@ -153,7 +168,7 @@ Cisco ACI 점검은 에이전트를 포함하므로 네트워크에서 서버에 Cisco ACI 점검은 이벤트로 테넌트 오류를 전송합니다. -### 서비스 검사 +### 서비스 점검 {{< get-service-checks-from-git "cisco_aci" >}} @@ -184,9 +199,11 @@ cURLing에서 받은 출력이 `datadog_checks/cisco_aci/aci_metrics.py`에서 Last Successful Execution Date : 2023-01-04 15:58:04 CST / 2023-01-04 21:58:04 UTC (1672869484000) ``` -도움이 필요하신가요? [Datadog 지원팀][3]에 문의하세요. +도움이 필요하신가요? [Datadog 지원팀][5]에 문의하세요. -[1]: https://app.datadoghq.com/account/settings/agent/latest -[2]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information -[3]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file +[1]: https://www.datadoghq.com/product/network-monitoring/network-device-monitoring/ +[2]: https://app.datadoghq.com/account/settings/agent/latest +[3]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information +[4]: https://docs.datadoghq.com/ko/network_monitoring/devices/supported_devices/ +[5]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/integrations/confluent_cloud.md b/content/ko/integrations/confluent_cloud.md index 4b459620de755..8016033137c38 100644 --- a/content/ko/integrations/confluent_cloud.md +++ b/content/ko/integrations/confluent_cloud.md @@ -21,16 +21,20 @@ assets: source_type_id: 609 source_type_name: Confluent Cloud monitors: - '[Confluent Cloud] Mirror topic lag is increasing': assets/monitors/cluster_link_lag_rate_change_percent.json - '[Confluent Cloud] Topic lag is Increasing': assets/monitors/consumer_lag_monitor_rate_change_percent.json + Connector incoming throughput dropped to 0: assets/monitors/connector_no_input_data.json + Connector outgoing throughput dropped to 0: assets/monitors/connector_no_output_data.json + Kafka Consumer lag is increasing: assets/monitors/consumer_lag_monitor_rate_change_percent.json + Mirror Kafka Consumer lag is increasing: assets/monitors/cluster_link_lag_rate_change_percent.json author: homepage: https://www.datadoghq.com name: Datadog sales_email: info@datadoghq.com support_email: help@datadoghq.com categories: +- 비용 관리 - 메트릭 - 메시지 큐 +custom_kind: 통합 dependencies: [] display_on_public_website: true draft: false @@ -39,24 +43,29 @@ integration_id: confluent-cloud integration_title: Confluent Cloud integration_version: '' is_public: true -custom_kind: 통합 manifest_version: 2.0.0 name: confluent_cloud public_title: Confluent Cloud -short_description: Confluent Cloud에서 다양한 Kafka 메트릭을 수집하세요. +short_description: Confluent Cloud에서 다양한 Kafka 메트릭 및 관련 비용 데이터를 수집합니다. supported_os: [] tile: changelog: CHANGELOG.md classifier_tags: - - 카테고리::메트릭 - - 카테고리::메시지 큐 + - Category::Cost Management + - Category::Metrics + - Category::Message Queues + - Offering::Integration + - Product::Data Streams Monitoring configuration: README.md#Setup - description: Confluent Cloud에서 다양한 Kafka 메트릭을 수집하세요. + description: Confluent Cloud에서 다양한 Kafka 메트릭 및 관련 비용 데이터를 수집합니다. media: - caption: Confluent Cloud 대시보드 개요 image_url: images/confluent_dashboard.png media_type: 이미지 overview: README.md#Overview + resources: + - resource_type: 블로그 + url: https://www.datadoghq.com/blog/confluent-cloud-monitoring-datadog/ support: README.md#Support title: Confluent Cloud --- @@ -76,24 +85,32 @@ Datadog의 즉시 사용 가능한 Confluent Cloud 대시보드는 활성 연결 권장 모니터를 사용하여 토픽 랙(topic lag)이 너무 높아지면 팀에 알리거나 이러한 메트릭을 사용하여 직접 만들 수 있습니다. -스트리밍 데이터 파이프라인의 토폴로지를 시각화하거나 데이터 스트림 설정에서 로컬 병목 현상을 조사하는 것이 유용한 경우 [Data Streams Monitoring][1]을 참조하세요. - ## 설정 ### 설치 -[Datadog Confluent Cloud 통합 타일][2]을 사용하여 통합을 설치합니다. +[Datadog Confluent Cloud 통합 타일][1]을 사용하여 통합을 설치합니다. -### 구성 +### 설정 -1. 통합 타일에서 **Configuration** 탭으로 이동합니다. -2. **+ Add API Key**를 클릭하여 [Confluent Cloud API Key 및 API Secret](#api-key-and-secret)을 입력합니다. -3. **Save**를 클릭합니다. Datadog은 해당 크리덴셜과 연결된 계정을 검색합니다. -4. Confluent Cloud [Cluster ID](#cluster-id) 또는 [Connector ID](#connector-id)를 추가합니다. Datadog은 Confluent Cloud 메트릭을 크롤링하고 몇 분 내에 메트릭을 로드합니다. +1. Confluent Cloudd에서 **+ Add API Key**를 클릭하여 [Confluent Cloud API Key 및 API Secret](#api-key-and-secret)을 입력합니다. + - **클라우드 리소스 관리** API 키와 시크릿을 생성합니다. + - **Save**를 클릭합니다. Datadog은 해당 크리덴셜과 연결된 계정을 검색합니다. + - Datadog 통합 설정에서 **API 키 및 API 시크릿** 필드에 API 키와 시크릿을 추가합니다. +2. Confluent Cloud [Cluster ID](#cluster-id) 또는 [Connector ID](#connector-id)를 추가합니다. Datadog은 Confluent Cloud 메트릭을 크롤링하고 몇 분 내에 메트릭을 로드합니다. +3. 다음에 따라 Confluent Cloud(옵션)에 정의된 태그를 수집합니다. + - **Schema Registry** API 키 및 시크릿을 생성합니다. [Confluent Cloud의 스키마 관리][2]에 대해 자세히 알아보세요. + - **저장**을 클릭합니다. Datadog은 Confluent Cloud에 정의된 태그를 수집합니다. + - Datadog 통합 설정에서 **Schema Registry API 키 및 시크릿** 필드에 API 키와 시크릿을 추가합니다. +4. 클라우드 비용 관리(Cloud Cost Management)를 사용하고 비용 데이터 수집을 활성화한 경우 + - API 키에 [BillingAdmin 역할][3]이 활성화되어 있는지 확인합니다. + - 24시간 내에 [클라우드 비용 관리(Cloud Cost Management)][4]에서 확인할 수 있습니다. ([수집된 데이터][5]) + +설정 리소스(예: 클러스터 및 커넥터)에 대한 자세한 내용은 [Confluent Cloud 통합 설명서][6]를 참조하세요. #### API Key 및 Secret -Confluent Cloud API 키와 Secret을 생성하려면 [UI에서 새 서비스 계정에 MetricsViewer 역할 추가][3]를 참조하세요. +Confluent Cloud API 키와 Secret을 생성하려면 [UI에서 새 서비스 계정에 MetricsViewer 역할 추가][7]를 참조하세요. #### Cluster ID @@ -101,21 +118,21 @@ Confluent Cloud Cluster ID 찾는 방법: 1. Confluent Cloud에서 **Environment Overview**로 이동한 다음 모니터링하려는 클러스터를 선택합니다. 2. 왼쪽 탐색에서 **Cluster overview** > **Cluster settings**를 클릭합니다. -3. **Identification**에서 `lkc`로 시작하는 Cluster ID를 복사합니다. +3. **식별(Identification)**에서 `lkc`로 시작하는 Cluster ID를 복사합니다. #### Connector ID -Confluent Cloud Connector ID 찾는 방법: +다음에 따라 Confluent Cloud Connector ID를 찾습니다. 1. Confluent Cloud에서 **Environment Overview**로 이동한 다음 모니터링하려는 클러스터를 선택합니다. 2. 왼쪽 탐색에서 **Data integration** > **Connectors**를 클릭합니다. -3. **Connectors**에서 `lcc`로 시작하는 Connector ID를 복사합니다. +3. **커넥터(Connectors)**에서 `lcc`로 시작하는 Connector ID를 복사합니다. ## 대시보드 통합 구성 후 Kafka 클러스터 및 커넥터 메트릭에 대한 개요를 보려면 즉시 사용 가능한 Confluent Cloud 대시보드를 참조하세요. -기본적으로 Confluent Cloud에서 수집된 모든 메트릭이 표시됩니다. +기본적으로 Confluent Cloud에서 수집한 모든 메트릭이 표시됩니다. ## 수집한 데이터 @@ -133,17 +150,21 @@ Confluent Cloud 통합에는 서비스 점검이 포함되지 않습니다. ## 트러블슈팅 -도움이 필요하신가요? [Datadog 지원팀][5]에 문의하세요. +도움이 필요하신가요? [Datadog 지원팀][9]에 문의하세요. ## 참고 자료 -- [Terraform으로 Confluent 계정 생성 및 관리][6] -- [Terraform으로 Confluent 리소스 생성 및 관리][7] - -[1]: https://www.datadoghq.com/product/data-streams-monitoring/ -[2]: https://app.datadoghq.com/integrations/confluent-cloud -[3]: https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#add-the-metricsviewer-role-to-a-new-service-account-in-the-ui -[4]: https://github.com/DataDog/dogweb/blob/prod/integration/confluent_cloud/confluent_cloud_metadata.csv -[5]: https://docs.datadoghq.com/ko/help/ -[6]: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_confluent_account -[7]: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_confluent_resource \ No newline at end of file +- [Terraform으로 Confluent 계정 생성 및 관리][10] +- [Terraform으로 Confluent 리소스 생성 및 관리][11] + +[1]: https://app.datadoghq.com/integrations/confluent-cloud +[2]: https://docs.confluent.io/cloud/current/get-started/schema-registry.html#quick-start-for-schema-management-on-ccloud +[3]: https://docs.confluent.io/cloud/current/access-management/access-control/rbac/predefined-rbac-roles.html#billingadmin-role +[4]: https://app.datadoghq.com/cost +[5]: https://docs.datadoghq.com/ko/cloud_cost_management/saas_costs/?tab=confluentcloud#data-collected +[6]: https://docs.datadoghq.com/ko/integrations/confluent_cloud/ +[7]: https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#add-the-metricsviewer-role-to-a-new-service-account-in-the-ui +[8]: https://github.com/DataDog/dogweb/blob/prod/integration/confluent_cloud/confluent_cloud_metadata.csv +[9]: https://docs.datadoghq.com/ko/help/ +[10]: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_confluent_account +[11]: https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_confluent_resource \ No newline at end of file diff --git a/content/ko/integrations/embrace_mobile.md b/content/ko/integrations/embrace_mobile.md new file mode 100644 index 0000000000000..d99ab7c94d727 --- /dev/null +++ b/content/ko/integrations/embrace_mobile.md @@ -0,0 +1,116 @@ +--- +app_id: embrace-mobile +app_uuid: 86988058-9b89-45a8-b92f-5473a96e4a36 +assets: + dashboards: + Embrace Overview: assets/dashboards/embrace_mobile_overview.json + integration: + auto_install: true + configuration: {} + events: + creates_events: false + metrics: + check: + - embrace.session_total.five_minute + - embrace.session_total.hourly + - embrace.session_total.daily + - embrace.crash_total.five_minute + - embrace.crash_total.hourly + - embrace.crash_total.daily + - embrace.users_total.daily + metadata_path: metadata.csv + prefix: embrace. + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 25653134 + source_type_name: Embrace +author: + homepage: https://embrace.io + name: Embrace + support_email: support@embrace.io +categories: +- 문제 추적 +- 메트릭 +- 모바일 +- 네트워크 +custom_kind: integration +dependencies: +- https://github.com/DataDog/integrations-extras/blob/master/embrace_mobile/README.md +display_on_public_website: true +draft: false +git_integration_title: embrace_mobile +integration_id: embrace-mobile +integration_title: Embrace Mobile +integration_version: '' +is_public: true +manifest_version: 2.0.0 +name: embrace_mobile +public_title: Embrace Mobile +short_description: iOS, Android, React Native 및 Unity의 모바일 옵저버빌리티 +supported_os: +- 리눅스 +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - 카테고리::이슈 추적 + - 카테고리::메트릭 + - Category::Mobile + - Category::Network + - 제공::UI 확장 + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + configuration: README.md#Setup + description: iOS, Android, React Native 및 Unity의 모바일 옵저버빌리티 + media: + - caption: 위젯을 추가하여 Datadog에서 직접 Embrace 충돌 및 네트워킹 데이터를 모니터링하세요. + image_url: images/datadog_dashboard.jpg + media_type: image + - caption: 앱 및 세션 세부정보와 함께 영향을 받은 모든 사용자 세션의 모든 스택 트레이스에 액세스하여 충돌을 조사합니다. 자세한 내용을 + 보려면 Embrace의 전체 사용자 세션 재생으로 직접 이동하세요. + image_url: images/datadog_side_panel.jpg + media_type: image + - caption: Embrace의 사용자 세션 재생은 시간 기반 시각화로 모든 사용자 세션의 전체 기술 및 동작 세부 정보를 제공합니다. 문제를 + 수동으로 재현할 필요 없이 근본 원인을 즉시 식별합니다. + image_url: images/embrace_session.jpg + media_type: image + - caption: 타이밍, 결과 및 사용자 작업을 추적하여 주요 사용자 흐름을 최적화합니다. 느리거나 멈춘 경험에 불만을 품은 사용자가 이탈하는 + 지점을 빠르게 파악하고 문제를 해결하여 참여도와 매출을 높일 수 있습니다. + image_url: images/embrace_app_performance.jpg + media_type: image + - caption: 실시간 대시보드로 주요 메트릭을 모니터링하세요. 성능, 안정성, 참여도, 수익 창출 등을 쉽게 추적하여 팀이 관심 있는 데이터에 + 집중할 수 있습니다. + image_url: images/embrace_dashboard.jpg + media_type: image + overview: README.md#Overview + support: README.md#Support + title: Embrace Mobile +--- + + + + +## 개요 + +[Embrace][1]는 성능 최적화, 문제 우선순위 지정 및 해결, 모니터링(기능, 릴리스,커스텀 세그먼트)에 대해 모바일 팀이 최적의 사용자 경험을 제공할 수 있도록 지원하는 모바일 옵저버빌리티 및 데이터 플랫폼입니다. +Embrace의 핵심은 복잡한 모바일 데이터를 실행 가능한 데이터로 전환하는 것입니다. 모든 사용자 경험에 대한 포괄적인 세션 수준 데이터를 수집함으로써 강력한 인사이트를 제공하고 성장을 촉진합니다. + +앱 설치 후 Embrace는 주요 모바일 상태 메트릭을 추적하는 대시보드를 제공합니다. 모든 회귀의 경우 수동으로 재현할 필요 없이 영향을 받는 모든 사용자 세션의 전체 세부 정보를 조사할 수 있습니다. + +## 설정 + +1. 무료 평가판을 시작하고 [Embrace 문서][2]를 참고하세요. **Datadog에서 메트릭을 확인하기 전 먼저 이 문서의 지침을 따라야 합니다.** +1. Embrace 통합 설정을 완료한 후 Datadog으로 다시 이동하여 두 플랫폼을 모두 연결하세요. +1. 크리덴셜로 로그인하여 Embrace 계정을 인증하고 Datadog에 연결하세요. +1. Datadog에서 New Dashboard를 만듭니다. Embrace 위젯을 선택하여 충돌 또는 네트워킹 메트릭이 포함된 Embrace 데이터를 표시합니다. +1. Datadog의 Embrace에 대해 더 자세히 알아보려면 "Details"를 클릭하세요. + +## 지원 + +도움이 필요하신가요? [Datadog 지원팀][3]에 문의하세요. + +[1]: https://embrace.io +[2]: https://embrace.io/docs/ +[3]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/integrations/gunicorn.md b/content/ko/integrations/gunicorn.md index 4aa16f134708b..e7ece172fa600 100644 --- a/content/ko/integrations/gunicorn.md +++ b/content/ko/integrations/gunicorn.md @@ -41,7 +41,7 @@ draft: false git_integration_title: gunicorn integration_id: gunicorn integration_title: Gunicorn -integration_version: 2.7.0 +integration_version: 4.0.0 is_public: true manifest_version: 2.0.0 name: gunicorn diff --git a/content/ko/integrations/istio.md b/content/ko/integrations/istio.md new file mode 100644 index 0000000000000..72766268bbb28 --- /dev/null +++ b/content/ko/integrations/istio.md @@ -0,0 +1,396 @@ +--- +app_id: istio +app_uuid: de5b5443-5038-46cf-a052-0484348776d6 +assets: + dashboards: + Istio Overview: assets/dashboards/overview.json + Istio Overview 1.5: assets/dashboards/istio_1_5_overview.json + Istio Overview 1.5 (OpenMetrics): assets/dashboards/istio_1_5_openmetrics_overview.json + Istio base dashboard: assets/dashboards/istio_overview.json + integration: + auto_install: true + configuration: + spec: assets/configuration/spec.yaml + events: + creates_events: false + metrics: + check: + - istio.mixer.process.cpu_seconds_total + - istio.mesh.request.count + - istio.galley.endpoint_no_pod + metadata_path: metadata.csv + prefix: istio. + process_signatures: + - pilot-agent proxy router + - envoy envoy-rev0.json + service_checks: + metadata_path: assets/service_checks.json + source_type_id: 10017 + source_type_name: Istio + monitors: + Istio Proxy Requests Error Percentage: assets/monitors/request_error_rate.json + Istio xDS Push Error Rate: assets/monitors/xds_push_error_rate.json + Number of failed Istio sidecar injection is high: assets/monitors/failed_sidecar_injection.json + saved_views: + Istio Error Overview: assets/saved_views/istio_error_overview.json + Istio Overview: assets/saved_views/istio_overview.json + Istio Pilot Error Logs: assets/saved_views/istio_pilot_errors.json + Istio Pilot Logs: assets/saved_views/istio_pilot_logs.json + Istio Proxyv2 Error Logs: assets/saved_views/istio_proxyv2_errors.json + Istio Proxyv2 Logs: assets/saved_views/istio_proxyv2_logs.json +author: + homepage: https://www.datadoghq.com + name: Datadog + sales_email: info@datadoghq.com + support_email: help@datadoghq.com +categories: +- log collection +- network +- tracing +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-core/blob/master/istio/README.md +display_on_public_website: true +draft: false +git_integration_title: istio +integration_id: istio +integration_title: Istio +integration_version: 8.1.0 +is_public: true +manifest_version: 2.0.0 +name: istio +public_title: Istio +short_description: 성능 스키마 메트릭, 쿼리 처리량, 커스텀 메트릭등을 수집합니다. +supported_os: +- linux +- windows +- macos +tile: + changelog: CHANGELOG.md + classifier_tags: + - Category::로그 수집 + - Category::네트워크 + - Category::Tracing + - Supported OS::Linux + - Supported OS::Windows + - Supported OS::macOS + - Submitted Data Type::Metrics + - Submitted Data Type::Logs + - Submitted Data Type::Traces + - Offering::Integration + configuration: README.md#Setup + description: 성능 스키마 메트릭, 쿼리 처리량, 커스텀 메트릭등을 수집합니다. + media: [] + overview: README.md#Overview + resources: + - resource_type: 블로그 + url: https://www.datadoghq.com/blog/monitor-istio-with-datadog + - resource_type: 블로그 + url: https://www.datadoghq.com/blog/istio-metrics/ + - resource_type: 블로그 + url: https://www.datadoghq.com/blog/istio-datadog/ + support: README.md#Support + title: Istio +--- + + + + +## 개요 + +Datadog은 Istio 환경의 모든 부분을 모니터링하므로 다음과 같은 작업을 할 수 있습니다. +- [로그](#log-collection)로 Envoy와 Istio 컨트롤 플레인의 서비스 상태를 평가합니다. +- [요청, 대역폭, 리소스 소비 메트릭](#metrics)을 활용해 서비스 메시의 성능을 분석합니다. +- [클라우드 네트워크 모니터링][1]으로 메시를 통해 컨테이너, 포드, 서비스 간의 네트워크 통신을 매핑합니다. +- 메시를 통해 [애플리케이션 성능 모니터링(APM)][2]으로 트랜잭션하는 애플리케이션에 대한 분산 트레이스를 분석합니다. + +Datadog으로 Istio 환경을 모니터링하는 방법에 대해 자세히 알아보려면 [블로그 포스트 모니터링][3]을 참조하세요. + +## 설정 + +컨테이너화된 환경에서 통합 설정에 대한 일반 지침은 [쿠버네티스(Kubernetes)에서 자동탐지 통합 설정하기][4] 또는 [도커(Docker)에서 자동탐지 통합 설정하기][5]를 참조하세요. + +본 개방형메트릭 기반 통합은 _최신_ 모드(`use_openmetrics: true`) 및 _레거시_ 모드(`use_openmetrics: false`)로 구성되어 있습니다. 최신 기능을 모두 사용하려면 Datadog은 _최신_ 모드를 활성화할 것을 권장합니다. 자세한 정보를 확인하려면 [개방형메트릭 기반 통합을 위한 최신 및 레거시 버전 관리][6]를 참조하세요. + +Istio 메트릭을 수집하는 Datadog 인스턴스가 여러 개 존재하는 경우 모든 인스턴스에서 동일한 모드를 사용하고 있는지 확인하세요. 그렇지 않으면 Datadog 사이트에서 메트릭 데이터가 변동될 수도 있습니다. + +`[OpenMetrics V1]`, `[OpenMetrics V2]` 또는 `[OpenMetrics V1 and V2]`로 표시된 메트릭은 해당 Istio 통합 모드에서만 사용할 수 있습니다. `Istio v1.5+`로 표시된 메트릭은 Istio 버전 1.5 이상에서 수집됩니다. + +### 설치 + +Istio는 Datadog 에이전트에 포함되어 있습니다. Istio 서버 또는 클러스터에 [Datadog 에이전트를 설치][7]하여 Istio에 포인팅되도록 합니다. + +#### Envoy + +Istio의 Envoy 프록시를 모니터링하려면 [Envoy 통합][8]을 설정합니다. + +### 설정 + +#### 메트릭 수집 +Istio v1.5+를 모니터링하기 위한 Prometheus 형식의 메트릭용 [Istio 아키텍처][9]와 매칭되는 두 가지 핵심 구성 요소가 있습니다. + +- **데이터 플레인**: `istio-proxy` 사이드카 컨테이너 +- **컨트롤 플레인**: 프록시 관리 `istiod` 서비스 + +모두 `istio` 에이전트 점검으로 실행되지만 책임은 서로 다르며 별도로 설정됩니다. + +##### 데이터 플레인 설정 + +기본 [`istio.d/auto_conf.yaml`][10] 파일은 각 `istio-proxy` 사이드카 컨테이너에 대한 모니터링을 자동 설정합니다. 에이전트는 자동으로 감지되는 각 사이드카 컨테이너에 대한 점검을 초기화합니다. 본 설정은 각 사이드카 컨테이너가 노출하는 데이터에 대한 `istio.mesh.*` 메트릭의 보고를 활성화합니다. + +통합의 데이터 플레인 부분을 사용자 지정하려면 커스텀 Istio 설정 파일 `istio.yaml`을 생성합니다. [쿠버네티스(Kubernetes) 통합 설정][4] 또는 [도커(Docker)의 자동탐지로 통합 설정][5]을 참조하세요. + +본 파일에는 다음이 포함되어야 합니다. + +```yaml +ad_identifiers: + - proxyv2 + - proxyv2-rhel8 + +init_config: + +instances: + - use_openmetrics: true + send_histograms_buckets: false + istio_mesh_endpoint: http://%%host%%:15020/stats/prometheus + tag_by_endpoint: false +``` + +추가 설정으로 해당 파일을 사용자 지정합니다. 사용 가능한 모든 설정 옵션을 확인하려면 [istio.d/conf.yaml 샘플][11]을 참조하세요. + +##### 컨트롤 플레인 설정 +Istio 컨트롤 플레인을 모니터링하고 `mixer`, `galley`, `pilot`, `citadel` 메트릭을 보고하려면 에이전트가 `istiod` 배포를 모니터링하도록 설정해야 합니다. Istio v1.5 이상에서는 `istio-system` 네임스페이스에서 `istiod` 배포에 다음 포드 어노테이션을 적용합니다. + +{{< tabs >}} +{{% tab "Annotations v1" %}} + +```yaml +ad.datadoghq.com/discovery.checks: | + { + "istio": { + "instances": [ + { + "istiod_endpoint": "http://%%host%%:15014/metrics", + "use_openmetrics": "true" + } + ] + } + } +``` + +{{% /tab %}} +{{% tab "Annotations v2" %}} + +**참고**: 주석 v2는 에이전트 v7.36 이상에서 지원됩니다. + +```yaml +ad.datadoghq.com/.checks: | + { + "Istio": { + "istiod_endpoint": "http://%%host%%:15014/metrics", + "use_openmetrics": "true" + } + } +``` + +{{% /tab %}} +{{< /tabs >}} + + + +본 어노테이션은 컨테이너 `discovery`를 지정하여 이 포드의 Istio 컨테이너의 기본 컨테이너 이름과 매칭합니다. 지정합니다. 만약 다른 경우 해당 어노테이션 `ad.datadoghq.com/.checks`을 Istio 컨테이너의 이름(`.spec.containers[i].name`)으로 교체합니다. + +해당 어노테이션을 적용하는 방식은 사용하는 [Istio 배포 전략(Istioctl, Helm, 오퍼레이터)][12]에 따라 달라집니다. 해당 포드 어노테이션을 적용하는 적합한 방법을 확인하려면 Istio 문서를 참조합니다. 사용 가능한 모든 설정 옵션은 [istio.d/conf.yaml 샘플][11]을 참조합니다. + +#### Datadog 에이전트 포드에 대한 사이드카 삽입 비활성화 + +[컨테이너에 Datadog 에이전트]를 설치하는 경우[13], Datadog은 먼저 Istio의 사이드카 삽입을 비활성화할 것을 권장합니다. + +_Istio 버전 >= 1.10:_ + +`datadog-agent` DaemonSet에 `sidecar.istio.io/inject: "false"` **라벨**을 추가합니다. + +```yaml +# (...) +spec: + template: + metadata: + labels: + sidecar.istio.io/inject: "false" + # (...) +``` + +`kubectl patch` 명령으로도 해당 작업을 수행할 수 있습니다. + +```shell +kubectl patch daemonset datadog-agent -p '{"spec":{"template":{"metadata":{"labels":{"sidecar.istio.io/inject":"false"}}}}}' +``` + +_Istio 버전 <= 1.9:_ + +`datadog-agent` DaemonSet에 `sidecar.istio.io/inject: "false"` **어노테이션**을 추가합니다. + +```yaml +# (...) +spec: + template: + metadata: + annotations: + sidecar.istio.io/inject: "false" + # (...) +``` + +`kubectl patch` 명령어를 사용합니다. + +```shell +kubectl patch daemonset datadog-agent -p '{"spec":{"template":{"metadata":{"annotations":{"sidecar.istio.io/inject":"false"}}}}}' +``` + +#### 로그 수집 + +_에이전트 버전 > 6.0에서 사용 가능_ + +먼저 Datadog 에이전트를 활성화하여 쿠버네티스(Kubernetes)에서 로그 수집을 실행합니다. [쿠버네티스(Kubernetes) 로그 수집][14]을 참조하세요. + +#### Istio 로그 + +컨트롤 플레인(`istiod`)에서 Istio 로그를 수집하려면 `istio-system` 네임스페이스에서 다음 배포용 포드 어노테이션 `istiod`을 적용합니다. + +```yaml +ad.datadoghq.com/discovery.logs: | + [ + { + "source": "istio", + "service": "" + } + ] +``` + +본 어노테이션은 컨테이너 `discovery`를 지정하여 이 포드의 Istio 컨테이너의 기본 컨테이너 이름과 매칭합니다. 만약 다른 경우 해당 어노테이션 `ad.datadoghq.com/.logs`을 Istio 컨테이너의 이름(`.spec.containers[i].name`)으로 교체합니다. + +``을 원하는 Istio 서비스 이름으로 변경합니다. + +#### Envoy 액세스 로그 + +Envoy를 수집하려면 데이터 플레인(`istio-proxy`)에서 로그에 액세스합니다. + +1. [Istio에서 Envoy 액세스 로깅][15] 활성화하기 +2. `istio-proxy` 컨테이너가 삽입된 포드에 다음 어노테이션을 적용합니다. + +```yaml +ad.datadoghq.com/istio-proxy.logs: | + [ + { + "source": "envoy", + "service": "" + } + ] +``` + +본 어노테이션은 컨테이너 `istio-proxy`를 지정하여 삽입된 Istio 사이드카 컨테이너의 기본 컨테이너 이름과 매칭합니다. 만약 다른 경우 해당 어노테이션 `ad.datadoghq.com/.logs`을 Istio 사이드카 컨테이너의 이름(`.spec.containers[i].name`)으로 교체합니다. + +``을 원하는 Istio 프록시 서비스 이름으로 변경합니다. + +### 검증 + +[에이전트의 `info` 하위 명령을 실행][16]하고 점검 섹션에서 `istio`을 찾습니다. + +## 수집한 데이터 + +### 메트릭 +{{< get-metrics-from-git "istio" >}} + + +### 이벤트 + +Istio 점검은 이벤트를 포함하지 않습니다. + +### 서비스 점검 +{{< get-service-checks-from-git "istio" >}} + + +## 트러블슈팅 + +### 잘못된 청크 길이 오류 +Istio 통합(Istio 통합 버전 `3.13.0` 또는 이전 버전)의 레거시 모드에서 다음 오류가 발생한 경우 + +```python + Error: ("Connection broken: InvalidChunkLength(got length b'', 0 bytes read)", + InvalidChunkLength(got length b'', 0 bytes read)) +``` + +해당 오류를 해결하려면 개방형메트릭 기반 Istio 통합의 최신 모드를 사용합니다. + +최소 에이전트 `7.31.0` 및 파이썬(Python) 3로 업그레이드해야 합니다. [설정](#configuration) 섹션을 참조하여 개방형메트릭을 활성화합니다. + +### Istio 배포에서 일반 개방형메트릭 통합 사용 + +Istio 프록시 사이드카 삽입이 활성화된 경우, `istio_mesh_endpoint`와 동일한 메트릭 엔드포인트를 사용한 [개방형메트릭 통합][17]을 통해 다른 Prometheus 메트릭을 모니터링하면 커스텀 메트릭 사용량이 증가하고 메트릭이 중복 수집될 수 있습니다. + +개방형메트릭 설정이 메트릭을 과다 수집하지 않도록 하려면 다음 작업 중 하나를 수행합니다. + +1. `metrics` 설정 옵션에서 특정 메트릭 매칭을 사용합니다. +2. `metrics`에 와일드카드 `*` 값을 사용하는 경우, 다음 개방형메트릭 통합 옵션을 사용하여 Istio 및 Envoy 통합이 이미 지원하는 메트릭을 제외합니다. + +#### 일반 메트릭 수집이 포함된 개방형메트릭 최신 모드 설정 + +설정에서 Istio 및 Envoy 메트릭을 제외해야 높은 커스텀 메트릭 요금이 청구되지 않습니다. `openmetrics_endpoint`이 활성화된 경우 `exclude_metrics`을 사용합니다. + +```yaml +## Every instance is scheduled independent of the others. +# +instances: + - openmetrics_endpoint: + metrics: + - '.*' + exclude_metrics: + - istio_* + - envoy_* + +``` + +#### 일반 메트릭 수집이 포함된 개방형메트릭 레거시 모드 설정 + +설정에서 Istio 및 Envoy 메트릭을 제외해야 높은 커스텀 메트릭 요금이 청구되지 않습니다. `prometheus_url`이 활성화된 경우 `ignore_metrics`을 사용합니다. + +```yaml +instances: + - prometheus_url: + metrics: + - '*' + ignore_metrics: + - istio_* + - envoy_* +``` + +도움이 필요하신가요? [Datadog 지원팀][18]에 문의해 주세요. + +## 참고 자료 + +기타 유용한 문서, 링크 및 기사: + +- [Datadog으로 Istio 서비스 메시 모니터링하기][19] +- [Datadog이 주요 메트릭을 수집하여 Istio를 모니터링하는 방법][20] +- [Datadog으로 Istio를 모니터링하는 방법][3] + + +[1]: https://www.datadoghq.com/blog/monitor-istio-with-npm/ +[2]: https://docs.datadoghq.com/ko/tracing/setup_overview/proxy_setup/?tab=istio +[3]: https://www.datadoghq.com/blog/istio-datadog/ +[4]: https://docs.datadoghq.com/ko/containers/kubernetes/integrations/ +[5]: https://docs.datadoghq.com/ko/containers/docker/integrations/ +[6]: https://docs.datadoghq.com/ko/integrations/guide/versions-for-openmetrics-based-integrations +[7]: https://app.datadoghq.com/account/settings/agent/latest +[8]: https://github.com/DataDog/integrations-core/tree/master/envoy#istio +[9]: https://istio.io/latest/docs/ops/deployment/architecture/ +[10]: https://github.com/DataDog/integrations-core/blob/master/istio/datadog_checks/istio/data/auto_conf.yaml +[11]: https://github.com/DataDog/integrations-core/blob/master/istio/datadog_checks/istio/data/conf.yaml.example +[12]: https://istio.io/latest/docs/setup/install/ +[13]: https://docs.datadoghq.com/ko/agent/kubernetes/ +[14]: https://docs.datadoghq.com/ko/agent/kubernetes/log/ +[15]: https://istio.io/latest/docs/tasks/observability/logs/access-log/ +[16]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information +[17]: https://docs.datadoghq.com/ko/integrations/openmetrics/ +[18]: https://docs.datadoghq.com/ko/help/ +[19]: https://www.datadoghq.com/blog/monitor-istio-with-datadog +[20]: https://www.datadoghq.com/blog/istio-metrics/ \ No newline at end of file diff --git a/content/ko/integrations/jira.md b/content/ko/integrations/jira.md new file mode 100644 index 0000000000000..9a2204c14893e --- /dev/null +++ b/content/ko/integrations/jira.md @@ -0,0 +1,161 @@ +--- +categories: +- collaboration +- developer tools +- issue tracking +- notifications +custom_kind: 통합 +dependencies: [] +description: 본 통합에서는 Datadog에서 트리거된 알림에서 티켓을 생성하고, 새로운 정보가 생성되면 기존 티켓을 업데이트할 수 있습니다. + 또한 Datadog 내에서 Jira 티켓을 이벤트로 생성하여 모든 메트릭과 오버레이하여 확인할 수 있습니다. +doc_link: https://docs.datadoghq.com/integrations/jira/ +draft: false +git_integration_title: jira +has_logo: true +integration_id: '' +integration_title: Jira +integration_version: '' +is_public: true +manifest_version: '1.0' +name: jira +public_title: Datadog-Jira 통합 +short_description: ' Datadog 알림을 자동 생성하고 나중에 Jira 티켓을 업데이트하도록 설정합니다.' +version: '1.0' +--- + + +## 개요 + +Jira는 소프트웨어 팀을 위한 이슈 및 프로젝트 추적 시스템입니다. Datadog Jira 통합을 사용하면 Datadog에서 트리거된 알림, 인시던트 및 케이스에서 이슈를 생성하고 Jira에서 Datadog 이벤트로 생성한 이슈를 확인할 수 있습니다. + +## 설정 + +### Jira에서 애플리케이션 링크 생성하기 + +#### Jira Cloud 지침 +1. Jira로 이동합니다. +1. 오른쪽 코너의 톱니바퀴 아이콘을 클릭하고 **제품**을 선택합니다. +1. **통합**의 왼쪽 메뉴에서 **애플리케이션 링크**를 클릭한 후 **링크 생성하기**를 클릭합니다. +1. **애플리케이션 다이렉트 링크** 확인란을 선택하고 `https://{{< region-param key="dd_full_site" code="true" >}}` URL을 입력한 후 **계속하기**를 클릭합니다. +1. "입력한 URL에서 응답이 수신되지 않았습니다" 경고를 무시하고 **계속하기**를 클릭합니다. +1. 다음 양식을 작성하고 **계속하기**를 클릭합니다. + + | 필드 | 입력값 | + |-----------------------|--------------------------------| + | 애플리케이션 이름 | `{Enter a name (e.g. Datadog)}`| + | 애플리케이션 유형 | 일반 애플리케이션 | + | 서비스 공급자 이름 | `{leave blank}` | + | 컨슈머 키 | `{leave blank}` | + | 공유 기밀정보 | `{leave blank}` | + | 토큰 URL 요청 | `{leave blank}` | + | 액세스 토큰 URL | `{leave blank}` | + | URL 인증 | `{leave blank}` | + | 수신 링크 생성 | 박스 체크 표시 | + +1. 다음 양식을 작성하고 **계속**을 클릭합니다. [Datadog Jira 통합 타일][1]에서 공개 키를 찾으려면 **계정 추가**를 클릭합니다. + + | 필드 | 입력값 | + |---------------|------------------------------------------------------------| + | 컨슈머 키 | `{Enter a key name (e.g. datadog)}` | + | 컨슈머 이름 | Datadog | + | 공개 키 | `{Enter the public key from Datadog Jira integration tile}`| + +#### Jira Data Center 지침 +1. Jira로 이동합니다. +1. 오른쪽 코너의 톱니바퀴 아이콘을 클릭하고 **어플리케이션**을 선택합니다. +1. **통합**의 왼쪽 메뉴에서 **애플리케이션 링크**를 클릭한 후 **링크 생성하기**를 클릭합니다. +1. **링크 생성하기** 대화상자에서 **Atlassian 제품**을 선택하고 애플리케이션 URL `https://{{< region-param key="dd_full_site" code="true" >}}`을 입력합니다. **계속**을 클릭합니다. +1. "입력한 URL에서 응답이 수신되지 않았습니다" 경고를 무시하고 **계속하기**를 클릭합니다. +1. 위의 Jira Cloud 지침에 표시된 것과 동일한 파라미터 을 사용하여 양식을 작성합니다. + +### Jira 인스턴스에 Datadog 연결 + +
+Datadog은 좀 더 일관된 최적의 결과를 위해 통합 전용(비개인용) Jira 서비스 계정을 사용할 것을 적극 권장합니다. +
+ +1. [Datadog Jira 통합 타일][1]로 이동하여 **계정 추가**를 클릭합니다. +2. Jira 인스턴스의 URL과 기존에 생성한 애플리케이션 링크의 컨슈머 키를 입력합니다. +3. **연결**을 클릭하고 Jira 인증 페이지의 지침을 따릅니다. **연결**을 누르기 전에 이 계정에 로그인하세요. +**참고**: Datadog Jira 통합은 온-프레미스/Jira Data Center 인스턴스에 연결할 수 있습니다. 그러나 해당 인스턴스 중의 상당수는 IP 범위를 블랙리스트에 올립니다. 본 통합이 작동하려면 다음 IP 필터링 지침을 따르세요. + +### IP 필터링 + +Jira 인스턴스가 IP 주소로 트래픽을 필터링하는 경우 **웹훅(Webhooks)**의 연결을 허용해야 합니다. +통합이 제대로 작동하려면 Datadog에 속한 IP 접두어가 필요합니다. 고객님의 지역의 **웹훅(Webhooks)** IP 접두어 목록에 관해서는 [Datadog IP 범위][2]를 참조하세요. + +### 추가 설정 + +케이스 관리에서 양방향 동기화로 Jira 이슈 자동 생성을 설정하려면 [Jira 웹훅(webhook) 설정](#configure-a-jira-webhook) 및 [사례 관리][3] 설명서 지침을 참조하세요. + +Datadog 모니터링 알림에서 Jira 이슈를 생성하려면 [이슈 템플릿 설정](#configure-an-issue-template)을 참조하세요. + +## Jira 웹훅(webhook) 설정하기 + +웹훅(webhook)을 설정하면 케이스 관리에서 생성한 케이스가 Jira에서 자동으로 이슈를 생성하고 두 리소스를 동기화하도록 할 수 있습니다. + +Jira 웹훅(webhook)을 생성하려면 다음을 따릅니다. +1. Jira에서 오른쪽 상단의 **톱니바퀴** 아이콘을 클릭하고 **시스템**을 선택합니다. +1. 왼쪽 메뉴의 *고급*에서 **웹훅(webhook)**을 클릭합니다. +1. 오른쪽 모서리의 **웹훅(webhook) 생성하기**를 클릭합니다. +1. 웹훅(webhook) 이름으로 `Datadog Webhook`을 입력합니다. +1. 상태를 **활성화**로 둡니다. +1. [Datadog Jira 통합 타일][4]로 이동합니다. +1. 웹훅(Webhooks) 섹션에서 웹훅 URL을 복사합니다. +1. Jira로 다시 돌아가 *URL*에 웹훅(Webhook) URL을 붙여넣습니다. +1. 다음 이슈 관련 이벤트를 활성화합니다. 이슈 이벤트의 하위 집합만 전송하려는 경우 JQL을 사용하여 다음을 필터링합니다. 본 예시에서는 프로젝트 AB 및 CD에 대해서만 필터링합니다. + {{< img src="integrations/jira/jira_issue_events.png" alt="Jira 이슈 이벤트" style="width:80%;">}} +1. `deleted` 프로젝트 관련 이벤트를 활성화합니다. +1. 나머지 항목은 선택하지 않습니다. +1. 페이지 하단의 **생성하기기** 버튼을 클릭합니다. + +## 이슈 템플릿 설정하기 + +이슈 템플릿은 Jira에서 Datadog 알림 이벤트로부터 이슈를 생성하는 방법을 정의합니다. + +이슈 템플릿을 생성하려면 다음에 따릅니다. + +1. Datadog에서 **Jira에 연결하여 알림 모니터링** 섹션의 **새 이슈 템플릿**을 클릭합니다. +2. 이슈 템플릿의 이름을 입력합니다. 이름 앞에 `jira-`가 붙으면 모니터링에서 알림을 보낼 때 사용할 수 있는 핸들(예: `jira-my-issue-template-name`)이 됩니다. +3. Jira 계정을 선택합니다. +4. 프로젝트와 이슈 유형(예: **스토리**, **에픽**, **작업** 또는 **버그**)을 선택합니다. +5. 설정 가능한 필드의 목록이 표시됩니다. 원하는 필드에 값을 입력하고 **저장**을 클릭합니다. + +### 이슈 필드 설정하기 + +이슈 템플릿 필드는 Jira에서 이슈를 생성할 때 포함되는 데이터를 정의합니다. 예를 들어, 템플릿을 설정하여 특정 우선 순위 또는 기본 할당자가 있는 이슈를 생성합니다. + +알림 이벤트의 데이터를 사용하여 `${EVENT_TITLE}` 등의 템플릿 변수를 사용하여 이슈 필드의 값을 채울 수 있습니다. 사용 가능한 변수의 목록을 확인하려면 [Datadog 웹훅(Webhook) 통합][5]을 참조하세요. + +## 사용법 + +#### Datadog 알림에서 이슈 자동 생성하기 + +Datadog 알림 이벤트에서 Jira 이슈를 생성하려면, **팀에 알리기** 또는 **상황 설명** 섹션에서 모니터링을 만들 때 `@jira-my-issue-template`과 같은 하나 이상의 이슈 템플릿의 알림 핸들을 입력합니다. + +이슈는 모니터링이 트리거되면 생성됩니다. 해당 모니터링이 해결될 때까지 모니터링은 신규 이슈를 생성하지 않습니다. + +## 수집한 데이터 + +### 메트릭 + +Jira 통합은 메트릭을 포함하지 않습니다. + +### 이벤트 + +생성된 모든 Jira 이슈는 Datadog 내에서 이벤트로 표시됩니다. + +### 서비스 점검 + +Jira 통합은 서비스 점검을 포함하지 않습니다. + +## 트러블슈팅 + +도움이 필요하신가요? [Datadog 지원팀][6]에 문의하세요. + +[1]: https://app.datadoghq.com/integrations/jira +[2]: https://docs.datadoghq.com/ko/api/latest/ip-ranges/ +[3]: https://docs.datadoghq.com/ko/service_management/case_management/settings/#jira +[4]: https://app.datadoghq.com/account/settings#integrations/jira +[5]: https://docs.datadoghq.com/ko/integrations/webhooks/ +[6]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/integrations/kafka.md b/content/ko/integrations/kafka.md new file mode 100644 index 0000000000000..8b475859d90e7 --- /dev/null +++ b/content/ko/integrations/kafka.md @@ -0,0 +1,403 @@ +--- +"app_id": "kafka" +"app_uuid": "39640d5e-54be-48ff-abf1-8871499e2fd3" +"assets": + "dashboards": + "kafka": "assets/dashboards/kafka_dashboard.json" + "integration": + "auto_install": true + "configuration": + "spec": "assets/configuration/spec.yaml" + "events": + "creates_events": false + "metrics": + "check": + - "kafka.net.bytes_out" + - "kafka.net.bytes_out.rate" + "metadata_path": "metadata.csv" + "prefix": "kafka." + "process_signatures": + - "java kafka.kafka" + "service_checks": + "metadata_path": "assets/service_checks.json" + "source_type_id": !!int "64" + "source_type_name": "Kafka" + "monitors": + "Partition is offline": "assets/monitors/kafka_offline_partition.json" + "Produce latency is high": "assets/monitors/broker_produce_latency.json" + "Produce request rate is high": "assets/monitors/kafka_high_producer_request_rate.json" + "saved_views": + "error_warning_status": "assets/saved_views/error_warning_status.json" + "kafka_patterns": "assets/saved_views/kafka_patterns.json" + "kafka_processes": "assets/saved_views/kafka_processes.json" + "logger_overview": "assets/saved_views/logger_overview.json" +"author": + "homepage": "https://www.datadoghq.com" + "name": "Datadog" + "sales_email": "info@datadoghq.com" + "support_email": "help@datadoghq.com" +"categories": +- "log collection" +- "message queues" +"custom_kind": "통합" +"dependencies": +- "https://github.com/DataDog/integrations-core/blob/master/kafka/README.md" +"display_on_public_website": true +"draft": false +"git_integration_title": "kafka" +"integration_id": "kafka" +"integration_title": "Kafka Broker" +"integration_version": "4.0.0" +"is_public": true +"manifest_version": "2.0.0" +"name": "kafka" +"public_title": "Kafka Broker" +"short_description": "생산자 및 소비자, 복제, 최대 지연 등에 대한 메트릭을 수집하세요." +"supported_os": +- "linux" +- "windows" +- "macos" +"tile": + "changelog": "CHANGELOG.md" + "classifier_tags": + - "Category::Log Collection" + - "Category::Message Queues" + - "Supported OS::Linux" + - "Supported OS::Windows" + - "Supported OS::macOS" + - "Submitted Data Type::Metrics" + - "Submitted Data Type::Logs" + - "Offering::Integration" + - "Product::데이터 스트림 모니터링" + "configuration": "README.md#Setup" + "description": "생산자 및 소비자, 복제, 최대 지연 등에 대한 메트릭을 수집하세요." + "media": [] + "overview": "README.md#Overview" + "resources": + - "resource_type": "blog" + "url": "https://www.datadoghq.com/blog/monitoring-kafka-performance-metrics" + - "resource_type": "blog" + "url": "https://www.datadoghq.com/blog/collecting-kafka-performance-metrics" + - "resource_type": "blog" + "url": "https://www.datadoghq.com/blog/monitor-kafka-with-datadog" + - "resource_type": "other" + "url": "https://www.datadoghq.com/knowledge-center/apache-kafka/" + "support": "README.md#Support" + "title": "Kafka Broker" +--- + + + + +![Kafka 대시보드][1] + +## 개요 + +Kafka 브로커 메트릭을 확인하여 Kafka 클러스터 상태와 성능을 실시간으로 전방위 모니터링하세요. 이 통합을 통해, Kafka 배포에서 메트릭과 로그를 수집하여 텔레메트리를 시각화하고 Kafka 스택 성능에 대한 알림을 받을 수 있습니다. + +**참고**: +- 이 점검은 인스턴트당 350개 메트릭으로 제한됩니다. 반환되는 메트릭의 수는 에이전트 상태 출력에 나와 있습니다. 아래 설정을 편집하여 관심 있는 메트릭을 지정할 수 있습니다. 수집하려는 메트릭을 커스터마이즈하는 방법에 대한 자세한 지침은 [JMX 점검 설명서][2]를 참조하세요. +- 이 통합이 첨부된 샘플 설정은 Kafka >= 0.8.2에서만 작동합니다. +그 이전 버전을 실행 중인 경우 [에이전트 v5.2.x 릴리스 샘플 파일][3]을 참조하세요. +- Kafka 소비자 메트릭을 수집하려면 [kafka_consumer 점검][4]을 참조하세요. + +## 설정 + +### 설치 + +에이전트의 Kafka 점검에는 [Datadog 에이전트][5] 패키지가 포함되어 있으므로 Kafka 노드에 추가로 설치할 필요가 없습니다. + +점검은 [JMXFetch][6]를 사용해 JMX에서 메트릭을 수집합니다. 에이전트에서 JMXFetch를 실행하려면 각 kafka 노드에 JVM이 필요합니다. 이를 위해 Kafka가 사용하는 것과 동일한 JVM을 사용할 수 있습니다. + +**참고**: Kafka 점검은 Apache Kafka(Amazon MSK) 관리형 스트리밍과 함께 사용할 수 없습니다. 대신 [Amazon MSK 통합][7]을 사용하세요. + +### 설정 + +{{< tabs >}} +{{% tab "Host" %}} + +#### 호스트 + +호스트에서 실행 중인 에이전트에 이 점검을 구성하는 방법: + +##### 메트릭 수집 + +1. [에이전트 설정 디렉터리][1] 루트에 있는 `conf.d/` 폴더에서 `kafka.d/conf.yaml` 파일을 편집합니다. Kafka 빈 이름은 실행 중인 실제 Kafka 버전에 따라 달라집니다. 에이전트와 함께 제공되는 [예시 설정 파일][2]이 가장 최신 설정이므로 이 파일을 기본으로 사용합니다. **참고**: 예시의 에이전트 버전은 설치한 것보다 더 최신 에이전트 버전일 수 있습니다. + +2. [에이전트를 다시 시작합니다][3]. + +##### 로그 수집 + +_에이전트 버전 > 6.0에서 사용 가능_ + +1. Kafka는 기본적으로 `log4j` 로거를 사용합니다. 파일에 로깅을 활성화하고 형식을 커스터마이즈하려면 `log4j.properties` 파일을 편집하세요. + + ```text + # Set root logger level to INFO and its only appender to R + log4j.rootLogger=INFO, R + log4j.appender.R.File=/var/log/kafka/server.log + log4j.appender.R.layout=org.apache.log4j.PatternLayout + log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + ``` + +2. 기본적으로 Datadog 통합 파이프라인은 다음과 같은 변환 패턴을 지원합니다. + + ```text + %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + %d [%t] %-5p %c - %m%n + %r [%t] %p %c %x - %m%n + [%d] %p %m (%c)%n + ``` + + 다른 형식을 사용하는 경우 [통합 파이프라인][4]을 복제하여 편집합니다. + +3. 로그 수집은 Datadog 에이전트에서 기본적으로 비활성화되어 있습니다. `datadog.yaml` 파일에서 활성화합니다. + + ```yaml + logs_enabled: true + ``` + +4. `kafka.d/conf.yaml` 파일에 다음 설정 블록을 추가합니다. 환경에 따라 `path` 및 `service` 파라미터 값을 변경합니다. 사용 가능한 모든 설정 옵션은 [kafka.d/conf.yaml 샘플][2]을 참조하세요. + + ```yaml + logs: + - type: file + path: /var/log/kafka/server.log + source: kafka + service: myapp + #To handle multi line that starts with yyyy-mm-dd use the following pattern + #log_processing_rules: + # - type: multi_line + # name: log_start_with_date + # pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01]) + ``` + +5. [에이전트를 다시 시작합니다][3]. + +[1]: https://docs.datadoghq.com/agent/guide/agent-configuration-files/#agent-configuration-directory +[2]: https://github.com/DataDog/integrations-core/blob/master/kafka/datadog_checks/kafka/data/conf.yaml.example +[3]: https://docs.datadoghq.com/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[4]: https://docs.datadoghq.com/logs/processing/#integration-pipelines +{{% /tab %}} +{{% tab "Containerized" %}} + +#### 컨테이너화된 환경 + +##### 메트릭 수집 + +컨테이너화된 환경의 경우 [JMX를 사용한 자동탐지][1] 가이드를 참조하세요. + +##### 로그 수집 + +_에이전트 버전 > 6.0에서 사용 가능_ + +Datadog 에이전트에서 로그 수집은 기본값으로 비활성화되어 있습니다. 이를 활성화하려면 [쿠버네티스(Kubernetes) 로그 수집][2]을 참조하세요. + +| 파라미터 | 값 | +| -------------- | -------------------------------------------------- | +| `` | `{"source": "kafka", "service": ""}` | + +[1]: https://docs.datadoghq.com/agent/guide/autodiscovery-with-jmx/?tab=containerizedagent +[2]: https://docs.datadoghq.com/agent/kubernetes/log/ +{{% /tab %}} +{{< /tabs >}} + +### 검증 + +[에이전트 상태 하위 명령어][8]를 실행하고 **JMXFetch** 섹션에서 `kafka`를 찾습니다. + +```text +======== +JMXFetch +======== + Initialized checks + ================== + kafka + instance_name : kafka-localhost-9999 + message : + metric_count : 46 + service_check_count : 0 + status : OK +``` + +## 수집한 데이터 + +### 메트릭 +{{< get-metrics-from-git "kafka" >}} + + +### 이벤트 + +Kafka 점검은 이벤트를 포함하지 않습니다. + +### 서비스 점검 +{{< get-service-checks-from-git "kafka" >}} + + +## 트러블슈팅 + +- [Kafka 트러블슈팅 및 심층 분석][9] +- [에이전트 RMIServer 스텁 검색 실패][10] + +## 참고 자료 + +- [Kafka 성능 메트릭 모니터링][11] +- [Kafka 성능 메트릭 수집][12] +- [Datadog를 사용한 Kafka 모니터링][13] +- [기술 문서 센터의 Kafka 개요][14] + + + + + +## Kafka 소비자 통합 + +![Kafka 대시보드][15] + +## 개요 + +이 에이전트 통합은 Kafka 소비자로부터 메시지 오프셋 메트릭을 수집합니다. 이 점검은 Kafka 브로커로부터 하이워터 오프셋을, Kafka(또는 기존 고객의 경우 Zookeeper)에 저장된 소비자 오프셋을 전달한 다음 소비자 지연을 계산합니다(브로커 오프셋 및 소비자 오프셋 간 차이). + +**참고:** +- 이 통합은 브로커 오프셋보다 먼저 소비자 오프셋을 점검합니다. 최악의 시나리오에서 소비자 지연이 약간은 과장될 수 있습니다. 반대 순서로 오프셋을 점검하면 마이너스 값이 나올 정도로 소비자 지연이 정확하지 않을 수 있습니다. 이는 최악의 시나리오가 보통 메시지 표시를 건너뛰고 있다는 신호입니다 +- Kafka 브로커 또는 자바 기반 소비자/생산자로부터 JMX 메트릭을 수집하려면 [Kafka 브로커 통합][16]을 참조하세요. + + +## 설정 + +### 설치 + +에이전트의 Kafka 소비자 점검은 [Datadog 에이전트][6] 패키지에 포함되어 있습니다. Kafka 노드에 별도의 설치가 필요하지 않습니다. + +### 설정 + + + + +#### 호스트 + +Kafka 소비자를 실행하는 호스트에서 실행되는 에이전트 점검을 설정하려면 + +##### 메트릭 수집 + +1. [에이전트 설정 디렉토리][17] 루트의 `conf.d/` 폴더에 있는 `kafka_consumer.d/conf.yaml` 파일을 편집합니다. 사용 가능한 모든 설정 옵션은 [kafka_consumer.d/conf.yaml 샘플][18]을 참조하세요. + +2. [에이전트를 재시작합니다.][19] + +##### 로그 수집 + +이 점검은 추가 로그를 수집하지 않습니다. Kafka 브로커에서 로그를 수집하려면 [Kafka 로그 수집 지침][20]을 참조하세요. + + + + +#### 컨테이너화된 환경 + +컨테이너화된 환경의 경우 [자동탐지 통합 템플릿][21]에 아래 파라미터를 적용하는 방법이 안내되어 있습니다. + +##### 메트릭 수집 + +| 파라미터 | 값 | +| -------------------- | ------------------------------------ | +| `` | `kafka_consumer` | +| `` | 비어 있음 또는 `{}` | +| `` | `{"kafka_connect_str": }`
예: `{"kafka_connect_str": "server:9092"}` | + +##### 로그 수집 + +이 점검은 추가 로그를 수집하지 않습니다. Kafka 브로커에서 로그를 수집하려면 [Kafka 로그 수집 지침][20]을 참조하세요. + + + + +### 검증 + +[에이전트 상태 하위 명령을 실행][8]하고 점검 섹션에서 `kafka_consumer`를 찾습니다. + +## 수집한 데이터 + +### 메트릭 +{{< get-metrics-from-git "kafka_consumer" >}} + + +### 이벤트 + +**소비자_지연**:
+ Datadog 에이전트는 `consumer_lag` 메트릭 값이 0 이하로 내려가면 `topic`, `partition` 및 `consumer_group`과 함께 태깅하여 이벤트를 내보냅니다. + +### 서비스 점검 + +Kafka 소비자 점검에는 서비스 점검이 포함되어 있지 않습니다. + +## 트러블슈팅 + +- [Kafka 트러블슈팅 및 심층 분석][9] +- [에이전트 RMIServer 스텁 검색 실패][10] + +**Kerberos GSSAPI 인증** + +Kafka 클러스터 의 케베로스(Kerberos) 설정에 따라 다음을 설정해야 할 수도 있습니다. + +* Datadog 에이전트가 Kafka 브로커에 연결하도록 설정된 Kafka 클라이언트입니다. Kafka 클라이언트는 케베로스 주체로 추가하고 케베로스 키탭으로 추가해야 합니다. Kafka 클리이언트는 또한 유효한 케베로스 티켓을 보유해야 합니다. +* Kafka 브로커에 대한 보안 연결을 인증하는 TLS 인증서입니다. + * JKS 키 저장소를 사용하는 경우, 키 저장소에서 인증서를 내보내야 하며 파일 경로는 해당 `tls_cert` 및/또는 `tls_ca_cert` 옵션으로 설정해야 합니다. + * 인증서를 인증하는 데 개인 키가 필요한 경우, `tls_private_key` 옵션으로 설정해야 합니다. 해당되는 경우, 개인 키 비밀번호는 `tls_private_key_password`로 설정해야 합니다. +* `KRB5_CLIENT_KTNAME` 환경 변수가 기본 경로(예: `KRB5_CLIENT_KTNAME=/etc/krb5.keytab`)와 다른 경우 클라이언트의 케베로스 키 탭 위치를 가리키는 환경 변수를 의미합니다. +* `KRB5CCNAME` 환경 변수가 기본 경로(예: `KRB5CCNAME=/tmp/krb5cc_xxx`)와 다른 경우 Kafka 클라이언트 의 Kerberos 자격 증명 티켓 캐시를 가리키는 환경 변수를 의미합니다. +* Datadog 에이전트가 해당 환경 변수에 액세스할 수 없는 경우 운영 체제의 Datadog 에이전트 서비스 설정 재정의 파일에 있는 환경 변수를 설정합니다. Datadog 에이전트 서비스 유닛 파일 수정 절차는 리눅스(Linux) 운영 체제에 따라 달라질 수 있습니다. 예를 들어 리눅스 `systemd` 환경을 생각해 볼 수 있습니다. + +**리눅스 시스템 예시** + +1. 환경 파일에서 환경 변수를 수정합니다. + 예: `/path/to/environment/file` + + ``` + KRB5_CLIENT_KTNAME=/etc/krb5.keytab + KRB5CCNAME=/tmp/krb5cc_xxx + ``` + +2. Datadog 에이전트 서비스 설정 재정의 파일을 생성합니다. `sudo systemctl edit datadog-agent.service` + +3. 재정의 파일에 다음을 설정합니다. + + ``` + [Service] + EnvironmentFile=/path/to/environment/file + ``` + +4. 다음 명령을 실행하여 systemd 데몬, Datadog-에이전트 서비스, Datadog 에이전트를 다시 로드합니다. + +``` +sudo systemctl daemon-reload +sudo systemctl restart datadog-agent.service +sudo service datadog-agent restart +``` + +## 참고 자료 + +- [Kafka 성능 메트릭 모니터링][12] +- [Kafka 성능 메트릭 수집][12] +- [Datadog를 사용한 Kafka 모니터링][13] + + +[1]: https://raw.githubusercontent.com/DataDog/integrations-core/master/kafka/images/kafka_dashboard.png +[2]: https://docs.datadoghq.com/integrations/java/ +[3]: https://raw.githubusercontent.com/DataDog/dd-agent/5.2.1/conf.d/kafka.yaml.example +[4]: https://docs.datadoghq.com/integrations/kafka/?tab=host#kafka-consumer-integration +[5]: https://app.datadoghq.com/account/settings/agent/latest +[6]: https://github.com/DataDog/jmxfetch +[7]: https://docs.datadoghq.com/integrations/amazon_msk/#pagetitle +[8]: https://docs.datadoghq.com/agent/guide/agent-commands/#agent-status-and-information +[9]: https://docs.datadoghq.com/integrations/faq/troubleshooting-and-deep-dive-for-kafka/ +[10]: https://docs.datadoghq.com/integrations/guide/agent-failed-to-retrieve-rmiserver-stub/ +[11]: https://www.datadoghq.com/blog/monitoring-kafka-performance-metrics +[12]: https://www.datadoghq.com/blog/collecting-kafka-performance-metrics +[13]: https://www.datadoghq.com/blog/monitor-kafka-with-datadog +[14]: https://www.datadoghq.com/knowledge-center/apache-kafka/ +[15]: https://raw.githubusercontent.com/DataDog/integrations-core/master/kafka_consumer/images/kafka_dashboard.png +[16]: https://app.datadoghq.com/integrations/kafka?search=kafka +[17]: https://docs.datadoghq.com/agent/guide/agent-configuration-files/#agent-configuration-directory +[18]: https://github.com/DataDog/integrations-core/blob/master/kafka_consumer/datadog_checks/kafka_consumer/data/conf.yaml.example +[19]: https://docs.datadoghq.com/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[20]: https://docs.datadoghq.com/integrations/kafka/#log-collection +[21]: https://docs.datadoghq.com/containers/kubernetes/integrations/ diff --git a/content/ko/integrations/linux_proc_extras.md b/content/ko/integrations/linux_proc_extras.md new file mode 100644 index 0000000000000..8a62e86b214a3 --- /dev/null +++ b/content/ko/integrations/linux_proc_extras.md @@ -0,0 +1,104 @@ +--- +app_id: 시스템 +app_uuid: 17477b56-4487-4b00-8820-70c6f64ae3c6 +assets: + integration: + configuration: + spec: assets/configuration/spec.yaml + events: + creates_events: false + metrics: + check: system.inodes.total + metadata_path: metadata.csv + prefix: 시스템. + service_checks: + metadata_path: assets/service_checks.json + source_type_name: Linux proc extras +author: + homepage: https://www.datadoghq.com + name: Datadog + sales_email: info@datadoghq.com + support_email: help@datadoghq.com +categories: +- os & system +custom_kind: 통합 +dependencies: +- https://github.com/DataDog/integrations-core/blob/master/linux_proc_extras/README.md +display_on_public_website: true +draft: false +git_integration_title: linux_proc_extras +integration_id: 시스템 +integration_title: Linux Proc Extras +integration_version: 4.0.0 +is_public: true +manifest_version: 2.0.0 +name: linux_proc_extras +public_title: Linux Proc Extras +short_description: linux_proc_extras 상태를 시각화 및 모니터링합니다. +supported_os: +- linux +tile: + changelog: CHANGELOG.md + classifier_tags: + - Supported OS::Linux + - Category::OS & 시스템 + - Offering::Integration + configuration: README.md#Setup + description: linux_proc_extras 상태를 시각화 및 모니터링합니다. + media: [] + overview: README.md#Overview + support: README.md#Support + title: Linux Proc Extras +--- + + + + +## 개요 + +linux_proc_extras 서비스에서 실시간으로 메트릭을 받아 다음을 수행할 수 있습니다. + +- linux_proc_extras 상태를 시각화 및 모니터링합니다. +- linux_proc_extras 실패 복구(failovers) 및 이벤트에 대한 알림을 받습니다. + +## 설정 + +### 설치 + +Linux_proc_extras 점검에는 [Datadog 에이전트][1] 패키지가 포함되어 있으므로 서버에 추가 설치할 필요가 없습니다. + +### 구성 + +1. [에이전트의 설정 디렉토리][2]의 루트에 있는 `conf.d/` 폴더에서 `linux_proc_extras.d/conf.yaml` 파일을 편집합니다. 사용 가능한 모든 설정 옵션은 [linux_proc_extras.d/conf.yaml 샘플][3]을 참조하세요. + +2. [Agent를 재시작합니다][4]. + +### 검증 + +[에이전트 상태 하위 명령을 실행][5]하고 점검 섹션에서 `linux_proc_extras`을 찾으세요. + +## 수집한 데이터 + +### 메트릭 +{{< get-metrics-from-git "linux_proc_extras" >}} + + +### 이벤트 + +Linux Proc Extras 점검은 이벤트를 포함하지 않습니다. + +### 서비스 점검 + +Linux Proc Extras 점검은 서비스 점검을 포함하지 않습니다. + +## 트러블슈팅 + +도움이 필요하신가요? [Datadog 지원팀][7]에 문의하세요. + +[1]: https://app.datadoghq.com/account/settings/agent/latest +[2]: https://docs.datadoghq.com/ko/agent/guide/agent-configuration-files/#agent-configuration-directory +[3]: https://github.com/DataDog/integrations-core/blob/master/linux_proc_extras/datadog_checks/linux_proc_extras/data/conf.yaml.example +[4]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#start-stop-and-restart-the-agent +[5]: https://docs.datadoghq.com/ko/agent/guide/agent-commands/#agent-status-and-information +[6]: https://github.com/DataDog/integrations-core/blob/master/linux_proc_extras/metadata.csv +[7]: https://docs.datadoghq.com/ko/help/ \ No newline at end of file diff --git a/content/ko/network_monitoring/_index.md b/content/ko/network_monitoring/_index.md index 84e52e7012d6c..b7022bc39247b 100644 --- a/content/ko/network_monitoring/_index.md +++ b/content/ko/network_monitoring/_index.md @@ -13,7 +13,7 @@ further_reading: text: 네트워크 성능을 더 잘 모니터링할 수 있도록 양방향 세션에 함께하세요. - link: https://www.datadoghq.com/blog/network-performance-monitoring tag: 블로그 - text: Datadog 네트워크 성능 모니터링 소개 + text: Datadog 클라우드 네트워크 모니터링 소개 - link: https://www.datadoghq.com/blog/monitor-dns-with-datadog/ tag: 블로그 text: Datadog와 DNS 모니터링하기 @@ -28,11 +28,11 @@ title: 네트워크 모니터링 {{< learning-center-callout header="활성화 웨비나 세션 참가" hide_image="true" btn_title="등록" btn_url="https://www.datadoghq.com/technical-enablement/sessions/?tags.topics-0=NPM">}} - Datadog 네트워크 성능 모니터링으로 최소한의 비용으로 온프레미스, 클라우드, 하이브리 환경 네트워크 컨텐츠를 가시화하여 확인하는 방법을 알아보세요. + Datadog 클라우드 네트워크 모니터링으로 최소한의 비용으로 온프레미스, 클라우드, 하이브리 환경 네트워크 컨텐츠를 가시화하여 확인하는 방법을 알아보세요. {{< /learning-center-callout >}} {{< whatsnext desc="This section includes the following topics:">}} - {{< nextlink href="network_monitoring/performance" >}}네트워크 성능 모니터링: 인프라스트럭처에서 점대점 통신을 위한 메트릭을 탐색하세요.{{< /nextlink >}} + {{< nextlink href="network_monitoring/cloud_network_monitoring" >}}클라우드 네트워크 모니터링: 인프라스트럭처에서 점대점 통신을 위한 메트릭을 탐색하세요.{{< /nextlink >}} {{< nextlink href="network_monitoring/dns" >}}DNS 모니터링: DNS 서버 이슈를 진단하고 디버깅하세요.{{< /nextlink >}} {{< nextlink href="network_monitoring/devices" >}}네트워크 장치 모니터링: 라우터, 스위치, 서버, 방화벽 등 네트워크 연결 장치에 대한 가시성을 확보하세요.{{< /nextlink >}} {{< /whatsnext >}} diff --git a/content/ko/network_monitoring/devices/data.md b/content/ko/network_monitoring/devices/data.md index 611a43f6b0019..6ab9527a60241 100644 --- a/content/ko/network_monitoring/devices/data.md +++ b/content/ko/network_monitoring/devices/data.md @@ -2,13 +2,9 @@ aliases: - /ko/network_performance_monitoring/devices/data/ disable_toc: true -title: 수집된 NDM 데이터 +title: SNMP 메트릭 참조 --- -{{< site-region region="gov" >}} -
네트워크 기기 모니터링은 이 사이트에서 지원되지 않습니다.
-{{< /site-region >}} - ## 이벤트 네트워크 장치 모니터링에는 이벤트가 포함되지 않습니다. diff --git a/content/ko/network_monitoring/devices/guide/_index.md b/content/ko/network_monitoring/devices/guide/_index.md index 150f1735b3f32..e84e0bd3cf9dc 100644 --- a/content/ko/network_monitoring/devices/guide/_index.md +++ b/content/ko/network_monitoring/devices/guide/_index.md @@ -13,11 +13,12 @@ private: true title: NDM 가이드 --- -{{< whatsnext desc="일반 가이드:" >}} -{{< nextlink href="network_monitoring/devices/guide/tags-with-regex" >}}정규식을 사용한 NDM 태그{{< /nextlink >}} -{{< nextlink href="network_monitoring/devices/guide/cluster-agent" >}}클러스터 에이전트가 있는 NDM{{< /nextlink >}} -{{< nextlink href="network_monitoring/devices/guide/build-ndm-profile" >}}NDM 프로필 구축{{< /nextlink >}} -{{< nextlink href="network_monitoring/devices/guide/migrating-to-snmp-core-check" >}}Python 기반 검사에서 SNMP 코어 검사(Go에서)로 마이그레이션하기{{< /nextlink >}} +{{< whatsnext desc="General Guides:" >}} + {{< nextlink href="network_monitoring/devices/guide/device_profiles" >}}디바이스 프로필 시작하기(GUI){{< /nextlink >}} + {{< nextlink href="network_monitoring/devices/guide/tags-with-regex" >}}Regex와 NDM 태그{{< /nextlink >}} + {{< nextlink href="network_monitoring/devices/guide/cluster-agent" >}}클러스터 에이전트와 NDM{{< /nextlink >}} + {{< nextlink href="network_monitoring/devices/guide/build-ndm-profile" >}}NDM 프로필 구축(고급){{< /nextlink >}} + {{< nextlink href="network_monitoring/devices/guide/migrating-to-snmp-core-check" >}}Python 기반 점검에서 SNMP 코어 점검(Go에서)으로 마이그레이션{{< /nextlink >}} {{< /whatsnext >}} ## 참고 자료 diff --git a/content/ko/real_user_monitoring/browser/collecting_browser_errors.md b/content/ko/real_user_monitoring/browser/collecting_browser_errors.md index 1835045109ca2..3e035ce2e0da9 100644 --- a/content/ko/real_user_monitoring/browser/collecting_browser_errors.md +++ b/content/ko/real_user_monitoring/browser/collecting_browser_errors.md @@ -1,38 +1,34 @@ --- +aliases: +- /ko/error_tracking/standalone_frontend/collecting_browser_errors further_reading: -- link: /real_user_monitoring/error_tracking/ - tag: 설명서 - text: 오류 추적 -- link: https://www.datadoghq.com/blog/real-user-monitoring-with-datadog/ - tag: 블로그 - text: 실제 사용자 모니터링(RUM) -- link: /real_user_monitoring/explorer/ - tag: 설명서 - text: Datadog에서 보기 탐색 -- link: /real_user_monitoring/explorer/visualize/ - tag: 설명서 - text: 이벤트에 시각화 적용 -- link: /real_user_monitoring/platform/dashboards/ - tag: 설명서 - text: RUM 대시보드 -title: 브라우저 오류 수집 +- link: /error_tracking/explorer/ + tag: Documentation + text: Explore your Errors within Datadog +- link: /error_tracking/monitors/ + tag: Documentation + text: Proactively alert on impactful issues +- link: /real_user_monitoring + tag: Documentation + text: Measure performance and user impact +title: Collecting Browser Errors --- ## 개요 -프론트 엔드 오류는 실제 사용자 모니터링(RUM)을 사용하여 수집됩니다. 오류 메시지와 스택 트레이스는 사용 가능한 경우 포함됩니다. +프론트엔드 오류는 브라우저 SDK을 사용하여 수집됩니다. 사용 가능한 경우 오류 메시지와 스택 트레이스가 포함됩니다. ## 오류 소스 프런트엔드 오류는 다음과 같은 여러 원인으로 인해 발생합니다. - **에이전트**: SDK 실행 시 - **콘솔**: `console.error()` API 호출 시 -- **커스텀**: [RUM `addError` API]와 함께 전송 시(#collect-errors-manually) +- **커스텀**: [`addError` API]와 함께 전송 시(#collect-errors-manually) - **보고**: `ReportingObserver` API에서 - **소스**: 소스 코드에서 처리되지 않은 예외 또는 처리되지 않은 약속 거부 발생 시 ## 오류 속성 -모든 RUM 이벤트 유형의 기본 속성에 대한 내용은 [수집된 데이터][1]를 참조하세요. 샘플링 또는 글로벌 컨텍스트 구성에 대한 내용은 [RUM 데이터 및 콘텍스트 수정하기][2]를 참조하세요. +모든 이벤트 유형의 기본 속성에 대한 내용은 [수집된 데이터][1]를 참조하세요. 샘플링 또는 글로벌 컨텍스트 설정에 대한 내용은 [데이터 및 콘텍스트 수정하기][2]를 참조하세요. | 속성 | 유형 | 설명 | |-----------------|--------|-------------------------------------------------------------------| @@ -51,7 +47,7 @@ title: 브라우저 오류 수집 ## 수동으로 오류 수집 -처리된 예외, 처리된 약속 거부 및 RUM Browser SDK에서 자동으로 추적되지 않는 기타 오류를 `addError()`API를 통해 모니터링하세요: +처리된 예외, 처리된 프라미스 거부 및 Browser SDK에서 자동으로 추적되지 않는 기타 오류를 `addError()` API로 모니터링하세요. {{< code-block lang="javascript" >}} addError( @@ -60,7 +56,7 @@ addError( ); {{< /code-block >}} -**참고**: [오류 추적][4] 기능은 `custom`, `source` 또는 `report`로 설정된 소스를 전송하는 오류 및 스택 트레이스가 포함된 오류를 처리합니다. 다른 소스(예: `console`) 또는 브라우저 확장 프로그램으로 전송된 오류는 처리하지 않습니다. +**참고**: [오류 추적][4]은 `custom`, `source`, `report`, `network` 또는 `console`로 설정된 소스를 전송하는 오류 및 스택 트레이스가 포함된 오류를 처리합니다. {{< tabs >}} {{% tab "NPM" %}} diff --git a/content/ko/real_user_monitoring/browser/data_collected.md b/content/ko/real_user_monitoring/browser/data_collected.md index b70a4390ded96..7adc072bbf799 100644 --- a/content/ko/real_user_monitoring/browser/data_collected.md +++ b/content/ko/real_user_monitoring/browser/data_collected.md @@ -185,7 +185,7 @@ IP 주소의 지리적 위치와 관련된 속성은 다음과 같습니다: | 메트릭 | 유형 | 설명 | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | 숫자 | 리소스를 로드하는 데 걸린 전체 시간. | +| `resource.duration` | 숫자 | 리소스를 로드하는 데 걸린 전체 시간. | | `resource.size` | 숫자 (바이트) | 리소스 사이즈. | | `resource.connect.duration` | 숫자 (ns) | 서버 연결 설정에 소요된 시간 (connectEnd - connectStart). | | `resource.ssl.duration` | 숫자 (ns) | TLS 핸드셰이크에 소요된 시간. 마지막 요청이 HTTPS를 넘지 않으면 이 메트릭이 나타나지 않습니다 (connectEnd - secureConnectionStart). | diff --git a/content/ko/real_user_monitoring/browser/monitoring_resource_performance.md b/content/ko/real_user_monitoring/browser/monitoring_resource_performance.md index 806b5452c644f..6b4891aa10f40 100644 --- a/content/ko/real_user_monitoring/browser/monitoring_resource_performance.md +++ b/content/ko/real_user_monitoring/browser/monitoring_resource_performance.md @@ -37,7 +37,7 @@ RUM 리소스는 수집 시점에 활성 RUM 보기와 관련된 모든 컨텍 | 속성 | 유형 | 설명 | |----------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------| -| `duration` | 숫자 | 리소스를 로드하는 데 걸린 전체 시간. | +| `resource.duration` | 숫자 | 리소스를 로드하는 데 걸린 전체 시간. | | `resource.size` | 숫자 (바이트) | 리소스 사이즈. | | `resource.connect.duration` | 숫자 (ns) | 서버 연결 설정에 소요된 시간 (connectEnd - connectStart). | | `resource.ssl.duration` | 숫자 (ns) | TLS 핸드셰이크에 소요된 시간. 마지막 요청이 HTTPS를 넘지 않으면 이 메트릭이 나타나지 않습니다 (connectEnd - secureConnectionStart).| diff --git a/content/ko/serverless/_index.md b/content/ko/serverless/_index.md index 2b3b8a9293825..74d544ba10bd5 100644 --- a/content/ko/serverless/_index.md +++ b/content/ko/serverless/_index.md @@ -84,13 +84,13 @@ Azure 앱 서비스용 Datadog 확장을 사용하여 Azure 웹 앱 추적할 Azure 컨테이너 앱은 컨테이너 기반 애플리케이션을 배포하고 확장하기 위한 완전 관리형 서버리스 플랫폼입니다. Datadog은 [Azure 통합][9]을 통해 컨테이너 앱에 대한 모니터링 및 로그 수집을 제공합니다. -또 Datadog에서는 [컨테이너 앱 애플리케이션을 계측][10]하는 솔루션을 베타로 제공합니다. 추적, 커스텀 메트릭, 직접 로그 수집이 가능한 전용 에이전트를 지원합니다. +또 Datadog에서는 [컨테이너 앱 애플리케이션을 계측][10]하는 솔루션을 평가판으로 제공합니다. 추적, 커스텀 메트릭, 직접 로그 수집이 가능한 전용 에이전트를 지원합니다. ### Google Cloud Run Google Cloud Run은 소규모의 단일 목적 함수를 만들 수 있는 경량 이벤트 기반 비동기 컴퓨팅 솔루션입니다. Google 클라우드 플랫폼에서 실행 중인 서버리스 함수를 모니터링하려면 [Google 클라우드 플랫폼 통합][11]을 활성화하세요. -또 Datadog에서는 [Cloud Run 애플리케이션을 계측][12]하는 솔루션을 공용 베타로 제공합니다. 추적, 커스텀 메트릭, 직접 로그 수집이 가능한 전용 에이전트를 지원합니다. +또 Datadog에서는 [Cloud Run 애플리케이션을 계측][12]하는 솔루션을 평가판으로 제공합니다. 추적, 커스텀 메트릭, 직접 로그 수집이 가능한 전용 에이전트를 지원합니다. ## 참고 자료 diff --git a/content/ko/serverless/guide/_index.md b/content/ko/serverless/guide/_index.md index 852a712edd92e..3d93635fc397c 100644 --- a/content/ko/serverless/guide/_index.md +++ b/content/ko/serverless/guide/_index.md @@ -20,7 +20,7 @@ title: 서버리스 모니터링 지침 {{< /whatsnext >}} {{< whatsnext desc="Azure App Service and Container Apps" >}} - {{< nextlink href="/serverless/guide/azure_app_service_linux_sidecar" >}}Azure Sidecar을 사용해 Azure App Service에서 Linux 컨테이너 계측하기{{< /nextlink >}} + {{< nextlink href="/serverless/guide/azure_app_service_linux_containers_serverless_init" >}}서버리스 init Linux 컨테이너로 Azure 앱 서비스 계측{{< /nextlink >}} {{< /whatsnext >}} ## Datadog Forwarder를 사용해 설치 diff --git a/content/ko/synthetics/api_tests/grpc_tests.md b/content/ko/synthetics/api_tests/grpc_tests.md new file mode 100644 index 0000000000000..d42899a8034ac --- /dev/null +++ b/content/ko/synthetics/api_tests/grpc_tests.md @@ -0,0 +1,237 @@ +--- +algolia: + category: 설명서 + rank: 70 + subcategory: 신서틱(Synthetic) API 테스트 + tags: + - grpc + - grpc 테스트 + - grpc 테스트 +description: gRPC 요청을 시뮬레이션하여 공개 및 내부 API 엔드포인트를 모니터링합니다. +further_reading: +- link: https://www.datadoghq.com/blog/introducing-synthetic-monitoring/ + tag: 블로그 + text: Datadog 신서틱(Synthetic) 모니터링 소개 +- link: https://www.datadoghq.com/blog/grpc-health-check-datadog-synthetic-monitoring/ + tag: 블로그 + text: Datadog으로 gRPC API 모니터링하기 +- link: https://learn.datadoghq.com/courses/intro-to-synthetic-tests + tag: 학습 센터 + text: 신서틱(Synthetic) 테스트 소개 +- link: /synthetics/multistep + tag: 설명서 + text: 다단계 API 테스트로 gRPC 요청 체인 설정 +- link: /synthetics/private_locations + tag: 설명서 + text: 내부 엔드포인트에서 gRPC 테스트 실행 +- link: /synthetics/guide/synthetic-test-monitors + tag: 설명서 + text: 신서틱 테스트 모니터에 대해 알아보기 +title: GRPC 테스트 +--- +## 개요 + +gRPC 테스트로 gRPC 서비스 및 서버를 사전 모니터링할 수 있습니다. 다음 두 가지 유형 중에서 선택할 수 있습니다. + +동작 점검 +:애플리케이션의 API 엔드포인트에 gRPC 요청을 전송하여 전체 응답 시간, 헤더 또는 본문 콘텐츠 등의 응답과 정의한 조건을 확인합니다. + +서비스 상태 점검 +: gRPC 서비스 상태 점검은 gRPC 서비스 상태 보고의 기준이 됩니다. 본 점검으로 gRPC 서버와 서비스가 응답하고 실행 중이며 원격 프로시저 호출(RPC)을 처리할 수 있는지 확인합니다.

gRPC 서비스 상태 점검을 구현하면 Datadog에 `.proto` 파일을 제공하지 않아도 gRPC 서비스 상태 점검 테스트를 실행할 수 있습니다. 자세한 내용을 확인하려면 gRPC 커뮤니티가 공유한 [서비스 상태 점검 `.proto` 파일 예시][1]을 참조하세요. + +gRPC 테스트는 네트워크 외부에서 또는 내부에서 실행할지 선호도에 따라 [관리 위치](#select-locations)와 [비공개 위치][2]에서 모두 실행할 수 있습니다. gRPC 테스트는 일정에 맞추어서, 온디맨드 또는 [CI/CD 파이프라인][3] 내에서 직접 실행할 수 있습니다. + +## 설정 + +다음 옵션 중 하나를 사용하여 테스트를 생성할 수 있습니다. + + - **템플릿에서 테스트 생성하기**: + + 1. 사전에 채워진 템플릿 중 하나에 마우스를 올리고 **템플릿 보기**를 클릭합니다. 테스트 세부 정보, 요청 세부 정보, 어설션, 알림 조건 및 모니터링 설정이 포함된, 사전에 채워진 설정 정보가 표시되는 사이드 패널이 열립니다. + 2. **+테스트 생성하기**를 클릭하면 사전 입력된 설정 옵션을 검토하고 편집할 수 있는 **요청 정의** 페이지가 열립니다. 표시되는 필드는 테스트 초기 생성 시사용할 수 있는 필드와 동일합니다. + 3. **세부 정보 저장**을 클릭하여 API 테스트를 제출합니다.

+ {{< img src="getting_started/synthetics/synthetics_templates_api_video.mp4" alt="템플릿을 사용한 Synthetics API 테스트 랜딩 페이지 영상" video="true" >}} + + - **테스트 처음부터 빌드하기**: + + 1. 테스트를 처음부터 빌드하려면 **+처음부터 시작** 템플릿을 클릭한 다음 `gRPC` 요청 유형을 선택합니다. + 2. 테스트를 실행할 **호스트** 및 **포트**를 지정합니다. 기본 gRPC 포트는 `50051`입니다. + 3. 단항 호출(unary call)을 실행하려면 **동작 점검**을 선택하고, 서비스 상태 점검을 실행하려면 **서비스 상태 점검**을 선택합니다.

+ + {{< tabs >}} + {{% tab "Behavior Check" %}} + +동작 점검의 경우 **서버 리플렉션** 또는 [**프로토 파일 업로드**][101]를 지정하여 gRPC 서버를 정의합니다. 원하는 방식을 선택하고 요청 메시지를 포함합니다. Datadog은 스트리밍 방식을 지원하지 않습니다.

+ +{{< img src="synthetics/api_tests/grpc_behavior_check_test_2.png" alt="gRPC 요청 정의" style="width:90%;" >}} + +[101]: https://grpc.io/docs/what-is-grpc/introduction/#working-with-protocol-buffers + + {{% /tab %}} + {{% tab "Health Check" %}} + +서비스 상태 점검의 경우 서비스의 이름을 입력합니다. gRPC 서버에서 서비스 상태 점검을 전송하려면 해당 필드를 비워둡니다.

+ +{{< img src="synthetics/api_tests/grpc_health_check_test_2.png" alt="gRPC 요청 정의" style="width:90%;" >}} + + {{% /tab %}} + {{< /tabs >}} + + 4. 테스트에 **고급 옵션**(선택 사항)을 추가합니다. + + {{< tabs >}} + {{% tab "Request Options" %}} + +- **타임아웃**: 테스트 시간 초과로 간주하기까지의 시간을 초단위로 지정합니다. +- **서버 인증서 오류 무시**: SSL 인증서의 유효성을 검사할 때 오류가 발생하더라도 연결을 통해 gRPC 테스트를 계속하려면 체크 표시합니다. +- **gRPC 메타데이터**: gRPC 요청에 메타데이터를 추가 및 정의하여 서비스 간에 메타데이터를 전달합니다. + + {{% /tab %}} + {{% tab "Authentication" %}} + +- **클라이언트 인증서**: 클라이언트 인증서(`.crt`) 및 연결된 비공개 키(`.key`)를 `PEM` 형식으로 업로드하여 mTLS를 통해 인증합니다. + +
+ +`openssl` 라이브러리를 사용하여 인증서를 변환할 수 있습니다. 예를 들어, `PKCS12` 인증서를 `PEM` 형식의 비공개 키 및 인증서로 변환합니다. + +```bash + openssl pkcs12 -in .p12 -out .key -nodes -nocerts + openssl pkcs12 -in .p12 -out .cert -nokeys +``` + + {{% /tab %}} + {{< /tabs >}} + + 5. gRPC 테스트의 **이름**을 지정합니다. + + 6. gRPC 테스트에 환경 **태그** 및 기타 태그를 추가합니다. 이러한 태그를 사용하여 [신서틱 모니터링 & 지속적인 테스트 페이지][4]에서 신서틱 테스트를 필터링할 수 있습니다. + + 7. **호출**을 클릭하여 요청 설정을 테스트합니다. 화면 오른쪽에 응답 미리보기가 표시됩니다. + + 8. **테스트 생성하기**를 클릭하여 API 테스트를 제출합니다. + +### Snippets + +{{% synthetics-api-tests-snippets %}} + +### 어설션 정의 + +어서션은 예상되는 테스트 결과를 정의합니다. **전송**을 클릭하면 수신한 응답에 기반한 `response time`의 어서션이 추가됩니다. 테스트를 모니터링하려면 최소 한 개 이상의 어서션을 정의해야합니다. + +{{< tabs >}} +{{% tab "Behavior Check" %}} + +| 유형 | 연산자 | 값 유형 | +|---|---|---| +| 응답 시간 | `is less than` | _정수 (ms)_ | +| gRPC 응답 | `contains`, `does not contain`, `is`, `is not`,
`matches`, `does not match`,
[`jsonpath`][1], [`xpath`][2] | _문자열_
_[정규식][3]_ | +| gRPC 메타데이터 | `is`, `is not`, `contains`, `does not contain`, `matches regex`, `does not match regex`, `does not exist` | _정수(ms)_
_[정규식][3]_ | + +**신규 어서션**을 클릭하거나 응답 미리보기를 클릭하여 API 테스트당 최대 20개의 어서션을 생성할 수 있습니다. + +{{< img src="synthetics/api_tests/assertions_grpc_behavior_check_blur.png" alt="성공 또는 실패로 gRPC 테스트 어서션 정의" style="width:90%;" >}} + +[1]: https://restfulapi.net/json-jsonpath/ +[2]: https://www.w3schools.com/xml/xpath_syntax.asp +[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions + +{{% /tab %}} +{{% tab "Health Check" %}} + +| 유형 | 연산자 | 값 유형 | +|---|---|---| +| 응답 시간 | `is less than` | _정수 (ms)_ | +| 서비스 점검 상태 | `is`, `is not` | _정수 (ms)_ | +| gRPC 메타데이터 | `is`, `is not`, `contains`, `does not contain`, `matches regex`, `does not match regex`, `does not exist` | _정수 (ms)_ | + +**신규 어서션**을 클릭하거나 응답 미리보기를 클릭하여 API 테스트당 최대 20개의 어서션을 생성할 수 있습니다. + +{{< img src="synthetics/api_tests/assertions_grpc_health_check.png" alt="성공 또는 실패로 gRPC 테스트 어서션 정의" style="width:90%;" >}} + +{{% /tab %}} +{{< /tabs >}} + +테스트에 응답 본문 어설션이 포함되어 있지 않으면 본문 페이로드가 삭제되고 Synthetics Worker가 설정한 제한 시간 내에서 요청 관련 응답 시간을 반환합니다. + +테스트에 응답 본문에 대한 어서션이 포함되어 있고 제한 시간에 도달하면, `Assertions on the body/response cannot be run beyond this limit` 오류가 나타납니다. + +### 위치 선택 + +gRPC 테스트를 실행할 **위치**를 선택합니다. gRPC 테스트는 네트워크 외부 또는 내부에서 테스트를 실행하는 선호도에 따라 관리되는 위치 및 [프라이빗 위치][2]에서 모두 실행할 수 있습니다. + +{{% managed-locations %}} + +### 테스트 빈도 지정 + +다음과 같이 gRPC 테스트를 수행합니다. + +* **일정에 따라** 사용자가 가장 중요한 서비스에 항상 액세스할 수 있도록 보장합니다. Datadog이 gRPC 테스트를 실행할 빈도를 선택하세요. +* [**CI/CD 파이프라인 내에서**][3] 결함이 있는 코드가 고객 경험에 영향을 미칠지에 대한 염려 없이 제공을 시작할 수 있습니다. +* **온디맨드**로 실행하면 팀에 가장 적합한 시간에 테스트를 실행할 수 있습니다. + +{{% synthetics-alerting-monitoring %}} + +{{% synthetics-variables %}} + +### 변수 사용 + +[**설정** 페이지에 정의된 전역 변수][9]를 gRPC 테스트의 URL, 고급 옵션 및 어서션에 사용할 수 있습니다. + +변수 목록을 표시하려면 원하는 필드에 `{{`를 입력하세요. + +## 테스트 실패 + +하나 이상의 어서션을 충족하지 않거나 요청이 초기에 실패한 경우 테스트는 `FAILED`로 간주됩니다. 경우에 따라서는 엔드포인트 어서션 테스트 없이 해당 테스트가 실패할 수 있습니다. + +다음과 같은 이유로 실패할 수 있습니다. + +`gRPC specific errors` +: gRPC은 [공식 gRPC 문서][10]에서 찾아볼 수 있는 특정 상태 코드 목록을 갖추고 있습니다. + +`CONNRESET` +: 원격 서버에 의해 연결이 갑자기 종료되었습니다. 가능한 원인으로는 웹 서버가 응답 도중 오류 또는 충돌이 발생하였거나 웹 서버의 연결이 끊어졌기 때문일 수 있습니다. + +`DNS` +: 테스트 URL에 대한 DNS 엔트리를 찾을 수 없습니다. 가능한 원인으로는 테스트 URL이 잘못 설정되었거나 DNS 엔티티 설정이 잘못되었기 때문일 수 있습니다. + +`INVALID_REQUEST` +: 테스트 설정이 유효하지 않습니다(예: URL 오타). + +`SSL` +: SSL 연결을 실행할 수 없습니다. [자세한 내용을 확인하려면 전용 오류 페이지를 참조하세요][11]. + +`TIMEOUT` +: 요청을 적절한 시간 내에 완료할 수 없습니다. 두 가지 유형의 `TIMEOUT`이 발생할 수 있습니다: + - `TIMEOUT: The request couldn't be completed in a reasonable time.`는 요청 시간이 테스트에 정의된 시간 제한에 도달했음을 나타냅니다(기본값은 60초로 설정). + 각 요청에 대해 완료된 요청 단계만 네트워크 워터폴에 표시됩니다. 예를 들어, `Total response time`만 표시된다면 DNS 확인 도중에 시간 초과가 발생한 것입니다. + - `TIMEOUT: Overall test execution couldn't be completed in a reasonable time.`은 테스트 시간(요청 및 어서션)이 최대 실행 시간 60.5초에 도달했음을 나타냅니다. + +## 권한 + +기본적으로 [Datadog 관리자 및 Datadog 표준 역할][12]로 설정된 사용자만 신서틱(Synthetic) gRPC 테스트를 생성, 편집, 삭제할 수 있습니다. 신서틱(Synthetic) gRPC 테스트 생성, 편집, 삭제, 접근 권한을 얻으려면 사용자를 이 두 가지 [기본 역할][12] 중 하나로 업그레이드하세요. + +[커스텀 역할 기능][13]을 사용하는 경우 `synthetics_read` 및 `synthetics_write` 권한을 포함하는 모든 커스텀 역할에 사용자를 추가합니다. + +## 액세스 제한 + +{{% synthetics_grace_permissions %}} + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + + +[1]: https://github.com/grpc/grpc/blob/master/doc/health-checking.md +[2]: /ko/synthetics/private_locations +[3]: /ko/synthetics/cicd_testing +[4]: /ko/synthetics/search/#search +[5]: /ko/monitors/notify/#configure-notifications-and-automations +[6]: https://www.markdownguide.org/basic-syntax/ +[7]: /ko/monitors/notify/?tab=is_recoveryis_alert_recovery#conditional-variables +[8]: /ko/synthetics/guide/synthetic-test-monitors +[9]: /ko/synthetics/settings/#global-variables +[10]: https://grpc.github.io/grpc/core/md_doc_statuscodes.html +[11]: /ko/synthetics/api_tests/errors/#ssl-errors +[12]: /ko/account_management/rbac/ +[13]: /ko/account_management/rbac#custom-roles \ No newline at end of file diff --git a/content/ko/synthetics/api_tests/http_tests.md b/content/ko/synthetics/api_tests/http_tests.md new file mode 100644 index 0000000000000..233a7c38d495d --- /dev/null +++ b/content/ko/synthetics/api_tests/http_tests.md @@ -0,0 +1,275 @@ +--- +algolia: + category: 설명서 + rank: 70 + subcategory: 신서틱(Synthetic) API 테스트 + tags: + - http + - http test + - http tests +aliases: +- /ko/synthetics/http_test +- /ko/synthetics/http_check +- /ko/synthetics/guide/or-logic-api-tests-assertions +description: 공개 및 내부 API 엔드포인트 모니터링을 위해 HTTP 요청을 시뮬레이션합니다. +further_reading: +- link: https://www.datadoghq.com/blog/introducing-synthetic-monitoring/ + tag: 블로그 + text: Datadog 신서틱(Synthetic) 모니터링 소개 +- link: https://learn.datadoghq.com/courses/intro-to-synthetic-tests + tag: 학습 센터 + text: 신서틱(Synthetic) 테스트 소개 +- link: /getting_started/synthetics/api_test + tag: 설명서 + text: HTTP 테스트 시작하기 +- link: /synthetics/private_locations + tag: 설명서 + text: 내부 엔드포인트에서 HTTP 테스트 실행 +- link: /synthetics/multistep + tag: 설명서 + text: 다단계 HTTP 테스트 실행 +- link: /synthetics/guide/synthetic-test-monitors + tag: 설명서 + text: Synthetic 테스트 모니터에 대해 알아보기 +title: HTTP 테스트 +--- +## 개요 + +HTTP 테스트를 사용하면 애플리케이션의 API 엔드포인트에 HTTP 요청을 보내 응답 및 전체 응답 시간, 예상 상태 코드, 헤더 또는 본문 콘텐츠와 같은 정의된 조건을 확인할 수 있습니다. + +HTTP 테스트는 네트워크 외부 또는 내부에서 테스트를 실행하려는 기본 설정에 따라 [관리](#select-locations) 및 [비공개 위치][1]에서 실행할 수 있습니다. HTTP 테스트는 일정에 따라, 온디맨드로 또는 [CI/CD 파이프라인][2] 내에서 직접 실행할 수 있습니다. + +## 설정 + +다음 옵션 중 하나를 사용하여 테스트를 생성할 수 있습니다. + + - **템플릿에서 테스트 생성하기**: + + 1. 사전에 채워진 템플릿 중 하나에 마우스를 올리고 **템플릿 보기**를 클릭합니다. 테스트 세부 정보, 요청 세부 정보, 어설션, 알림 조건 및 모니터링 설정이 포함된, 사전에 채워진 설정 정보가 표시되는 사이드 패널이 열립니다. + 2. **+테스트 생성하기**를 클릭하면 사전 입력된 설정 옵션을 검토하고 편집할 수 있는 **요청 정의** 페이지가 열립니다. 표시되는 필드는 테스트 초기 생성 시사용할 수 있는 필드와 동일합니다. + 3. **세부 정보 저장**을 클릭하여 API 테스트를 제출합니다.

+ + {{< img src="getting_started/synthetics/synthetics_templates_api_video.mp4" alt="템플릿을 사용한 Synthetics API 테스트 랜딩 페이지 영상" video="true" >}} + + - **테스트 처음부터 빌드하기**: + + 1. 테스트를 처음부터 빌드하려면 **+처음부터 시작** 템플릿을 클릭한 다음 `HTTP` 요청 유형을 선택하고 쿼리할 **URL**을 지정합니다. + 사용 가능한 메소드는 `GET`, `POST`, `PATCH`, `PUT`, `HEAD`, `DELETE`, `OPTIONS`입니다. `http` 및 `https` URL이 모두 지원됩니다. + +
더 많은 옵션은 고급 옵션에서 확인하세요.
+ + 2. HTTP 테스트의 **이름을 지정합니다**. + + 3. HTTP 테스트에 환경 **태그** 및 기타 태그를 추가합니다. 이러한 태그를 사용하여 [신서틱 모니터링 & 지속적인 테스트 페이지][3]에서 신서틱 테스트를 필터링할 수 있습니다. + + 4. **전송**을 클릭하여 요청 설정을 테스트합니다. 화면 오른쪽에 응답 미리보기가 표시됩니다.

+ + {{< img src="getting_started/synthetics/api-test-config-4.png" alt="HTTP 요청 정의" style="width:90%;" >}} + + 5. **테스트 생성하기**를 클릭하여 API 테스트를 제출합니다. + +### Snippets + +{{% synthetics-api-tests-snippets %}} + +### 고급 옵션 + + {{< tabs >}} + + {{% tab "Request Options" %}} + * **HTTP 버전**: `HTTP/1.1 only`, `HTTP/2 only`,`HTTP/2 fallback to HTTP/1.1` 중 선택합니다. + * **Follow redirects**: 선택하면 요청을 수행할 때 HTTP 테스트에서 최대 10개의 리디렉션을 팔로우합니다. + * **Ignore server certificate error**: 선택하면 SSL 인증서를 확인할 때 오류가 발생하더라도 HTTP 테스트가 연결을 계속합니다. + * **타임아웃**: 테스트 시간 초과로 간주하기까지의 시간을 초단위로 지정합니다(옵션). + * **요청 헤더**: HTTP 요청에 추가할 헤더를 정의합니다. 기본 헤더(예: `user-agent` 헤더)를 재정의할 수도 있습니다. + * **Cookies**: HTTP 요청에 추가할 쿠키를 정의합니다. `=; =` 형식을 사용하여 여러 쿠키를 설정합니다. + + {{% /tab %}} + + {{% tab "Authentication" %}} + + * **Client Certificate**: 클라이언트 인증서(`.crt`) 및 관련 개인 키(`.key`)를 `PEM` 형식으로 업로드하여 mTLS를 통해 인증합니다. `openssl` 라이브러리를 사용하여 인증서를 변환할 수 있습니다. 예를 들어 `PKCS12` 인증서를 `PEM` 형식의 개인 키 및 인증서로 변환합니다. + + ``` + openssl pkcs12 -in .p12 -out .key -nodes -nocerts + openssl pkcs12 -in .p12 -out .cert -nokeys + ``` + + * **HTTP 기본 인증**: HTTP 기본 인증 자격 증명을 추가합니다. + * **Digest 인증**: Digest 인증 자격 증명을 추가합니다. + * **NTLM**: NTLM 인증 자격 증명을 추가합니다. NTLMv2와 NTLMv1을 모두 지원합니다. + * **AWS Signature v4**: Access Key ID와 Secret Access Key를 입력합니다. Datadog은 요청에 대한 서명을 생성합니다. 이 옵션은 SigV4의 기본 구현을 사용합니다. Amazon S3와 같은 특정 서명은 기본적으로 지원되지 않습니다. + Amazon S3 버킷에 대한 "Single Chunk" 전송 요청의 경우 sha256으로 인코딩된 요청 본문을 헤더로 포함하는 `x-amz-content-sha256`을 추가합니다(빈 본문의 경우: `x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`). + * **OAuth 2.0**: 클라이언트 자격 증명 또는 리소스 소유자 비밀번호 부여 중에서 선택하고 액세스 토큰 URL을 입력합니다. 선택에 따라 클라이언트 ID와 비밀번호 또는 사용자 이름과 비밀번호를 입력합니다. 드롭다운 메뉴에서 API 토큰을 기본 인증 헤더로 보낼지, 아니면 본문에 클라이언트 자격 증명을 보낼지 옵션을 선택합니다. 선택 사항으로 대상, 리소스 및 범위와 같은 추가 정보를 제공할 수 있습니다(**Resource Owner Password**를 선택한 경우 클라이언트 ID 및 비밀번호도 함께). + + {{% /tab %}} + + {{% tab "Query Parameters" %}} + + * **인코딩 파라미터**: 인코딩이 필요한 쿼리 파라미터의 이름과 값을 추가합니다. + + {{% /tab %}} + + {{% tab "Request Body" %}} + + * **Body type**: HTTP 요청에 추가하려는 요청 본문 유형 (`application/json`, `application/octet-stream`, `application/x-www-form-urlencoded`, `multipart/form-data`, `text/html`, `text/plain`, `text/xml`, `GraphQL`, `None`)을 선택합니다. + * **Request body**: HTTP 요청 본문의 콘텐츠를 추가합니다. + * 요청 본문은 `application/json`, `application/x-www-form-urlencoded`, `text/html`, `text/plain`, `text/xml`, `GraphQL`에 대해 최대 50KB로 제한됩니다. + * 요청 본문은 `application/octet-stream`에 대해 3MB의 파일 1개로 제한됩니다. + * 요청 본문은 `multipart/form-data`에 대해 3MB의 파일 3개로 제한됩니다. + {{% /tab %}} + + {{% tab "Proxy" %}} + + * **Proxy URL**: HTTP 요청이 통과해야 하는 프록시의 URL을 지정합니다(`http://:@:`). + * **Proxy header**: 프록시에 대한 HTTP 요청에 포함할 헤더를 추가합니다. + + {{% /tab %}} + + {{% tab "Privacy" %}} + + * **Do not save response body**: 런타임 시 응답 본문이 저장되지 않도록 하려면 이 옵션을 선택합니다. 이는 테스트 결과에 민감한 데이터가 포함되지 않도록 하는 데 도움이 될 수 있습니다. 하지만 오류 발생시 문제 해결이 더 어려워질 수 있으므로 주의해서 사용하세요. 자세한 보안 권장 사항은 [Synthetic Monitoring Security][1]을 참조하세요. + + +[1]: /ko/data_security/synthetics + {{% /tab %}} + + {{% tab "Javascript" %}} + +JavaScript를 사용하여 HTTP API 테스트에 대한 변수를 정의합니다. + + {{< img src="synthetics/api_tests/http_javascript.png" alt="Javascript로 HTTP API 테스트 정의" style="width:90%;" >}} + + {{% /tab %}} + + {{< /tabs >}} + +### 어설션 정의 + +어설션은 예상되는 테스트 결과를 정의합니다. **Test URL**을 클릭하면 얻은 응답을 기반으로 `response time`, `status code`, `header`, `content-type`에 대한 기본 어설션이 추가됩니다. 모니터링할 테스트에 대한 어설션을 하나 이상 정의해야 합니다. + +| 유형 | 연산자 | 값 유형 | +|---------------|--------------------------------------------------------------------------------------------------------|----------------------------------------------------------------| +| 본문 | `contains`, `does not contain`, `is`, `is not`,
`matches`, `does not match`,
[`jsonpath`][4], [`xpath`][5] | _문자열_
_[정규식][6]_ | +| 헤더 | `contains`, `does not contain`, `is`, `is not`,
`matches`, `does not match` | _문자열_
_[정규식][6]_ | +| 응답 시간 | `is less than` | _정수 (ms)_ | +| 상태 코드 | `is`, `is not`,
`matches`, `does not match` | _정수_
_[정규식][6]_ | + +HTTP 테스트는 다음 `content-encoding` 헤더가 있는 본문의 압축을 풀 수 있습니다: `br`, `deflate`, `gzip`, `identity`. + +**신규 어서션**을 클릭하거나 응답 미리보기를 클릭하여 API 테스트당 최대 20개의 어서션을 생성할 수 있습니다. + +{{< img src="synthetics/api_tests/assertions_http.png" alt="HTTP 테스트의 성공 또는 실패에 대한 어설션을 정의합니다." style="width:90%;" >}} + +어설션에서 `OR` 로직을 수행하려면 `matches regex` 비교기를 사용하여 `(200|302)`와 같은 여러 예상 값이 있는 정규식을 정의합니다. 예를 들어, 서버가 `200` 또는 `302` 상태 코드로 응답해야 할 때 HTTP 테스트가 성공하기를 원할 수 있습니다. 상태 코드가 200 또는 302이면 `status code` 어설션은 성공합니다. `body` 또는 `header` 어설션에 `OR` 로직을 추가할 수도 있습니다. + +테스트에 응답 본문 어설션이 포함되어 있지 않으면 본문 페이로드가 삭제되고 Synthetics Worker가 설정한 제한 시간 내에서 요청 관련 응답 시간을 반환합니다. + +테스트에 응답 본문에 대한 어서션이 포함되어 있고 제한 시간에 도달하면, `Assertions on the body/response cannot be run beyond this limit` 오류가 나타납니다. + +### 위치 선택 + +HTTP 테스트를 실행할 **위치(Locations)**를 선택합니다. HTTP 테스트는 네트워크 외부 또는 내부에서 테스트를 실행하려는 사용자의 선호도에 따라 관리형 위치와 [프라이빗 위치][1] 모두에서 실행될 수 있습니다. + +{{% managed-locations %}} + +### 테스트 빈도 지정 + +HTTP 테스트는 다음과 같이 실행할 수 있습니다. + +* **일정에 따라** 가장 중요한 엔드포인트에 사용자가 항상 액세스할 수 있도록 합니다. Datadog이 HTTP 테스트를 실행할 빈도를 선택합니다. +* [**CI/CD 파이프라인 내에서**][2] 결함이 있는 코드가 고객 경험에 영향을 미칠 지에 대한 염려 없이 발송을 시작할 수 있습니다. +* **온디맨드**로 실행하면 팀에 가장 적합한 시간에 테스트를 실행할 수 있습니다. + +{{% synthetics-alerting-monitoring %}} + +## 원클릭 + +API 테스트 생성은 [API 카탈로그][17] 및 기존 API 테스트에서 엔드포인트를 제안하여 테스트 양식을 관련 옵션으로 미리 채웁니다. +애플리케이션 성능 모니터링(APM) 트레이스, API 카탈로그 엔드포인트 검색 및 사용자가 생성한 유사한 기존 신서틱(Synthetic) 테스트와 같은 기존 Datadog 데이터 소스를 사용합니다. + +API 테스트 **URL** 인풋값을 입력하여 신서틱(Synthetic) 모니터링에서 엔드포인트 제안 또는 유사한 테스트를 얻습니다. + + {{< img src="synthetics/api_tests/api-one-click.png" alt="기존 API 테스트에 대한 GET 검색을 표시하는 HTTP API 테스트" style="width:90%;" >}} + +그런 다음 테스트 미리 채우기 제안을 선택하여 설정 (요청 옵션 및 헤더, 인증 및 변수)을 작성합니다. + + {{< img src="synthetics/api_tests/api-test-monitor-search.png" alt="선택" style="width:90%;" >}} + +{{% synthetics-variables %}} + +### 변수 사용 + +HTTP 테스트의 URL, 고급 옵션 및 어설션에서 [**Settings** 페이지에 정의된 전역 변수][11]를 사용할 수 있습니다. + +변수 목록을 표시하려면 원하는 필드에서 `{{`을 입력하세요. + +{{< img src="synthetics/api_tests/http_use_variable.mp4" alt="HTTP 테스트에서 변수 사용" video="true" width="100%" >}} + +## 테스트 실패 + +하나 이상의 어서션을 충족하지 않거나 요청이 초기에 실패한 경우 테스트는 `FAILED`로 간주됩니다. 경우에 따라서는 엔드포인트 어서션 테스트 없이 해당 테스트가 실패할 수 있습니다. + +가장 일반적인 오류는 다음과 같습니다. + +`AUTHENTICATION_ERROR` +: 신서틱(Synthetic) 모니터링은 인증이 실패하면 자동으로 테스트 재시도를 비활성화합니다. 해당 안전 조치는 유효한 자격 증명으로 테스트를 업데이트할 때까지 유효합니다. 잘못된 알림을 생성하고 비용이 청구되는 사용량을 증가시키는 불필요한 테스트 실행을 방지할 수 있습니다. + +`CONNREFUSED` +: 대상 머신이 적극적으로 거부했기 때문에 연결할 수 없습니다. + +`CONNRESET` +: 원격 서버에 의해 연결이 갑자기 종료되었습니다. 가능한 원인으로는 웹 서버가 응답 도중 오류 또는 충돌이 발생하였거나 웹 서버의 연결이 끊어졌기 때문일 수 있습니다. + +`DNS` +: 테스트 URL의 DNS 항목을 찾을 수 없는 경우입니다. 가능한 원인으로는 테스트 URL이 잘못 설정되었거나 DNS 엔티티 설정이 잘못되었기 때문일 수 있습니다. + +`Error performing HTTP/2 request` +: 요청을 수행할 수 없습니다. 자세한 내용은 전용 [오류][16] 페이지를 참조하세요. + +`INVALID_REQUEST` +: 테스트 설정이 유효하지 않습니다(예: URL 오타). + +`SSL` +: SSL 연결을 수행할 수 없습니다. [자세한 내용은 전용 오류 페이지를 참조하세요][12]. + +`TIMEOUT` +: 요청을 적절한 시간 내에 완료할 수 없습니다. 두 가지 유형의 `TIMEOUT`이 발생할 수 있습니다: + - `TIMEOUT: The request couldn't be completed in a reasonable time.`는 요청 기간이 테스트에 정의된 시간 제한에 도달했음을 나타냅니다(기본값은 60초로 설정됨). + 각 요청에 대해 완료된 요청 단계만 네트워크 폭포에 표시됩니다. 예를 들어, `Total response time`만 표시되는 경우 DNS 확인 중에 시간 초과가 발생했습니다. + - `TIMEOUT: Overall test execution couldn't be completed in a reasonable time.`은 요청 및 어서션 실행 시간이 최대 실행 시간(60.5초)에 도달했음을 나타냅니다. + +`MALFORMED_RESPONSE` +: 원격 서버가 HTTP 사양을 준수하지 않는 페이로드로 응답했습니다. + +## 권한 + +기본적으로 [Datadog Admin 및 Datadog Standard 역할][13]을 가진 사용자만 Synthetic HTTP 테스트를 생성, 편집 및 삭제할 수 있습니다. Synthetic HTTP 테스트에 대한 생성, 편집 및 삭제 액세스 권한을 얻으려면 사용자를 두 가지 [기본 역할][13] 중 하나로 업그레이드하세요. + +[사용자 정의 역할 기능][14]을 사용하는 경우 `synthetics_read` 및 `synthetics_write` 권한이 포함된 사용자 정의 역할에 사용자를 추가합니다. + +### 액세스 제한 + +{{% synthetics_grace_permissions %}} + +## 참고 자료 + +{{< partial name="whats-next/whats-next.html" >}} + +[1]: /ko/synthetics/private_locations +[2]: /ko/synthetics/cicd_integrations +[3]: /ko/synthetics/search/#search +[4]: https://restfulapi.net/json-jsonpath/ +[5]: https://www.w3schools.com/xml/xpath_syntax.asp +[6]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions +[7]: /ko/monitors/notify/#configure-notifications-and-automations +[8]: https://www.markdownguide.org/basic-syntax/ +[9]: /ko/monitors/notify/?tab=is_recoveryis_alert_recovery#conditional-variables +[10]: /ko/synthetics/guide/synthetic-test-monitors +[11]: /ko/synthetics/settings/#global-variables +[12]: /ko/synthetics/api_tests/errors/#ssl-errors +[13]: /ko/account_management/rbac/ +[14]: /ko/account_management/rbac#custom-roles +[15]: /ko/account_management/rbac/#create-a-custom-role +[16]: /ko/synthetics/api_tests/errors/#http-errors +[17]: /ko/api_catalog \ No newline at end of file diff --git a/content/ko/synthetics/browser_tests/_index.md b/content/ko/synthetics/browser_tests/_index.md index d7e0be7f8ceda..d5b65ce0e3e4c 100644 --- a/content/ko/synthetics/browser_tests/_index.md +++ b/content/ko/synthetics/browser_tests/_index.md @@ -10,9 +10,9 @@ further_reading: - link: https://www.datadoghq.com/blog/test-creation-best-practices/ tag: 블로그 text: 엔드 투 엔드 테스트 생성 모범 사례 -- link: https://learn.datadoghq.com/courses/intro-to-synthetic-tests +- link: https://learn.datadoghq.com/courses/getting-started-with-synthetic-browser-testing tag: 학습 센터 - text: 신서틱(Synthetic) 테스트 사용 + text: 'Datadog 학습 센터: 신서틱 브라우저 테스팅 시작하기' - link: /getting_started/synthetics/browser_test tag: 설명서 text: 브라우저 테스트 시작하기 @@ -33,25 +33,52 @@ title: 브라우저 테스트 ## 테스트 설정 -브라우저 테스트의 설정을 정의합니다. +다음 옵션 중 하나를 사용하여 테스트를 생성할 수 있습니다. -1. **Starting URL** 입력: 브라우저 테스트가 시나리오를 시작하는 URL입니다. +- **템플릿에서 테스트 생성하기**: -
더 많은 옵션은 고급 옵션에서 확인하세요.
+ 1. 사전에 채워진 템플릿 중 하나에 마우스를 올리고 **템플릿 보기**를 클릭합니다. 테스트 세부 정보, 경고 조건, 단계, 옵션 변수가 포함된, 사전에 채워진 설정 정보가 표시되는 사이드 패널이 열립니다. + 2. **+테스트 생성하기**를 클릭하면 사전 입력된 설정 옵션을 검토하고 편집할 수 있는 설정 페이지가 열립니다. 표시되는 필드는 테스트 처음 생성 시 사용할 수 있는 필드와 동일합니다. + 3. 오른쪽 상단의 **저장 후 종료**를 클릭하여 브라우저 테스트를 제출합니다.

+ {{< img src="/synthetics/browser_tests/synthetics_templates_browser.mp4" alt="템플릿을 사용한 Synthetics 브라우저 테스트 랜딩 페이지 영상" video="true" >}} -2. **이름** 추가: 브라우저 테스트의 이름입니다. -3. **환경 및 추가 태그** 선택: 브라우저 테스트와 관련된 `env` 및 연관 태그를 설정합니다. `:` 형식으로 대상 ``의 ``을 필터링합니다. -4. **브라우저 및 기기** 선택: 테스트를 실행할 브라우저(예: `Chrome`, `Firefox`, `Edge`)와 기기(예: `Laptop Large`, `Tablet`, `Mobile Small`)를 선택합니다. - - 대형 노트북의 경우 크기는 1440 픽셀 x 1100 픽셀입니다. - - 태블릿 기기의 경우 크기는 768 픽셀 x 1020 픽셀입니다. - - 소형 모바일 기기의 경우 크기는 320 픽셀 x 550 픽셀입니다. -5. **관리 및 프라이빗 위치** 선택: Datadog이 관리하는 전 세계의 위치를 선택하거나 [프라이빗 위치][1]를 생성하여, 사용자 설정 위치 또는 내부 프라이빗 네트워크에서 브라우저 테스트를 실행합니다. +- **테스트 처음부터 빌드하기**: - {{% managed-locations %}} + 1. 새 브라우저 테스트를 처음부터 시작하려면 **+** 템플릿을 클릭합니다. + 1. **Starting URL** 입력: 브라우저 테스트가 시나리오를 시작하는 URL입니다. + 1. **이름** 추가: 브라우저 테스트의 이름입니다. + 1. **환경 및 추가 태그** 선택: 브라우저 테스트와 관련된 `env` 및 연관 태그를 설정합니다. `:` 형식으로 대상 ``의 ``을 필터링합니다. - 또한 [Continuous Testing Tunnel][2]을 통해 로컬 개발 설정 또는 CI/CD 파이프라인에서 테스트를 트리거하여 내부 환경을 테스트할 수도 있습니다. +
더 많은 옵션은 고급 옵션에서 확인하세요.
-6. **테스트 주기** 설정: 주기는 매 5분마다부터 일주일에 한 번까지 다양하게 설정할 수 있습니다. 1분 주기로 테스트해야 하는 경우 [지원 팀에 문의][3]하세요. + 1. **브라우저 및 기기** 선택: 테스트를 실행할 브라우저(예: `Chrome`, `Firefox`, `Edge`)와 기기(예: `Laptop Large`, `Tablet`, `Mobile Small`)를 선택합니다. + + - 대형 노트북의 경우 크기는 1440 픽셀 x 1100 픽셀입니다. + - 태블릿 기기의 경우 크기는 768 픽셀 x 1020 픽셀입니다. + - 소형 모바일 기기의 경우 크기는 320 픽셀 x 550 픽셀입니다. + + 1. **관리 및 프라이빗 위치** 선택: Datadog이 관리하는 전 세계 위치 목록에서 선택하거나 [프라이빗 위치][1]를 생성하여, 사용자 설정 위치 또는 내부 프라이빗 네트워크에서 브라우저 테스트를 실행합니다.

+ + {{% managed-locations %}} + + 또한 [Continuous Testing Tunnel][2]을 통해 로컬 개발 설정 또는 CI/CD 파이프라인에서 테스트를 트리거하여 내부 환경을 테스트할 수도 있습니다.

+ + 6. **테스트 주기** 설정: 주기는 매 5분마다부터 일주일에 한 번까지 다양하게 설정할 수 있습니다. 1분 주기로 테스트해야 하는 경우 [지원 팀에 문의][3]하세요. + 7. 브라우저 테스트를 제출하려면 **레코딩 저장 및 편집**을 클릭합니다. + +### Snippets + +신서틱 모니터링 브라우저 테스트를 설정할 때 수동으로 옵션을 선택하지말고 코드 조각을 사용해 자동으로 디바이스와 리전 필드를 채우세요. 다음 코드 조각을 사용할 수 있습니다. + +* **화면 크기**: 브라우저 전체에서 특정 화면 크기에서 자동으로 브라우저를 테스트합니다. + * **Large** + * **Tablet** + * **Mobile** + +* **Multi-region check**: 세계의 주요 리전에서 자동으로 웹사이트를 테스트합니다(AMER, APAC, EMEA). +

+ + {{< img src="synthetics/browser_tests/browser_snippets_2.png" alt="브라우저 테스트 생성 좌측 스크린샷, 코드 조각 예시가 표시되어 있음" width="70%" >}} ### 고급 옵션 @@ -126,11 +153,11 @@ title: 브라우저 테스트 - 브라우저 테스트 세부 정보에서: 원하는 필드에 `{{`을 입력합니다. - {{< img src="synthetics/browser_tests/recording_global_variable_1.mp4" alt="전역 변수에서 지역 변수 정의" video="true" width="90%" >}} + {{< img src="synthetics/browser_tests/use_global_variables_1.mp4" alt="전역 변수에서 로컬 변수 정의" video="true" width="90%" >}} - 브라우저 테스트의 레코더에서: 테스트에서 변수를 내보낸 다음 원하는 필드에 `{{`을 입력하거나 애플리케이션에 변수를 삽입하여 사용합니다. - {{< img src="synthetics/browser_tests/recording_inject_variable_1.mp4" alt="브라우저 기록 도중 필드에 지역 변수 삽입하기" video="true" width="90%" >}} + {{< img src="synthetics/browser_tests/use_global_variables_2.mp4" alt="브라우저 레코딩하는 동안 필드에 로컬 변수 삽입" video="true" width="90%" >}} 브라우저 테스트 기록 시 변수 활용 방법을 알아보려면 [브라우저 테스트 단계][5]를 참고하세요. @@ -151,7 +178,7 @@ title: 브라우저 테스트 | 조건 변수 | 설명 | |----------------------------|---------------------------------------------------------------------| - | `{{#is_alert}}` | 모니터가 경고할 때 표시합니다. | + | `{{#is_alert}}` | 모니터가 경고할 때 표시됩니다. | | `{{^is_alert}}` | 모니터가 경고하지 않는 한 표시됩니다. | | `{{#is_recovery}}` | 모니터가 `alert`로부터 복구된 시점을 표시합니다. | | `{{^is_recovery}}` | 모니터가 `alert`에서 복구되지 않으면 표시됩니다. | @@ -194,11 +221,24 @@ title: 브라우저 테스트 ### 액세스 제한 -[커스텀 역할][16]으로 설정된 계정 고객의 경우 액세스 제한이 가능합니다. +[액세스 컨트롤 세분화][17]을 사용해 테스트 기반 역할, 팀, 개인 사용자 액세스 제한: + +1. 형식의 권한 섹션을 엽니다. +2. **Edit Access**를 클릭합니다. + {{< img src="synthetics/settings/grace_2.png" alt="프라이빗 위치 구성 형식에서 권한 설정" style="width:100%;" >}} +3. **Restrict Access**을 클릭하세요. +4. 팀, 역할, 사용자를 선택합니다. +5. **Add**를 클릭합니다. +6. 각 역할에 연결하려는 액세스 수준을 선택합니다. +7. **Done**을 클릭합니다. -조직의 역할에 따라 브라우저 테스트에 대한 액세스를 제한할 수 있습니다. 브라우저 테스트를 생성할 때 사용자 외에 테스트를 읽고 쓸 수 있는 역할을 선택합니다. +
참고: 해당 프라이빗 위치에 보기 액세스 없이도 프라이빗 위치에서 결과를 볼 수 있습니다.
-{{< img src="synthetics/settings/restrict_access_1.png" alt="테스트에 대한 권한 설정" style="width:70%;" >}} +| 액세스 수준 | 테스트 구성 보기 | 테스트 구성 편집 | 테스트 결과 보기 | 테스트 실행 | 레코딩 보기 | 레코딩 편집 | +| ------------ | ----------------------- | ----------------------- | ------------------| --------- | -------------- | -------------- | +| 액세스 없음 | | | | | | | +| 뷰어 | {{< X >}} | | {{< X >}} | | | | +| 편집기 | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | {{< X >}} | ## 참고 자료 @@ -219,4 +259,5 @@ title: 브라우저 테스트 [13]: /ko/synthetics/guide/explore-rum-through-synthetics/ [14]: /ko/synthetics/browser_tests/actions/ [15]: /ko/account_management/rbac#custom-roles -[16]: /ko/account_management/rbac/#create-a-custom-role \ No newline at end of file +[16]: /ko/account_management/rbac/#create-a-custom-role +[17]: /ko/account_management/rbac/granular_access \ No newline at end of file diff --git a/data/api/v1/full_spec.yaml b/data/api/v1/full_spec.yaml index 77b602a9c7c42..773f5c10aa8ac 100644 --- a/data/api/v1/full_spec.yaml +++ b/data/api/v1/full_spec.yaml @@ -6033,6 +6033,9 @@ components: Make sure to use an application key created by an admin.' properties: + description: + description: A description of the pipeline. + type: string filter: $ref: '#/components/schemas/LogsFilter' id: @@ -6055,6 +6058,12 @@ components: items: $ref: '#/components/schemas/LogsProcessor' type: array + tags: + description: A list of tags associated with the pipeline. + items: + description: A single tag using the format `key:value`. + type: string + type: array type: description: Type of pipeline. example: pipeline @@ -7996,9 +8005,10 @@ components: be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) and are located in the `data.id` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of - the monitor for any amount of time. `restricted_roles` is the successor - of `locked`. For more information about `locked` and `restricted_roles`, - see the [monitor options docs](https://docs.datadoghq.com/monitors/guide/monitor_api_options/#permissions-options). + the monitor for any amount of time. You can use the [Restriction Policies + API](https://docs.datadoghq.com/api/latest/restriction-policies/) to manage + write authorization for individual monitors by teams and users, in addition + to roles. items: description: A role UUID. type: string @@ -22842,6 +22852,7 @@ components: Version: description: Version of the updated signal. If server side version is higher, update will be rejected. + example: 0 format: int64 type: integer WebhooksIntegration: @@ -23974,6 +23985,10 @@ components: security_monitoring_filters_write: Create, edit, and delete Security Filters. security_monitoring_findings_read: View a list of findings that include both misconfigurations and identity risks. + security_monitoring_notification_profiles_read: View Rule Security Notification + rules. + security_monitoring_notification_profiles_write: Create, edit, and delete + Security Notification rules. security_monitoring_rules_read: Read Detection Rules. security_monitoring_rules_write: Create and edit Detection Rules. security_monitoring_signals_read: View Security Signals. @@ -24040,8 +24055,6 @@ components: x-auth-id-alias: appKeyAuth x-env-name: DD_APP_KEY bearerAuth: - in: header - name: Authorization scheme: bearer type: http x-env-name: DD_BEARER_TOKEN @@ -29407,8 +29420,9 @@ paths: - Logs Indexes x-menu-order: 5 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe put: @@ -29486,8 +29500,9 @@ paths: - Logs Indexes x-menu-order: 1 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe post: @@ -29572,6 +29587,10 @@ paths: tags: - Logs Indexes x-menu-order: 2 + x-permission: + operator: OR + permissions: + - logs_read_config x-undo: type: safe put: @@ -29652,8 +29671,9 @@ paths: - Logs Pipelines x-menu-order: 1 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe put: @@ -29740,8 +29760,9 @@ paths: - Logs Pipelines x-menu-order: 3 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe post: @@ -29868,8 +29889,9 @@ paths: - Logs Pipelines x-menu-order: 5 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe put: @@ -38661,10 +38683,7 @@ tags: - description: Search your logs and send them to your Datadog platform over HTTP. See the [Log Management page](https://docs.datadoghq.com/logs/) for more information. name: Logs -- description: 'Manage configuration of [log indexes](https://docs.datadoghq.com/logs/indexes/). - - You need an API and non-scoped application key with Admin rights to interact with - these endpoints.' +- description: Manage configuration of [log indexes](https://docs.datadoghq.com/logs/indexes/). externalDocs: description: Find out more at url: https://docs.datadoghq.com/logs/indexes/ @@ -38674,14 +38693,12 @@ tags: page](https://app.datadoghq.com/logs/pipelines)\n for a list of the pipelines and processors currently configured in web UI.\n\n- Additional API-related information about processors can be found in the\n [processors documentation](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=api#lookup-processor).\n\n- - For more information about Pipelines, see the\n [pipeline documentation](https://docs.datadoghq.com/logs/log_configuration/pipelines).\n\n**Notes:**\n\nThese - endpoints are only available for admin users.\nMake sure to use an application - key created by an admin with no applied scopes.\n\n**Grok parsing rules may effect - JSON output and require\nreturned data to be configured before using in a request.**\nFor - example, if you are using the data returned from a\nrequest for another request - body, and have a parsing rule\nthat uses a regex pattern like `\\s` for spaces, - you will\nneed to configure all escaped spaces as `%{space}` to use\nin the body - data." + For more information about Pipelines, see the\n [pipeline documentation](https://docs.datadoghq.com/logs/log_configuration/pipelines).\n\n**Notes:**\n\n**Grok + parsing rules may effect JSON output and require\nreturned data to be configured + before using in a request.**\nFor example, if you are using the data returned + from a\nrequest for another request body, and have a parsing rule\nthat uses a + regex pattern like `\\s` for spaces, you will\nneed to configure all escaped spaces + as `%{space}` to use\nin the body data." externalDocs: description: Find out more at url: https://docs.datadoghq.com/logs/log_configuration diff --git a/data/api/v1/full_spec_deref.json b/data/api/v1/full_spec_deref.json index c50957097c69e..dfb5d82ca6149 100644 --- a/data/api/v1/full_spec_deref.json +++ b/data/api/v1/full_spec_deref.json @@ -924,6 +924,7 @@ }, "version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" } @@ -143292,6 +143293,10 @@ "LogsPipeline": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -144173,6 +144178,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -144190,6 +144203,10 @@ "items": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -145071,6 +145088,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -152725,7 +152750,7 @@ "type": "string" }, "restricted_roles": { - "description": "A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) and are located in the `data.id` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. `restricted_roles` is the successor of `locked`. For more information about `locked` and `restricted_roles`, see the [monitor options docs](https://docs.datadoghq.com/monitors/guide/monitor_api_options/#permissions-options).", + "description": "A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) and are located in the `data.id` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. You can use the [Restriction Policies API](https://docs.datadoghq.com/api/latest/restriction-policies/) to manage write authorization for individual monitors by teams and users, in addition to roles.", "items": { "description": "A role UUID.", "type": "string" @@ -438096,6 +438121,7 @@ }, "version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" } @@ -438151,6 +438177,7 @@ }, "version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" } @@ -558080,6 +558107,7 @@ }, "Version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" }, @@ -667992,6 +668020,8 @@ "security_monitoring_filters_read": "Read Security Filters.", "security_monitoring_filters_write": "Create, edit, and delete Security Filters.", "security_monitoring_findings_read": "View a list of findings that include both misconfigurations and identity risks.", + "security_monitoring_notification_profiles_read": "View Rule Security Notification rules.", + "security_monitoring_notification_profiles_write": "Create, edit, and delete Security Notification rules.", "security_monitoring_rules_read": "Read Detection Rules.", "security_monitoring_rules_write": "Create and edit Detection Rules.", "security_monitoring_signals_read": "View Security Signals.", @@ -668056,8 +668086,6 @@ "x-env-name": "DD_APP_KEY" }, "bearerAuth": { - "in": "header", - "name": "Authorization", "scheme": "bearer", "type": "http", "x-env-name": "DD_BEARER_TOKEN" @@ -963787,8 +963815,10 @@ ], "x-menu-order": 5, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -964173,8 +964203,10 @@ ], "x-menu-order": 1, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -964772,6 +964804,12 @@ "Logs Indexes" ], "x-menu-order": 2, + "x-permission": { + "operator": "OR", + "permissions": [ + "logs_read_config" + ] + }, "x-undo": { "type": "safe" } @@ -965232,8 +965270,10 @@ ], "x-menu-order": 1, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -965453,6 +965493,10 @@ "items": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -966334,6 +966378,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -966415,8 +966467,10 @@ ], "x-menu-order": 3, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -966431,6 +966485,10 @@ "schema": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -967312,6 +967370,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -967336,6 +967402,10 @@ "schema": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -968217,6 +968287,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -968490,6 +968568,10 @@ "schema": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -969371,6 +969453,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -969482,8 +969572,10 @@ ], "x-menu-order": 5, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -969509,6 +969601,10 @@ "schema": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -970390,6 +970486,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -970414,6 +970518,10 @@ "schema": { "description": "Pipelines and processors operate on incoming logs,\nparsing and transforming them into structured attributes for easier querying.\n\n**Note**: These endpoints are only available for admin users.\nMake sure to use an application key created by an admin.", "properties": { + "description": { + "description": "A description of the pipeline.", + "type": "string" + }, "filter": { "description": "Filter for logs.", "properties": { @@ -971295,6 +971403,14 @@ }, "type": "array" }, + "tags": { + "description": "A list of tags associated with the pipeline.", + "items": { + "description": "A single tag using the format `key:value`.", + "type": "string" + }, + "type": "array" + }, "type": { "description": "Type of pipeline.", "example": "pipeline", @@ -979397,7 +979513,7 @@ "type": "string" }, "restricted_roles": { - "description": "A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) and are located in the `data.id` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. `restricted_roles` is the successor of `locked`. For more information about `locked` and `restricted_roles`, see the [monitor options docs](https://docs.datadoghq.com/monitors/guide/monitor_api_options/#permissions-options).", + "description": "A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the [Roles API](https://docs.datadoghq.com/api/latest/roles/#list-roles) and are located in the `data.id` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. You can use the [Restriction Policies API](https://docs.datadoghq.com/api/latest/restriction-policies/) to manage write authorization for individual monitors by teams and users, in addition to roles.", "items": { "description": "A role UUID.", "type": "string" @@ -1063206,6 +1063322,7 @@ }, "version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" } @@ -1063396,6 +1063513,7 @@ }, "version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" } @@ -1063622,6 +1063740,7 @@ }, "version": { "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "example": 0, "format": "int64", "type": "integer" } @@ -1139279,7 +1139398,7 @@ "name": "Logs" }, { - "description": "Manage configuration of [log indexes](https://docs.datadoghq.com/logs/indexes/).\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints.", + "description": "Manage configuration of [log indexes](https://docs.datadoghq.com/logs/indexes/).", "externalDocs": { "description": "Find out more at", "url": "https://docs.datadoghq.com/logs/indexes/" @@ -1139287,7 +1139406,7 @@ "name": "Logs Indexes" }, { - "description": "Pipelines and processors operate on incoming logs, parsing\nand transforming them into structured attributes for easier querying.\n\n- See the [pipelines configuration page](https://app.datadoghq.com/logs/pipelines)\n for a list of the pipelines and processors currently configured in web UI.\n\n- Additional API-related information about processors can be found in the\n [processors documentation](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=api#lookup-processor).\n\n- For more information about Pipelines, see the\n [pipeline documentation](https://docs.datadoghq.com/logs/log_configuration/pipelines).\n\n**Notes:**\n\nThese endpoints are only available for admin users.\nMake sure to use an application key created by an admin with no applied scopes.\n\n**Grok parsing rules may effect JSON output and require\nreturned data to be configured before using in a request.**\nFor example, if you are using the data returned from a\nrequest for another request body, and have a parsing rule\nthat uses a regex pattern like `\\s` for spaces, you will\nneed to configure all escaped spaces as `%{space}` to use\nin the body data.", + "description": "Pipelines and processors operate on incoming logs, parsing\nand transforming them into structured attributes for easier querying.\n\n- See the [pipelines configuration page](https://app.datadoghq.com/logs/pipelines)\n for a list of the pipelines and processors currently configured in web UI.\n\n- Additional API-related information about processors can be found in the\n [processors documentation](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=api#lookup-processor).\n\n- For more information about Pipelines, see the\n [pipeline documentation](https://docs.datadoghq.com/logs/log_configuration/pipelines).\n\n**Notes:**\n\n**Grok parsing rules may effect JSON output and require\nreturned data to be configured before using in a request.**\nFor example, if you are using the data returned from a\nrequest for another request body, and have a parsing rule\nthat uses a regex pattern like `\\s` for spaces, you will\nneed to configure all escaped spaces as `%{space}` to use\nin the body data.", "externalDocs": { "description": "Find out more at", "url": "https://docs.datadoghq.com/logs/log_configuration" diff --git a/data/api/v1/translate_tags.json b/data/api/v1/translate_tags.json index 806e37f162823..6908475107825 100644 --- a/data/api/v1/translate_tags.json +++ b/data/api/v1/translate_tags.json @@ -57,11 +57,11 @@ }, "logs-indexes": { "name": "Logs Indexes", - "description": "Manage configuration of [log indexes](https://docs.datadoghq.com/logs/indexes/).\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints." + "description": "Manage configuration of [log indexes](https://docs.datadoghq.com/logs/indexes/)." }, "logs-pipelines": { "name": "Logs Pipelines", - "description": "Pipelines and processors operate on incoming logs, parsing\nand transforming them into structured attributes for easier querying.\n\n- See the [pipelines configuration page](https://app.datadoghq.com/logs/pipelines)\n for a list of the pipelines and processors currently configured in web UI.\n\n- Additional API-related information about processors can be found in the\n [processors documentation](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=api#lookup-processor).\n\n- For more information about Pipelines, see the\n [pipeline documentation](https://docs.datadoghq.com/logs/log_configuration/pipelines).\n\n**Notes:**\n\nThese endpoints are only available for admin users.\nMake sure to use an application key created by an admin with no applied scopes.\n\n**Grok parsing rules may effect JSON output and require\nreturned data to be configured before using in a request.**\nFor example, if you are using the data returned from a\nrequest for another request body, and have a parsing rule\nthat uses a regex pattern like `\\s` for spaces, you will\nneed to configure all escaped spaces as `%{space}` to use\nin the body data." + "description": "Pipelines and processors operate on incoming logs, parsing\nand transforming them into structured attributes for easier querying.\n\n- See the [pipelines configuration page](https://app.datadoghq.com/logs/pipelines)\n for a list of the pipelines and processors currently configured in web UI.\n\n- Additional API-related information about processors can be found in the\n [processors documentation](https://docs.datadoghq.com/logs/log_configuration/processors/?tab=api#lookup-processor).\n\n- For more information about Pipelines, see the\n [pipeline documentation](https://docs.datadoghq.com/logs/log_configuration/pipelines).\n\n**Notes:**\n\n**Grok parsing rules may effect JSON output and require\nreturned data to be configured before using in a request.**\nFor example, if you are using the data returned from a\nrequest for another request body, and have a parsing rule\nthat uses a regex pattern like `\\s` for spaces, you will\nneed to configure all escaped spaces as `%{space}` to use\nin the body data." }, "metrics": { "name": "Metrics", diff --git a/data/api/v2/CodeExamples.json b/data/api/v2/CodeExamples.json index 2a51a642b1825..d9709de11928f 100644 --- a/data/api/v2/CodeExamples.json +++ b/data/api/v2/CodeExamples.json @@ -55,21 +55,21 @@ ], "CreateApp": [ { - "group": "apps", + "group": "app_builder", "suffix": "", - "description": "Create App returns \"App Created\" response" + "description": "Create App returns \"Created\" response" } ], "DeleteApps": [ { - "group": "apps", + "group": "app_builder", "suffix": "", "description": "Delete Multiple Apps returns \"OK\" response" } ], "UpdateApp": [ { - "group": "apps", + "group": "app_builder", "suffix": "", "description": "Update App returns \"OK\" response" } @@ -972,6 +972,20 @@ "description": "Create a detection rule with type 'workload_security' returns \"OK\" response" } ], + "CreateSignalNotificationRule": [ + { + "group": "security_monitoring", + "suffix": "", + "description": "Create a new signal-based rule returns \"Successfully created the notification rule.\" response" + } + ], + "CreateVulnerabilityNotificationRule": [ + { + "group": "security_monitoring", + "suffix": "", + "description": "Create a new vulnerability-based rule returns \"Successfully created the notification rule.\" response" + } + ], "CreateSecurityFilter": [ { "group": "security_monitoring", @@ -1012,6 +1026,20 @@ "description": "Mute or unmute a batch of findings returns \"OK\" response" } ], + "PatchSignalNotificationRule": [ + { + "group": "security_monitoring", + "suffix": "", + "description": "Patch a signal-based rule returns \"Notification rule successfully patched.\" response" + } + ], + "PatchVulnerabilityNotificationRule": [ + { + "group": "security_monitoring", + "suffix": "", + "description": "Patch a vulnerability-based rule returns \"Notification rule successfully patched.\" response" + } + ], "RunHistoricalJob": [ { "group": "security_monitoring", diff --git a/data/api/v2/full_spec.yaml b/data/api/v2/full_spec.yaml index 19d79428798ee..d7f49e4fcb991 100644 --- a/data/api/v2/full_spec.yaml +++ b/data/api/v2/full_spec.yaml @@ -813,6 +813,17 @@ components: schema: $ref: '#/components/schemas/APIErrorResponse' description: Not Found + NotificationRulesList: + content: + application/json: + schema: + properties: + data: + items: + $ref: '#/components/schemas/NotificationRule' + type: array + type: object + description: The list of notification rules. PreconditionFailedResponse: content: application/json: @@ -855,6 +866,13 @@ components: schema: $ref: '#/components/schemas/APIErrorResponse' description: Unauthorized + UnprocessableEntityResponse: + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: The server cannot process the request because it contains invalid + data. schemas: APIErrorResponse: description: API error response. @@ -1831,6 +1849,135 @@ components: type: string x-enum-varnames: - apm_retention_filter + AppBuilderEvent: + additionalProperties: {} + description: An event on a UI component that triggers a response or action in + an app. + properties: + name: + $ref: '#/components/schemas/AppBuilderEventName' + type: + $ref: '#/components/schemas/AppBuilderEventType' + type: object + AppBuilderEventName: + description: The triggering action for the event. + enum: + - pageChange + - tableRowClick + - _tableRowButtonClick + - change + - submit + - click + - toggleOpen + - close + - open + - executionFinished + example: click + type: string + x-enum-varnames: + - PAGECHANGE + - TABLEROWCLICK + - TABLEROWBUTTONCLICK + - CHANGE + - SUBMIT + - CLICK + - TOGGLEOPEN + - CLOSE + - OPEN + - EXECUTIONFINISHED + AppBuilderEventType: + description: The response to the event. + enum: + - custom + - setComponentState + - triggerQuery + - openModal + - closeModal + - openUrl + - downloadFile + - setStateVariableValue + example: triggerQuery + type: string + x-enum-varnames: + - CUSTOM + - SETCOMPONENTSTATE + - TRIGGERQUERY + - OPENMODAL + - CLOSEMODAL + - OPENURL + - DOWNLOADFILE + - SETSTATEVARIABLEVALUE + AppDefinitionType: + default: appDefinitions + description: The app definition type. + enum: + - appDefinitions + example: appDefinitions + type: string + x-enum-varnames: + - APPDEFINITIONS + AppDeploymentType: + default: deployment + description: The deployment type. + enum: + - deployment + example: deployment + type: string + x-enum-varnames: + - DEPLOYMENT + AppMeta: + description: Metadata of an app. + properties: + created_at: + description: Timestamp of when the app was created. + format: date-time + type: string + deleted_at: + description: Timestamp of when the app was deleted. + format: date-time + type: string + org_id: + description: The Datadog organization ID that owns the app. + format: int64 + type: integer + updated_at: + description: Timestamp of when the app was last updated. + format: date-time + type: string + updated_since_deployment: + description: Whether the app was updated since it was last published. Published + apps are pinned to a specific version and do not automatically update + when the app is updated. + type: boolean + user_id: + description: The ID of the user who created the app. + format: int64 + type: integer + user_name: + description: The name (or email address) of the user who created the app. + type: string + user_uuid: + description: The UUID of the user who created the app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + version: + description: The version number of the app. This starts at 1 and increments + with each update. + format: int64 + type: integer + type: object + AppRelationship: + description: The app's publication relationship and custom connections. + properties: + connections: + description: Array of custom connections used by the app. + items: + $ref: '#/components/schemas/CustomConnection' + type: array + deployment: + $ref: '#/components/schemas/DeploymentRelationship' + type: object ApplicationKeyCreateAttributes: description: Attributes used to create an application Key. properties: @@ -1992,6 +2139,28 @@ components: type: string x-enum-varnames: - APPLICATION_KEYS + AppsSortField: + description: The field and direction to sort apps by + enum: + - name + - created_at + - updated_at + - user_name + - -name + - -created_at + - -updated_at + - -user_name + example: -created_at + type: string + x-enum-varnames: + - NAME + - CREATED_AT + - UPDATED_AT + - USER_NAME + - NAME_DESC + - CREATED_AT_DESC + - UPDATED_AT_DESC + - USER_NAME_DESC Asset: description: A single vulnerable asset properties: @@ -5994,6 +6163,160 @@ components: required: - location type: object + Component: + description: '[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)' + properties: + events: + description: Events to listen for on the UI component. + items: + $ref: '#/components/schemas/AppBuilderEvent' + type: array + id: + description: The ID of the UI component. This property is deprecated; use + `name` to identify individual components instead. + nullable: true + type: string + name: + description: A unique identifier for this UI component. This name is also + visible in the app editor. + example: '' + type: string + properties: + $ref: '#/components/schemas/ComponentProperties' + type: + $ref: '#/components/schemas/ComponentType' + required: + - name + - type + - properties + type: object + ComponentGrid: + description: A grid component. The grid component is the root canvas for an + app and contains all other components. + properties: + events: + description: Events to listen for on the grid component. + items: + $ref: '#/components/schemas/AppBuilderEvent' + type: array + id: + description: The ID of the grid component. This property is deprecated; + use `name` to identify individual components instead. + type: string + name: + description: A unique identifier for this grid component. This name is also + visible in the app editor. + example: '' + type: string + properties: + $ref: '#/components/schemas/ComponentGridProperties' + type: + $ref: '#/components/schemas/ComponentGridType' + required: + - name + - type + - properties + type: object + ComponentGridProperties: + description: Properties of a grid component. + properties: + backgroundColor: + default: default + description: The background color of the grid. + type: string + children: + description: The child components of the grid. + items: + $ref: '#/components/schemas/Component' + type: array + isVisible: + $ref: '#/components/schemas/ComponentGridPropertiesIsVisible' + type: object + ComponentGridPropertiesIsVisible: + description: Whether the grid component and its children are visible. If a string, + it must be a valid JavaScript expression that evaluates to a boolean. + oneOf: + - type: string + - default: true + type: boolean + ComponentGridType: + default: grid + description: The grid component type. + enum: + - grid + example: grid + type: string + x-enum-varnames: + - GRID + ComponentProperties: + additionalProperties: {} + description: Properties of a UI component. Different component types can have + their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) + for more detail on each component type and its properties. + properties: + children: + description: The child components of the UI component. + items: + $ref: '#/components/schemas/Component' + type: array + isVisible: + $ref: '#/components/schemas/ComponentPropertiesIsVisible' + type: object + ComponentPropertiesIsVisible: + description: Whether the UI component is visible. If this is a string, it must + be a valid JavaScript expression that evaluates to a boolean. + oneOf: + - type: boolean + - description: If this is a string, it must be a valid JavaScript expression + that evaluates to a boolean. + example: ${true} + type: string + ComponentType: + description: The UI component type. + enum: + - table + - textInput + - textArea + - button + - text + - select + - modal + - schemaForm + - checkbox + - tabs + - vegaChart + - radioButtons + - numberInput + - fileInput + - jsonInput + - gridCell + - dateRangePicker + - search + - container + - calloutValue + example: text + type: string + x-enum-varnames: + - TABLE + - TEXTINPUT + - TEXTAREA + - BUTTON + - TEXT + - SELECT + - MODAL + - SCHEMAFORM + - CHECKBOX + - TABS + - VEGACHART + - RADIOBUTTONS + - NUMBERINPUT + - FILEINPUT + - JSONINPUT + - GRIDCELL + - DATERANGEPICKER + - SEARCH + - CONTAINER + - CALLOUTVALUE ConfluentAccountCreateRequest: description: Payload schema when adding a Confluent account. properties: @@ -7019,6 +7342,151 @@ components: data: $ref: '#/components/schemas/ActionConnectionData' type: object + CreateAppRequest: + description: A request object for creating a new app. + example: + data: + attributes: + components: + - events: [] + name: grid0 + properties: + children: + - events: [] + name: gridCell0 + properties: + children: + - events: [] + name: calloutValue0 + properties: + isDisabled: false + isLoading: false + isVisible: true + label: CPU Usage + size: sm + style: vivid_yellow + unit: kB + value: '42' + type: calloutValue + isVisible: 'true' + layout: + default: + height: 8 + width: 2 + x: 0 + y: 0 + type: gridCell + type: grid + description: This is a simple example app + embeddedQueries: [] + name: Example App + rootInstanceName: grid0 + type: appDefinitions + properties: + data: + $ref: '#/components/schemas/CreateAppRequestData' + type: object + CreateAppRequestData: + description: The data object containing the app definition. + properties: + attributes: + $ref: '#/components/schemas/CreateAppRequestDataAttributes' + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - type + type: object + CreateAppRequestDataAttributes: + description: App definition attributes such as name, description, and components. + properties: + components: + description: The UI components that make up the app. + items: + $ref: '#/components/schemas/ComponentGrid' + type: array + description: + description: A human-readable description for the app. + type: string + embeddedQueries: + description: An array of queries, such as external actions and state variables, + that the app uses. + items: + $ref: '#/components/schemas/Query' + type: array + name: + description: The name of the app. + type: string + rootInstanceName: + description: The name of the root component of the app. This must be a `grid` + component that contains all other components. + type: string + tags: + description: A list of tags for the app, which can be used to filter apps. + example: + - service:webshop-backend + - team:webshop + items: + description: An individual tag for the app. + type: string + type: array + type: object + CreateAppResponse: + description: The response object after a new app is successfully created, with + the app ID. + properties: + data: + $ref: '#/components/schemas/CreateAppResponseData' + type: object + CreateAppResponseData: + description: The data object containing the app ID. + properties: + id: + description: The ID of the created app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + type: object + CreateNotificationRuleParameters: + description: Body of the notification rule create request. + properties: + data: + $ref: '#/components/schemas/CreateNotificationRuleParametersData' + type: object + CreateNotificationRuleParametersData: + description: 'Data of the notification rule create request: the rule type, and + the rule attributes. All fields are required.' + properties: + attributes: + $ref: '#/components/schemas/CreateNotificationRuleParametersDataAttributes' + type: + $ref: '#/components/schemas/NotificationRulesType' + required: + - attributes + - type + type: object + CreateNotificationRuleParametersDataAttributes: + description: Attributes of the notification rule create request. + properties: + enabled: + $ref: '#/components/schemas/Enabled' + name: + $ref: '#/components/schemas/RuleName' + selectors: + $ref: '#/components/schemas/Selectors' + targets: + $ref: '#/components/schemas/Targets' + time_aggregation: + $ref: '#/components/schemas/TimeAggregation' + required: + - selectors + - name + - targets + type: object CreateOpenAPIResponse: description: Response for `CreateOpenAPI` operation. properties: @@ -7312,6 +7780,48 @@ components: data: $ref: '#/components/schemas/CsmServerlessCoverageAnalysisData' type: object + CustomConnection: + description: A custom connection used by an app. + properties: + attributes: + $ref: '#/components/schemas/CustomConnectionAttributes' + id: + description: The ID of the custom connection. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/CustomConnectionType' + type: object + CustomConnectionAttributes: + description: The custom connection attributes. + properties: + name: + description: The name of the custom connection. + type: string + onPremRunner: + $ref: '#/components/schemas/CustomConnectionAttributesOnPremRunner' + type: object + CustomConnectionAttributesOnPremRunner: + description: Information about the Private Action Runner used by the custom + connection, if the custom connection is associated with a Private Action Runner. + properties: + id: + description: The Private Action Runner ID. + type: string + url: + description: The URL of the Private Action Runner. + type: string + type: object + CustomConnectionType: + default: custom_connections + description: The custom connection type. + enum: + - custom_connections + example: custom_connections + type: string + x-enum-varnames: + - CUSTOM_CONNECTIONS CustomCostGetResponseMeta: description: Meta for the response from the Get Custom Costs endpoints. properties: @@ -8557,6 +9067,85 @@ components: type: number type: array type: object + Date: + description: Date as Unix timestamp in milliseconds. + example: 1722439510282 + format: int64 + type: integer + DeleteAppResponse: + description: The response object after an app is successfully deleted. + properties: + data: + $ref: '#/components/schemas/DeleteAppResponseData' + type: object + DeleteAppResponseData: + description: The definition of `DeleteAppResponseData` object. + properties: + id: + description: The ID of the deleted app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + type: object + DeleteAppsRequest: + description: A request object for deleting multiple apps by ID. + example: + data: + - id: aea2ed17-b45f-40d0-ba59-c86b7972c901 + type: appDefinitions + - id: f69bb8be-6168-4fe7-a30d-370256b6504a + type: appDefinitions + - id: ab1ed73e-13ad-4426-b0df-a0ff8876a088 + type: appDefinitions + properties: + data: + description: An array of objects containing the IDs of the apps to delete. + items: + $ref: '#/components/schemas/DeleteAppsRequestDataItems' + type: array + type: object + DeleteAppsRequestDataItems: + description: An object containing the ID of an app to delete. + properties: + id: + description: The ID of the app to delete. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + type: object + DeleteAppsResponse: + description: The response object after multiple apps are successfully deleted. + properties: + data: + description: An array of objects containing the IDs of the deleted apps. + items: + $ref: '#/components/schemas/DeleteAppsResponseDataItems' + type: array + type: object + DeleteAppsResponseDataItems: + description: An object containing the ID of a deleted app. + properties: + id: + description: The ID of the deleted app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + type: object DependencyLocation: description: Static library vulnerability location. properties: @@ -8591,6 +9180,71 @@ components: - column_start - column_end type: object + Deployment: + description: The version of the app that was published. + properties: + attributes: + $ref: '#/components/schemas/DeploymentAttributes' + id: + description: The deployment ID. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + meta: + $ref: '#/components/schemas/DeploymentMetadata' + type: + $ref: '#/components/schemas/AppDeploymentType' + type: object + DeploymentAttributes: + description: The attributes object containing the version ID of the published + app. + properties: + app_version_id: + description: The version ID of the app that was published. For an unpublished + app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`). + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: object + DeploymentMetadata: + description: Metadata object containing the publication creation information. + properties: + created_at: + description: Timestamp of when the app was published. + format: date-time + type: string + user_id: + description: The ID of the user who published the app. + format: int64 + type: integer + user_name: + description: The name (or email address) of the user who published the app. + type: string + user_uuid: + description: The UUID of the user who published the app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: object + DeploymentRelationship: + description: Information pointing to the app's publication status. + properties: + data: + $ref: '#/components/schemas/DeploymentRelationshipData' + meta: + $ref: '#/components/schemas/DeploymentMetadata' + type: object + DeploymentRelationshipData: + description: Data object containing the deployment ID. + properties: + id: + description: The deployment ID. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDeploymentType' + type: object DetailedFinding: description: A single finding with with message and resource configuration. properties: @@ -9447,6 +10101,10 @@ components: type: string x-enum-varnames: - WORK + Enabled: + description: Field used to enable or disable the rule. + example: true + type: boolean EntityAttributes: description: Entity attributes. properties: @@ -11838,6 +12496,75 @@ components: data: $ref: '#/components/schemas/ActionConnectionData' type: object + GetAppResponse: + description: The full app definition response object. + properties: + data: + $ref: '#/components/schemas/GetAppResponseData' + included: + description: Data on the version of the app that was published. + items: + $ref: '#/components/schemas/Deployment' + type: array + meta: + $ref: '#/components/schemas/AppMeta' + relationship: + $ref: '#/components/schemas/AppRelationship' + type: object + GetAppResponseData: + description: The data object containing the app definition. + properties: + attributes: + $ref: '#/components/schemas/GetAppResponseDataAttributes' + id: + description: The ID of the app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + - attributes + type: object + GetAppResponseDataAttributes: + description: The app definition attributes, such as name, description, and components. + properties: + components: + description: The UI components that make up the app. + items: + $ref: '#/components/schemas/ComponentGrid' + type: array + description: + description: A human-readable description for the app. + type: string + embeddedQueries: + description: An array of queries, such as external actions and state variables, + that the app uses. + items: + $ref: '#/components/schemas/Query' + type: array + favorite: + description: Whether the app is marked as a favorite by the current user. + type: boolean + name: + description: The name of the app. + type: string + rootInstanceName: + description: The name of the root component of the app. This must be a `grid` + component that contains all other components. + type: string + tags: + description: A list of tags for the app, which can be used to filter apps. + example: + - service:webshop-backend + - team:webshop + items: + description: An individual tag for the app. + type: string + type: array + type: object GetDeviceAttributes: description: The device attributes properties: @@ -12550,6 +13277,10 @@ components: - APP_SEC_HOST_COUNT - OBSERVABILITY_PIPELINES_BYTES_PROCESSSED - LAMBDA_TRACED_INVOCATIONS_COUNT + ID: + description: The ID of a notification rule. + example: aaa-bbb-ccc + type: string IPAllowlistAttributes: description: Attributes of the IP allowlist. properties: @@ -15188,6 +15919,96 @@ components: meta: $ref: '#/components/schemas/ApplicationKeyResponseMeta' type: object + ListAppsResponse: + description: A paginated list of apps matching the specified filters and sorting. + properties: + data: + description: An array of app definitions. + items: + $ref: '#/components/schemas/ListAppsResponseDataItems' + type: array + included: + description: Data on the version of the app that was published. + items: + $ref: '#/components/schemas/Deployment' + type: array + meta: + $ref: '#/components/schemas/ListAppsResponseMeta' + type: object + ListAppsResponseDataItems: + description: An app definition object. This contains only basic information + about the app such as ID, name, and tags. + properties: + attributes: + $ref: '#/components/schemas/ListAppsResponseDataItemsAttributes' + id: + description: The ID of the app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + meta: + $ref: '#/components/schemas/AppMeta' + relationships: + $ref: '#/components/schemas/ListAppsResponseDataItemsRelationships' + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + - attributes + type: object + ListAppsResponseDataItemsAttributes: + description: Basic information about the app such as name, description, and + tags. + properties: + description: + description: A human-readable description for the app. + type: string + favorite: + description: Whether the app is marked as a favorite by the current user. + type: boolean + name: + description: The name of the app. + type: string + selfService: + description: Whether the app is enabled for use in the Datadog self-service + hub. + type: boolean + tags: + description: A list of tags for the app, which can be used to filter apps. + example: + - service:webshop-backend + - team:webshop + items: + description: An individual tag for the app. + type: string + type: array + type: object + ListAppsResponseDataItemsRelationships: + description: The app's publication information. + properties: + deployment: + $ref: '#/components/schemas/DeploymentRelationship' + type: object + ListAppsResponseMeta: + description: Pagination metadata. + properties: + page: + $ref: '#/components/schemas/ListAppsResponseMetaPage' + type: object + ListAppsResponseMetaPage: + description: Information on the total number of apps, to be used for pagination. + properties: + totalCount: + description: The total number of apps under the Datadog organization, disregarding + any filters applied. + format: int64 + type: integer + totalFilteredCount: + description: The total number of apps that match the specified filters. + format: int64 + type: integer + type: object ListDevicesResponse: description: List devices response. properties: @@ -16152,6 +16973,8 @@ components: description: The bucket where the archive will be stored. example: bucket-name type: string + encryption: + $ref: '#/components/schemas/LogsArchiveEncryptionS3' integration: $ref: '#/components/schemas/LogsArchiveIntegrationS3' path: @@ -16173,6 +16996,30 @@ components: type: string x-enum-varnames: - S3 + LogsArchiveEncryptionS3: + description: The S3 encryption settings. + properties: + key: + description: An Amazon Resource Name (ARN) used to identify an AWS KMS key. + example: arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms + type: string + type: + $ref: '#/components/schemas/LogsArchiveEncryptionS3Type' + required: + - type + type: object + LogsArchiveEncryptionS3Type: + description: Type of S3 encryption for a destination. + enum: + - NO_OVERRIDE + - SSE_S3 + - SSE_KMS + example: SSE_S3 + type: string + x-enum-varnames: + - NO_OVERRIDE + - SSE_S3 + - SSE_KMS LogsArchiveIntegrationAzure: description: The Azure archive's integration destination. properties: @@ -18802,6 +19649,84 @@ components: meta: $ref: '#/components/schemas/MonthlyCostAttributionMeta' type: object + NotificationRule: + description: 'Notification rules allow full control over notifications generated + by the various Datadog security products. + + They allow users to define the conditions under which a notification should + be generated (based on rule severities, + + rule types, rule tags, and so on), and the targets to notify. + + A notification rule is composed of a rule ID, a rule type, and the rule attributes. + All fields are required. + + ' + properties: + attributes: + $ref: '#/components/schemas/NotificationRuleAttributes' + id: + $ref: '#/components/schemas/ID' + type: + $ref: '#/components/schemas/NotificationRulesType' + required: + - attributes + - id + - type + type: object + NotificationRuleAttributes: + description: Attributes of the notification rule. + properties: + created_at: + $ref: '#/components/schemas/Date' + created_by: + $ref: '#/components/schemas/RuleUser' + enabled: + $ref: '#/components/schemas/Enabled' + modified_at: + $ref: '#/components/schemas/Date' + modified_by: + $ref: '#/components/schemas/RuleUser' + name: + $ref: '#/components/schemas/RuleName' + selectors: + $ref: '#/components/schemas/Selectors' + targets: + $ref: '#/components/schemas/Targets' + time_aggregation: + $ref: '#/components/schemas/TimeAggregation' + version: + $ref: '#/components/schemas/Version' + required: + - created_at + - created_by + - enabled + - modified_at + - modified_by + - name + - selectors + - targets + - version + type: object + NotificationRuleQuery: + description: The query is composed of one or several key:value pairs, which + can be used to filter security issues on tags and attributes. + example: (source:production_service OR env:prod) + type: string + NotificationRuleResponse: + description: Response object which includes a notification rule. + properties: + data: + $ref: '#/components/schemas/NotificationRule' + type: object + NotificationRulesType: + description: The rule type associated to notification rules. + enum: + - notification_rules + example: notification_rules + type: string + x-enum-varnames: + - NOTIFICATION_RULES NullableRelationshipToUser: description: Relationship to user. nullable: true @@ -19679,6 +20604,44 @@ components: $ref: '#/components/schemas/ApplicationKeyResponseIncludedItem' type: array type: object + PatchNotificationRuleParameters: + description: Body of the notification rule patch request. + properties: + data: + $ref: '#/components/schemas/PatchNotificationRuleParametersData' + type: object + PatchNotificationRuleParametersData: + description: 'Data of the notification rule patch request: the rule ID, the + rule type, and the rule attributes. All fields are required.' + properties: + attributes: + $ref: '#/components/schemas/PatchNotificationRuleParametersDataAttributes' + id: + $ref: '#/components/schemas/ID' + type: + $ref: '#/components/schemas/NotificationRulesType' + required: + - attributes + - id + - type + type: object + PatchNotificationRuleParametersDataAttributes: + description: Attributes of the notification rule patch request. It is required + to update the version of the rule when patching it. + properties: + enabled: + $ref: '#/components/schemas/Enabled' + name: + $ref: '#/components/schemas/RuleName' + selectors: + $ref: '#/components/schemas/Selectors' + targets: + $ref: '#/components/schemas/Targets' + time_aggregation: + $ref: '#/components/schemas/TimeAggregation' + version: + $ref: '#/components/schemas/Version' + type: object Permission: description: Permission object. properties: @@ -20319,6 +21282,41 @@ components: $ref: '#/components/schemas/Project' type: array type: object + PublishAppResponse: + description: The response object after an app is successfully published. + properties: + data: + $ref: '#/components/schemas/Deployment' + type: object + Query: + description: A query used by an app. This can take the form of an external action, + a data transformation, or a state variable change. + properties: + events: + description: Events to listen for downstream of the query. + items: + $ref: '#/components/schemas/AppBuilderEvent' + type: array + id: + description: The ID of the query. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + name: + description: The name of the query. The name must be unique within the app + and is visible in the app editor. + example: '' + type: string + properties: + description: The properties of the query. The properties vary depending + on the query type. + type: + $ref: '#/components/schemas/QueryType' + required: + - id + - name + - type + type: object QueryFormula: description: A formula for calculation based on one or more queries. properties: @@ -20342,6 +21340,18 @@ components: x-enum-varnames: - ASC - DESC + QueryType: + description: The query type. + enum: + - action + - stateVariable + - dataTransform + example: action + type: string + x-enum-varnames: + - ACTION + - STATEVARIABLE + - DATATRANSFORM RUMAggregateBucketValue: description: A bucket value, can be either a timeseries or a single value. oneOf: @@ -22558,12 +23568,34 @@ components: description: The unique ID for a scorecard rule. example: q8MQxk8TCqrHnWkx type: string + RuleName: + description: Name of the notification rule. + example: Rule 1 + type: string RuleOutcomeRelationships: description: The JSON:API relationship to a scorecard rule. properties: rule: $ref: '#/components/schemas/RelationshipToOutcome' type: object + RuleSeverity: + description: Severity of a security rule. + enum: + - critical + - high + - medium + - low + - unknown + - info + example: critical + type: string + x-enum-varnames: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - UNKNOWN + - INFO RuleType: default: rule description: The JSON:API type for scorecard rules. @@ -22573,6 +23605,69 @@ components: type: string x-enum-varnames: - RULE + RuleTypes: + description: Security rule types used to filter signals and vulnerabilities + generating notifications. + example: + - misconfiguration + - attack_path + items: + $ref: '#/components/schemas/RuleTypesItems' + type: array + RuleTypesItems: + description: 'Security rule types which can be used in notification rules. + + Signal-based notification rules can filter signals based on rule types application_security, + log_detection, + + workload_security, signal_correlation, cloud_configuration and infrastructure_configuration. + + Vulnerability-based notification rules can filter vulnerabilities based on + rule types application_code_vulnerability, + + application_library_vulnerability, attack_path, container_image_vulnerability, + identity_risk, misconfiguration, and api_security.' + enum: + - application_security + - log_detection + - workload_security + - signal_correlation + - cloud_configuration + - infrastructure_configuration + - application_code_vulnerability + - application_library_vulnerability + - attack_path + - container_image_vulnerability + - identity_risk + - misconfiguration + - api_security + type: string + x-enum-varnames: + - APPLICATION_SECURITY + - LOG_DETECTION + - WORKLOAD_SECURITY + - SIGNAL_CORRELATION + - CLOUD_CONFIGURATION + - INFRASTRUCTURE_CONFIGURATION + - APPLICATION_CODE_VULNERABILITY + - APPLICATION_LIBRARY_VULNERABILITY + - ATTACK_PATH + - CONTAINER_IMAGE_VULNERABILITY + - IDENTITY_RISK + - MISCONFIGURATION + - API_SECURITY + RuleUser: + description: User creating or modifying a rule. + properties: + handle: + description: The user handle. + example: john.doe@domain.com + type: string + name: + description: The user name. + example: John Doe + type: string + type: object RumMetricCompute: description: The compute rule to compute the rum-based metric. properties: @@ -25454,6 +26549,29 @@ components: nullable: true type: string type: object + Selectors: + description: 'Selectors are used to filter security issues for which notifications + should be generated. + + Users can specify rule severities, rule types, a query to filter security + issues on tags and attributes, and the trigger source. + + Only the trigger_source field is required.' + properties: + query: + $ref: '#/components/schemas/NotificationRuleQuery' + rule_types: + $ref: '#/components/schemas/RuleTypes' + severities: + description: The security rules severities to consider. + items: + $ref: '#/components/schemas/RuleSeverity' + type: array + trigger_source: + $ref: '#/components/schemas/TriggerSource' + required: + - trigger_source + type: object SensitiveDataScannerConfigRequest: description: Group reorder request. properties: @@ -28148,6 +29266,20 @@ components: description: Tag associated with your event. type: string type: array + Targets: + description: 'List of recipients to notify when a notification rule is triggered. + Many different target types are supported, + + such as email addresses, Slack channels, and PagerDuty services. + + The appropriate integrations need to be properly configured to send notifications + to the specified targets.' + example: + - '@john.doe@email.com' + items: + description: Recipients to notify. + type: string + type: array Team: description: A team properties: @@ -28730,6 +29862,22 @@ components: description: Offset type. type: string type: object + TimeAggregation: + description: 'Time aggregation period (in seconds) is used to aggregate the + results of the notification rule evaluation. + + Results are aggregated over a selected time frame using a rolling window, + which updates with each new evaluation. + + Notifications are only sent for new issues discovered during the window. + + Time aggregation is only available for vulnerability-based notification rules. + When omitted or set to 0, no aggregation + + is done.' + example: 86400 + format: int64 + type: integer TimeseriesFormulaQueryRequest: description: A request wrapper around a single timeseries query to be executed. properties: @@ -28922,6 +30070,20 @@ components: type: string x-enum-varnames: - SECRET + TriggerSource: + description: 'The type of security issues on which the rule applies. Notification + rules based on security signals need to use the trigger source "security_signals", + + while notification rules based on security vulnerabilities need to use the + trigger source "security_findings".' + enum: + - security_findings + - security_signals + example: security_findings + type: string + x-enum-varnames: + - SECURITY_FINDINGS + - SECURITY_SIGNALS Unit: description: Object containing the metric unit family, scale factor, name, and short name. @@ -28950,6 +30112,12 @@ components: example: min type: string type: object + UnpublishAppResponse: + description: The response object after an app is successfully unpublished. + properties: + data: + $ref: '#/components/schemas/Deployment' + type: object UpdateActionConnectionRequest: description: Request used to update an action connection. properties: @@ -28964,6 +30132,178 @@ components: data: $ref: '#/components/schemas/ActionConnectionData' type: object + UpdateAppRequest: + description: A request object for updating an existing app. + example: + data: + attributes: + components: + - events: [] + name: grid0 + properties: + children: + - events: [] + name: gridCell0 + properties: + children: + - events: [] + name: calloutValue0 + properties: + isDisabled: false + isLoading: false + isVisible: true + label: CPU Usage + size: sm + style: vivid_yellow + unit: kB + value: '42' + type: calloutValue + isVisible: 'true' + layout: + default: + height: 8 + width: 2 + x: 0 + y: 0 + type: gridCell + type: grid + description: This is a simple example app + embeddedQueries: [] + name: Example App + rootInstanceName: grid0 + id: 9e20cbaf-68da-45a6-9ccf-54193ac29fa5 + type: appDefinitions + properties: + data: + $ref: '#/components/schemas/UpdateAppRequestData' + type: object + UpdateAppRequestData: + description: The data object containing the new app definition. Any fields not + included in the request remain unchanged. + properties: + attributes: + $ref: '#/components/schemas/UpdateAppRequestDataAttributes' + id: + description: The ID of the app to update. The app ID must match the ID in + the URL path. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - type + type: object + UpdateAppRequestDataAttributes: + description: App definition attributes to be updated, such as name, description, + and components. + properties: + components: + description: The new UI components that make up the app. If this field is + set, all existing components are replaced with the new components under + this field. + items: + $ref: '#/components/schemas/ComponentGrid' + type: array + description: + description: The new human-readable description for the app. + type: string + embeddedQueries: + description: The new array of queries, such as external actions and state + variables, that the app uses. If this field is set, all existing queries + are replaced with the new queries under this field. + items: + $ref: '#/components/schemas/Query' + type: array + name: + description: The new name of the app. + type: string + rootInstanceName: + description: The new name of the root component of the app. This must be + a `grid` component that contains all other components. + type: string + tags: + description: The new list of tags for the app, which can be used to filter + apps. If this field is set, any existing tags not included in the request + are removed. + example: + - service:webshop-backend + - team:webshop + items: + description: An individual tag for the app. + type: string + type: array + type: object + UpdateAppResponse: + description: The response object after an app is successfully updated. + properties: + data: + $ref: '#/components/schemas/UpdateAppResponseData' + included: + description: Data on the version of the app that was published. + items: + $ref: '#/components/schemas/Deployment' + type: array + meta: + $ref: '#/components/schemas/AppMeta' + relationship: + $ref: '#/components/schemas/AppRelationship' + type: object + UpdateAppResponseData: + description: The data object containing the updated app definition. + properties: + attributes: + $ref: '#/components/schemas/UpdateAppResponseDataAttributes' + id: + description: The ID of the updated app. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + format: uuid + type: string + type: + $ref: '#/components/schemas/AppDefinitionType' + required: + - id + - type + - attributes + type: object + UpdateAppResponseDataAttributes: + description: The updated app definition attributes, such as name, description, + and components. + properties: + components: + description: The UI components that make up the app. + items: + $ref: '#/components/schemas/ComponentGrid' + type: array + description: + description: The human-readable description for the app. + type: string + embeddedQueries: + description: An array of queries, such as external actions and state variables, + that the app uses. + items: + $ref: '#/components/schemas/Query' + type: array + favorite: + description: Whether the app is marked as a favorite by the current user. + type: boolean + name: + description: The name of the app. + type: string + rootInstanceName: + description: The name of the root component of the app. This must be a `grid` + component that contains all other components. + type: string + tags: + description: A list of tags for the app, which can be used to filter apps. + example: + - service:webshop-backend + - team:webshop + items: + description: An individual tag for the app. + type: string + type: array + type: object UpdateOpenAPIResponse: description: Response for `UpdateOpenAPI`. properties: @@ -29672,6 +31012,12 @@ components: type: string x-enum-varnames: - USERS + Version: + description: Version of the notification rule. It is updated when the rule is + modified. + example: 1 + format: int64 + type: integer VulnerabilitiesType: description: The JSON:API type. enum: @@ -30263,6 +31609,10 @@ components: security_monitoring_filters_write: Create, edit, and delete Security Filters. security_monitoring_findings_read: View a list of findings that include both misconfigurations and identity risks. + security_monitoring_notification_profiles_read: View Rule Security Notification + rules. + security_monitoring_notification_profiles_write: Create, edit, and delete + Security Notification rules. security_monitoring_rules_read: Read Detection Rules. security_monitoring_rules_write: Create and edit Detection Rules. security_monitoring_signals_read: View Security Signals. @@ -30315,8 +31665,6 @@ components: type: apiKey x-env-name: DD_APP_KEY bearerAuth: - in: header - name: Authorization scheme: bearer type: http x-env-name: DD_BEARER_TOKEN @@ -31468,6 +32816,511 @@ paths: - apm_pipelines_write x-undo: type: idempotent + /api/v2/app-builder/apps: + delete: + description: Delete multiple apps in a single request from a list of app IDs. + operationId: DeleteApps + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAppsRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAppsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Delete Multiple Apps + tags: + - App Builder + x-menu-order: 3 + x-permission: + operator: OR + permissions: + - apps_write + x-undo: + type: idempotent + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + get: + description: List all apps, with optional filters and sorting. This endpoint + is paginated. Only basic app information such as the app ID, name, and description + is returned by this endpoint. + operationId: ListApps + parameters: + - description: The number of apps to return per page. + in: query + name: limit + required: false + schema: + format: int64 + type: integer + - description: The page number to return. + in: query + name: page + required: false + schema: + format: int64 + type: integer + - description: Filter apps by the app creator. Usually the user's email. + in: query + name: filter[user_name] + required: false + schema: + type: string + - description: Filter apps by the app creator's UUID. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: query + name: filter[user_uuid] + required: false + schema: + format: uuid + type: string + - description: Filter by app name. + in: query + name: filter[name] + required: false + schema: + type: string + - description: Filter apps by the app name or the app creator. + in: query + name: filter[query] + required: false + schema: + type: string + - description: Filter apps by whether they are published. + in: query + name: filter[deployed] + required: false + schema: + type: boolean + - description: Filter apps by tags. + in: query + name: filter[tags] + required: false + schema: + type: string + - description: Filter apps by whether you have added them to your favorites. + in: query + name: filter[favorite] + required: false + schema: + type: boolean + - description: Filter apps by whether they are enabled for self-service. + in: query + name: filter[self_service] + required: false + schema: + type: boolean + - description: The fields and direction to sort apps by. + explode: false + in: query + name: sort + required: false + schema: + items: + $ref: '#/components/schemas/AppsSortField' + type: array + style: form + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListAppsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: List Apps + tags: + - App Builder + x-menu-order: 1 + x-permission: + operator: OR + permissions: + - apps_run + x-undo: + type: safe + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + post: + description: Create a new app, returning the app ID. + operationId: CreateApp + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAppRequest' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAppResponse' + description: Created + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Create App + tags: + - App Builder + x-given: + app: + parameters: + - name: body + value: '{"data": {"attributes": {"components": [{"events": [], "name": + "grid0", "properties": {"children": [{"events": [], "name": "gridCell0", + "properties": {"children": [{"events": [], "name": "calloutValue0", + "properties": {"isDisabled": false, "isLoading": false, "isVisible": + true, "label": "CPU Usage", "size": "sm", "style": "vivid_yellow", "unit": + "kB", "value": "42"}, "type": "calloutValue"}], "isVisible": "true", + "layout": {"default": {"height": 8, "width": 2, "x": 0, "y": 0}}}, "type": + "gridCell"}]}, "type": "grid"}], "description": "This is a simple example + app", "embeddedQueries": [], "name": "Example App", "rootInstanceName": + "grid0"}, "type": "appDefinitions"}}' + step: there is a valid "app" in the system + x-menu-order: 2 + x-permission: + operator: AND + permissions: + - apps_write + - connections_resolve + - workflows_run + x-undo: + operationId: DeleteApp + parameters: + - name: app_id + source: data.id + type: unsafe + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + /api/v2/app-builder/apps/{app_id}: + delete: + description: Delete a single app. + operationId: DeleteApp + parameters: + - description: The ID of the app to delete. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: path + name: app_id + required: true + schema: + format: uuid + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteAppResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Not Found + '410': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Gone + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Delete App + tags: + - App Builder + x-menu-order: 6 + x-permission: + operator: OR + permissions: + - apps_write + x-undo: + type: idempotent + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + get: + description: Get the full definition of an app. + operationId: GetApp + parameters: + - description: The ID of the app to retrieve. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: path + name: app_id + required: true + schema: + format: uuid + type: string + - description: The version number of the app to retrieve. If not specified, + the latest version is returned. Version numbers start at 1 and increment + with each update. The special values `latest` and `deployed` can be used + to retrieve the latest version or the published version, respectively. + in: query + name: version + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GetAppResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Get App + tags: + - App Builder + x-menu-order: 4 + x-permission: + operator: AND + permissions: + - apps_run + - connections_read + x-undo: + type: safe + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + patch: + description: Update an existing app. This creates a new version of the app. + operationId: UpdateApp + parameters: + - description: The ID of the app to update. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: path + name: app_id + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAppRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateAppResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Update App + tags: + - App Builder + x-menu-order: 5 + x-permission: + operator: AND + permissions: + - apps_write + - connections_resolve + - workflows_run + x-undo: + type: idempotent + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + /api/v2/app-builder/apps/{app_id}/deployment: + delete: + description: Unpublish an app, removing the live version of the app. Unpublishing + creates a new instance of a `deployment` object on the app, with a nil `app_version_id` + (`00000000-0000-0000-0000-000000000000`). The app can still be updated and + published again in the future. + operationId: UnpublishApp + parameters: + - description: The ID of the app to unpublish. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: path + name: app_id + required: true + schema: + format: uuid + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UnpublishAppResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Unpublish App + tags: + - App Builder + x-menu-order: 8 + x-permission: + operator: OR + permissions: + - apps_write + x-undo: + type: idempotent + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' + post: + description: Publish an app for use by 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. + operationId: PublishApp + parameters: + - description: The ID of the app to publish. + example: 65bb1f25-52e1-4510-9f8d-22d1516ed693 + in: path + name: app_id + required: true + schema: + format: uuid + type: string + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/PublishAppResponse' + description: Created + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + summary: Publish App + tags: + - App Builder + x-menu-order: 7 + x-permission: + operator: OR + permissions: + - apps_write + x-undo: + type: idempotent + x-unstable: '**Note**: App Builder API endpoints are still under active development + and might change at any time.' /api/v2/application_keys: get: description: List all application keys available for your org @@ -38679,8 +40532,9 @@ paths: - Logs Archives x-menu-order: 9 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe put: @@ -39035,8 +40889,9 @@ paths: x-codegen-request-body-name: body x-menu-order: 6 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe post: @@ -39112,6 +40967,7 @@ paths: operator: OR permissions: - logs_read_data + - logs_read_config x-undo: type: safe post: @@ -39223,6 +41079,7 @@ paths: operator: OR permissions: - logs_read_data + - logs_read_config x-undo: type: safe patch: @@ -39286,8 +41143,9 @@ paths: - Logs Metrics x-menu-order: 1 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe post: @@ -39399,8 +41257,9 @@ paths: - Logs Metrics x-menu-order: 3 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe patch: @@ -39471,8 +41330,9 @@ paths: - Logs Restriction Queries x-menu-order: 1 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe x-unstable: '**Note**: This endpoint is in public beta. @@ -39558,8 +41418,9 @@ paths: - Logs Restriction Queries x-menu-order: 10 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe x-unstable: '**Note**: This endpoint is in public beta. @@ -39597,8 +41458,9 @@ paths: - Logs Restriction Queries x-menu-order: 9 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe x-unstable: '**Note**: This endpoint is in public beta. @@ -39686,8 +41548,9 @@ paths: x-codegen-request-body-name: body x-menu-order: 3 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe x-unstable: '**Note**: This endpoint is in public beta. @@ -39834,8 +41697,9 @@ paths: x-codegen-request-body-name: body x-menu-order: 6 x-permission: - operator: OPEN - permissions: [] + operator: OR + permissions: + - logs_read_config x-undo: type: safe x-unstable: '**Note**: This endpoint is in public beta. @@ -45017,6 +46881,218 @@ paths: x-unstable: '**Note**: This endpoint is a private preview. If you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9).' + /api/v2/security/signals/notification_rules: + get: + description: Returns the list of notification rules for security signals. + operationId: GetSignalNotificationRules + responses: + '200': + $ref: '#/components/responses/NotificationRulesList' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_read + summary: Get the list of signal-based rules + tags: + - Security Monitoring + x-menu-order: 15 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_read + x-undo: + type: safe + post: + description: Create a new notification rule for security signals and return + the created rule. + operationId: CreateSignalNotificationRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationRuleParameters' + description: 'The body of the create notification rule request is composed + of the rule type and the rule attributes: + + the rule name, the selectors, the notification targets, and the rule enabled + status. + + ' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRuleResponse' + description: Successfully created the notification rule. + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Create a new signal-based rule + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-given: + valid_signal_notification_rule: + parameters: + - name: body + value: "{\n \"data\": {\n \"type\": \"notification_rules\",\n \"attributes\": + {\n \"name\": \"{{ unique }}\",\n \"selectors\": {\n \"rule_types\": + [\"signal_correlation\"],\n \"trigger_source\": \"security_signals\",\n + \ \"severities\": [\"critical\"],\n \"query\": \"env:test\"\n + \ },\n \"targets\": [\"@email@email.com\"],\n \"enabled\": + true\n }\n }\n}" + step: there is a valid "valid_signal_notification_rule" in the system + x-menu-order: 16 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_write + x-undo: + operationId: DeleteSignalNotificationRule + parameters: + - name: id + source: data.id + type: unsafe + /api/v2/security/signals/notification_rules/{id}: + delete: + description: Delete a notification rule for security signals. + operationId: DeleteSignalNotificationRule + parameters: + - description: ID of the notification rule. + in: path + name: id + required: true + schema: + type: string + responses: + '204': + description: Rule successfully deleted. + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Delete a signal-based rule + tags: + - Security Monitoring + x-menu-order: 21 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_write + x-undo: + type: idempotent + get: + description: Get the details of a notification rule for security signals. + operationId: GetSignalNotificationRule + parameters: + - description: ID of the notification rule. + in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRuleResponse' + description: Notification rule details. + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_read + summary: Get details of a signal-based rule + tags: + - Security Monitoring + x-menu-order: 18 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_read + x-undo: + type: safe + patch: + description: Partially update the notification rule. All fields are optional; + if a field is not provided, it is not updated. + operationId: PatchSignalNotificationRule + parameters: + - description: ID of the notification rule. + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchNotificationRuleParameters' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRuleResponse' + description: Notification rule successfully patched. + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '422': + $ref: '#/components/responses/UnprocessableEntityResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Patch a signal-based rule + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-menu-order: 20 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_write + x-undo: + type: idempotent /api/v2/security/vulnerabilities: get: description: "Get a list of vulnerabilities.\n\n### Pagination\n\nPagination @@ -45399,6 +47475,218 @@ paths: x-unstable: '**Note**: This endpoint is a private preview. If you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9).' + /api/v2/security/vulnerabilities/notification_rules: + get: + description: Returns the list of notification rules for security vulnerabilities. + operationId: GetVulnerabilityNotificationRules + responses: + '200': + $ref: '#/components/responses/NotificationRulesList' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_read + summary: Get the list of vulnerability-based rules + tags: + - Security Monitoring + x-menu-order: 15 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_read + x-undo: + type: safe + post: + description: Create a new notification rule for security vulnerabilities and + return the created rule. + operationId: CreateVulnerabilityNotificationRule + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateNotificationRuleParameters' + description: 'The body of the create notification rule request is composed + of the rule type and the rule attributes: + + the rule name, the selectors, the notification targets, and the rule enabled + status. + + ' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRuleResponse' + description: Successfully created the notification rule. + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Create a new vulnerability-based rule + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-given: + valid_vulnerability_notification_rule: + parameters: + - name: body + value: "{\n \"data\": {\n \"type\": \"notification_rules\",\n \"attributes\": + {\n \"name\": \"{{ unique }}\",\n \"selectors\": {\n \"rule_types\": + [\"misconfiguration\", \"attack_path\"],\n \"trigger_source\": + \"security_findings\",\n \"severities\": [\"critical\"],\n \"query\": + \"env:test\"\n },\n \"time_aggregation\": 86400,\n \"targets\": + [\"@email@email.com\"],\n \"enabled\": true\n }\n }\n}" + step: there is a valid "valid_vulnerability_notification_rule" in the system + x-menu-order: 16 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_write + x-undo: + operationId: DeleteVulnerabilityNotificationRule + parameters: + - name: id + source: data.id + type: unsafe + /api/v2/security/vulnerabilities/notification_rules/{id}: + delete: + description: Delete a notification rule for security vulnerabilities. + operationId: DeleteVulnerabilityNotificationRule + parameters: + - description: ID of the notification rule. + in: path + name: id + required: true + schema: + type: string + responses: + '204': + description: Rule successfully deleted. + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Delete a vulnerability-based rule + tags: + - Security Monitoring + x-menu-order: 21 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_write + x-undo: + type: idempotent + get: + description: Get the details of a notification rule for security vulnerabilities. + operationId: GetVulnerabilityNotificationRule + parameters: + - description: ID of the notification rule. + in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRuleResponse' + description: Notification rule details. + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_read + summary: Get details of a vulnerability-based rule + tags: + - Security Monitoring + x-menu-order: 18 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_read + x-undo: + type: safe + patch: + description: Partially update the notification rule. All fields are optional; + if a field is not provided, it is not updated. + operationId: PatchVulnerabilityNotificationRule + parameters: + - description: ID of the notification rule. + in: path + name: id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PatchNotificationRuleParameters' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationRuleResponse' + description: Notification rule successfully patched. + '400': + $ref: '#/components/responses/BadRequestResponse' + '403': + $ref: '#/components/responses/ForbiddenResponse' + '404': + $ref: '#/components/responses/NotFoundResponse' + '422': + $ref: '#/components/responses/UnprocessableEntityResponse' + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - security_monitoring_notification_profiles_write + summary: Patch a vulnerability-based rule + tags: + - Security Monitoring + x-codegen-request-body-name: body + x-menu-order: 20 + x-permission: + operator: OR + permissions: + - security_monitoring_notification_profiles_write + x-undo: + type: idempotent /api/v2/security_monitoring/cloud_workload_security/agent_rules: get: description: Get the list of Agent rules. @@ -49831,9 +52119,6 @@ paths: - usage_read x-undo: type: safe - x-unstable: '**Note**: This endpoint is in Preview. - - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/usage/cost_by_org: get: deprecated: true @@ -51205,6 +53490,11 @@ tags: teams to install Agents on every host or where Agents cannot be installed.\nGo to https://www.datadoghq.com/blog/agentless-scanning/ to learn more" name: Agentless Scanning +- description: Datadog App Builder provides a low-code solution to rapidly develop + and integrate secure, customized applications into your monitoring stack that + are built to accelerate remediation at scale. These API endpoints allow you to + create, read, update, delete, and publish apps. + name: App Builder - description: Search your Audit Logs events over HTTP. name: Audit - description: '[The AuthN Mappings API](https://docs.datadoghq.com/account_management/authn_mapping/?tab=example) @@ -51366,11 +53656,7 @@ tags: See the [Archives Page](https://app.datadoghq.com/logs/pipelines/archives) - for a list of the archives currently configured in Datadog. - - - You need an API and non-scoped application key with Admin rights to interact with - these endpoints.' + for a list of the archives currently configured in Datadog.' externalDocs: description: Find out more at url: https://docs.datadoghq.com/logs/archives/ @@ -51389,11 +53675,8 @@ tags: description: Find out more at url: https://docs.datadoghq.com/logs/log_configuration/forwarding_custom_destinations/ name: Logs Custom Destinations -- description: 'Manage configuration of [log-based metrics](https://app.datadoghq.com/logs/pipelines/generate-metrics) +- description: Manage configuration of [log-based metrics](https://app.datadoghq.com/logs/pipelines/generate-metrics) for your organization. - - You need an API and non-scoped application key with Admin rights to interact with - these endpoints.' externalDocs: description: Find out more at url: https://docs.datadoghq.com/logs/logs_to_metrics/ @@ -51433,10 +53716,6 @@ tags: scoped to different team values. - You need an API and non-scoped application key with Admin rights to interact with - these endpoints. - - See [How to Set Up RBAC for Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict-access-to-logs) for details on how to add restriction queries.' name: Logs Restriction Queries diff --git a/data/api/v2/full_spec_deref.json b/data/api/v2/full_spec_deref.json index be807540c437c..f98878486d2d6 100644 --- a/data/api/v2/full_spec_deref.json +++ b/data/api/v2/full_spec_deref.json @@ -1525,6 +1525,236 @@ }, "description": "Not Found" }, + "NotificationRulesList": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "items": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "The list of notification rules." + }, "PreconditionFailedResponse": { "content": { "application/json": { @@ -1876,6 +2106,73 @@ } }, "description": "Unauthorized" + }, + "UnprocessableEntityResponse": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "The server cannot process the request because it contains invalid data." } }, "schemas": { @@ -9807,6 +10104,309 @@ "apm_retention_filter" ] }, + "AppBuilderEvent": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "AppBuilderEventName": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "AppBuilderEventType": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + }, + "AppDefinitionType": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + }, + "AppDeploymentType": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + }, + "AppMeta": { + "description": "Metadata of an app.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "AppRelationship": { + "description": "The app's publication relationship and custom connections.", + "properties": { + "connections": { + "description": "Array of custom connections used by the app.", + "items": { + "description": "A custom connection used by an app.", + "properties": { + "attributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" + }, + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the custom connection.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, "ApplicationKeyCreateAttributes": { "description": "Attributes used to create an application Key.", "properties": { @@ -11171,6 +11771,31 @@ "APPLICATION_KEYS" ] }, + "AppsSortField": { + "description": "The field and direction to sort apps by", + "enum": [ + "name", + "created_at", + "updated_at", + "user_name", + "-name", + "-created_at", + "-updated_at", + "-user_name" + ], + "example": "-created_at", + "type": "string", + "x-enum-varnames": [ + "NAME", + "CREATED_AT", + "UPDATED_AT", + "USER_NAME", + "NAME_DESC", + "CREATED_AT_DESC", + "UPDATED_AT_DESC", + "USER_NAME_DESC" + ] + }, "Asset": { "description": "A single vulnerable asset", "properties": { @@ -34356,6 +34981,883 @@ ], "type": "object" }, + "Component": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "ComponentGrid": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "ComponentGridProperties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "ComponentGridPropertiesIsVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + }, + "ComponentGridType": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + }, + "ComponentProperties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": "[Circular]", + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "ComponentPropertiesIsVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + }, + "ComponentType": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + }, "ConfluentAccountCreateRequest": { "description": "Payload schema when adding a Confluent account.", "properties": { @@ -38983,6 +40485,1896 @@ }, "type": "object" }, + "CreateAppRequest": { + "description": "A request object for creating a new app.", + "example": { + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isDisabled": false, + "isLoading": false, + "isVisible": true, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42" + }, + "type": "calloutValue" + } + ], + "isVisible": "true", + "layout": { + "default": { + "height": 8, + "width": 2, + "x": 0, + "y": 0 + } + } + }, + "type": "gridCell" + } + ] + }, + "type": "grid" + } + ], + "description": "This is a simple example app", + "embeddedQueries": [], + "name": "Example App", + "rootInstanceName": "grid0" + }, + "type": "appDefinitions" + } + }, + "properties": { + "data": { + "description": "The data object containing the app definition.", + "properties": { + "attributes": { + "description": "App definition attributes such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "CreateAppRequestData": { + "description": "The data object containing the app definition.", + "properties": { + "attributes": { + "description": "App definition attributes such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "CreateAppRequestDataAttributes": { + "description": "App definition attributes such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CreateAppResponse": { + "description": "The response object after a new app is successfully created, with the app ID.", + "properties": { + "data": { + "description": "The data object containing the app ID.", + "properties": { + "id": { + "description": "The ID of the created app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "CreateAppResponseData": { + "description": "The data object containing the app ID.", + "properties": { + "id": { + "description": "The ID of the created app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "CreateNotificationRuleParameters": { + "description": "Body of the notification rule create request.", + "properties": { + "data": { + "description": "Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule create request.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "selectors", + "name", + "targets" + ], + "type": "object" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "CreateNotificationRuleParametersData": { + "description": "Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule create request.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "selectors", + "name", + "targets" + ], + "type": "object" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + }, + "CreateNotificationRuleParametersDataAttributes": { + "description": "Attributes of the notification rule create request.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "selectors", + "name", + "targets" + ], + "type": "object" + }, "CreateOpenAPIResponse": { "description": "Response for `CreateOpenAPI` operation.", "properties": { @@ -40962,18 +44354,116 @@ }, "type": "object" }, - "CustomCostGetResponseMeta": { - "description": "Meta for the response from the Get Custom Costs endpoints.", + "CustomConnection": { + "description": "A custom connection used by an app.", "properties": { - "version": { - "description": "Version of Custom Costs file", + "attributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" + }, + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the custom connection.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" - } - }, - "type": "object" - }, - "CustomCostListResponseMeta": { - "description": "Meta for the response from the List Custom Costs endpoints.", + }, + "type": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + } + }, + "type": "object" + }, + "CustomConnectionAttributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" + }, + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "CustomConnectionAttributesOnPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + }, + "CustomConnectionType": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + }, + "CustomCostGetResponseMeta": { + "description": "Meta for the response from the Get Custom Costs endpoints.", + "properties": { + "version": { + "description": "Version of Custom Costs file", + "type": "string" + } + }, + "type": "object" + }, + "CustomCostListResponseMeta": { + "description": "Meta for the response from the List Custom Costs endpoints.", "properties": { "total_filtered_count": { "description": "Number of Custom Costs files returned by the List Custom Costs endpoint", @@ -47104,6 +50594,222 @@ }, "type": "object" }, + "Date": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "DeleteAppResponse": { + "description": "The response object after an app is successfully deleted.", + "properties": { + "data": { + "description": "The definition of `DeleteAppResponseData` object.", + "properties": { + "id": { + "description": "The ID of the deleted app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "DeleteAppResponseData": { + "description": "The definition of `DeleteAppResponseData` object.", + "properties": { + "id": { + "description": "The ID of the deleted app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "DeleteAppsRequest": { + "description": "A request object for deleting multiple apps by ID.", + "example": { + "data": [ + { + "id": "aea2ed17-b45f-40d0-ba59-c86b7972c901", + "type": "appDefinitions" + }, + { + "id": "f69bb8be-6168-4fe7-a30d-370256b6504a", + "type": "appDefinitions" + }, + { + "id": "ab1ed73e-13ad-4426-b0df-a0ff8876a088", + "type": "appDefinitions" + } + ] + }, + "properties": { + "data": { + "description": "An array of objects containing the IDs of the apps to delete.", + "items": { + "description": "An object containing the ID of an app to delete.", + "properties": { + "id": { + "description": "The ID of the app to delete.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "DeleteAppsRequestDataItems": { + "description": "An object containing the ID of an app to delete.", + "properties": { + "id": { + "description": "The ID of the app to delete.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "DeleteAppsResponse": { + "description": "The response object after multiple apps are successfully deleted.", + "properties": { + "data": { + "description": "An array of objects containing the IDs of the deleted apps.", + "items": { + "description": "An object containing the ID of a deleted app.", + "properties": { + "id": { + "description": "The ID of the deleted app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "DeleteAppsResponseDataItems": { + "description": "An object containing the ID of a deleted app.", + "properties": { + "id": { + "description": "The ID of the deleted app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, "DependencyLocation": { "description": "Static library vulnerability location.", "properties": { @@ -47146,6 +50852,186 @@ ], "type": "object" }, + "Deployment": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "DeploymentAttributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "DeploymentMetadata": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "DeploymentRelationship": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "DeploymentRelationshipData": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, "DetailedFinding": { "description": "A single finding with with message and resource configuration.", "properties": { @@ -51838,6 +55724,11 @@ "WORK" ] }, + "Enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, "EntityAttributes": { "description": "Entity attributes.", "properties": { @@ -66081,6 +69972,1593 @@ }, "type": "object" }, + "GetAppResponse": { + "description": "The full app definition response object.", + "properties": { + "data": { + "description": "The data object containing the app definition.", + "properties": { + "attributes": { + "description": "The app definition attributes, such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "included": { + "description": "Data on the version of the app that was published.", + "items": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata of an app.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "relationship": { + "description": "The app's publication relationship and custom connections.", + "properties": { + "connections": { + "description": "Array of custom connections used by the app.", + "items": { + "description": "A custom connection used by an app.", + "properties": { + "attributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" + }, + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the custom connection.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "GetAppResponseData": { + "description": "The data object containing the app definition.", + "properties": { + "attributes": { + "description": "The app definition attributes, such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "GetAppResponseDataAttributes": { + "description": "The app definition attributes, such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "GetDeviceAttributes": { "description": "The device attributes", "properties": { @@ -70591,6 +76069,11 @@ "LAMBDA_TRACED_INVOCATIONS_COUNT" ] }, + "ID": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, "IPAllowlistAttributes": { "description": "Attributes of the IP allowlist.", "properties": { @@ -95727,6 +101210,588 @@ }, "type": "object" }, + "ListAppsResponse": { + "description": "A paginated list of apps matching the specified filters and sorting.", + "properties": { + "data": { + "description": "An array of app definitions.", + "items": { + "description": "An app definition object. This contains only basic information about the app such as ID, name, and tags.", + "properties": { + "attributes": { + "description": "Basic information about the app such as name, description, and tags.", + "properties": { + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "selfService": { + "description": "Whether the app is enabled for use in the Datadog self-service hub.", + "type": "boolean" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata of an app.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "relationships": { + "description": "The app's publication information.", + "properties": { + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "type": "array" + }, + "included": { + "description": "Data on the version of the app that was published.", + "items": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Pagination metadata.", + "properties": { + "page": { + "description": "Information on the total number of apps, to be used for pagination.", + "properties": { + "totalCount": { + "description": "The total number of apps under the Datadog organization, disregarding any filters applied.", + "format": "int64", + "type": "integer" + }, + "totalFilteredCount": { + "description": "The total number of apps that match the specified filters.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ListAppsResponseDataItems": { + "description": "An app definition object. This contains only basic information about the app such as ID, name, and tags.", + "properties": { + "attributes": { + "description": "Basic information about the app such as name, description, and tags.", + "properties": { + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "selfService": { + "description": "Whether the app is enabled for use in the Datadog self-service hub.", + "type": "boolean" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata of an app.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "relationships": { + "description": "The app's publication information.", + "properties": { + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "ListAppsResponseDataItemsAttributes": { + "description": "Basic information about the app such as name, description, and tags.", + "properties": { + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "selfService": { + "description": "Whether the app is enabled for use in the Datadog self-service hub.", + "type": "boolean" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ListAppsResponseDataItemsRelationships": { + "description": "The app's publication information.", + "properties": { + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ListAppsResponseMeta": { + "description": "Pagination metadata.", + "properties": { + "page": { + "description": "Information on the total number of apps, to be used for pagination.", + "properties": { + "totalCount": { + "description": "The total number of apps under the Datadog organization, disregarding any filters applied.", + "format": "int64", + "type": "integer" + }, + "totalFilteredCount": { + "description": "The total number of apps that match the specified filters.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ListAppsResponseMetaPage": { + "description": "Information on the total number of apps, to be used for pagination.", + "properties": { + "totalCount": { + "description": "The total number of apps under the Datadog organization, disregarding any filters applied.", + "format": "int64", + "type": "integer" + }, + "totalFilteredCount": { + "description": "The total number of apps that match the specified filters.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, "ListDevicesResponse": { "description": "List devices response.", "properties": { @@ -106612,6 +112677,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -106869,6 +112963,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -107109,6 +113232,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -107340,6 +113492,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -107559,408 +113740,495 @@ "example": "bucket-name", "type": "string" }, - "integration": { - "description": "The S3 Archive's integration destination.", + "encryption": { + "description": "The S3 encryption settings.", "properties": { - "account_id": { - "description": "The account ID for the integration.", - "example": "123456789012", - "type": "string" - }, - "role_name": { - "description": "The path of the integration.", - "example": "role-name", - "type": "string" - } - }, - "required": [ - "role_name", - "account_id" - ], - "type": "object" - }, - "path": { - "description": "The archive path.", - "type": "string" - }, - "type": { - "default": "s3", - "description": "Type of the S3 archive destination.", - "enum": [ - "s3" - ], - "example": "s3", - "type": "string", - "x-enum-varnames": [ - "S3" - ] - } - }, - "required": [ - "bucket", - "integration", - "type" - ], - "type": "object" - } - ] - }, - "include_tags": { - "default": false, - "description": "To store the tags in the archive, set the value \"true\".\nIf it is set to \"false\", the tags will be deleted when the logs are sent to the archive.", - "example": false, - "type": "boolean" - }, - "name": { - "description": "The archive name.", - "example": "Nginx Archive", - "type": "string" - }, - "query": { - "description": "The archive query/filter. Logs matching this query are included in the archive.", - "example": "source:nginx", - "type": "string" - }, - "rehydration_max_scan_size_in_gb": { - "description": "Maximum scan size for rehydration from this archive.", - "example": 100, - "format": "int64", - "nullable": true, - "type": "integer" - }, - "rehydration_tags": { - "description": "An array of tags to add to rehydrated logs from an archive.", - "example": [ - "team:intake", - "team:app" - ], - "items": { - "description": "A given tag in the `:` format.", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "name", - "query", - "destination" - ], - "type": "object" - }, - "type": { - "default": "archives", - "description": "The type of the resource. The value should always be archives.", - "example": "archives", - "type": "string" - } - }, - "required": [ - "type" - ], - "type": "object" - }, - "LogsArchiveCreateRequestDestination": { - "description": "An archive's destination.", - "oneOf": [ - { - "description": "The Azure archive destination.", - "properties": { - "container": { - "description": "The container where the archive will be stored.", - "example": "container-name", - "type": "string" - }, - "integration": { - "description": "The Azure archive's integration destination.", - "properties": { - "client_id": { - "description": "A client ID.", - "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", - "type": "string" - }, - "tenant_id": { - "description": "A tenant ID.", - "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", - "type": "string" - } - }, - "required": [ - "tenant_id", - "client_id" - ], - "type": "object" - }, - "path": { - "description": "The archive path.", - "type": "string" - }, - "region": { - "description": "The region where the archive will be stored.", - "type": "string" - }, - "storage_account": { - "description": "The associated storage account.", - "example": "account-name", - "type": "string" - }, - "type": { - "default": "azure", - "description": "Type of the Azure archive destination.", - "enum": [ - "azure" - ], - "example": "azure", - "type": "string", - "x-enum-varnames": [ - "AZURE" - ] - } - }, - "required": [ - "storage_account", - "container", - "integration", - "type" - ], - "type": "object" - }, - { - "description": "The GCS archive destination.", - "properties": { - "bucket": { - "description": "The bucket where the archive will be stored.", - "example": "bucket-name", - "type": "string" - }, - "integration": { - "description": "The GCS archive's integration destination.", - "properties": { - "client_email": { - "description": "A client email.", - "example": "youremail@example.com", - "type": "string" - }, - "project_id": { - "description": "A project ID.", - "example": "project-id", - "type": "string" - } - }, - "required": [ - "client_email" - ], - "type": "object" - }, - "path": { - "description": "The archive path.", - "type": "string" - }, - "type": { - "default": "gcs", - "description": "Type of the GCS archive destination.", - "enum": [ - "gcs" - ], - "example": "gcs", - "type": "string", - "x-enum-varnames": [ - "GCS" - ] - } - }, - "required": [ - "bucket", - "integration", - "type" - ], - "type": "object" - }, - { - "description": "The S3 archive destination.", - "properties": { - "bucket": { - "description": "The bucket where the archive will be stored.", - "example": "bucket-name", - "type": "string" - }, - "integration": { - "description": "The S3 Archive's integration destination.", - "properties": { - "account_id": { - "description": "The account ID for the integration.", - "example": "123456789012", - "type": "string" - }, - "role_name": { - "description": "The path of the integration.", - "example": "role-name", - "type": "string" - } - }, - "required": [ - "role_name", - "account_id" - ], - "type": "object" - }, - "path": { - "description": "The archive path.", - "type": "string" - }, - "type": { - "default": "s3", - "description": "Type of the S3 archive destination.", - "enum": [ - "s3" - ], - "example": "s3", - "type": "string", - "x-enum-varnames": [ - "S3" - ] - } - }, - "required": [ - "bucket", - "integration", - "type" - ], - "type": "object" - } - ] - }, - "LogsArchiveDefinition": { - "description": "The definition of an archive.", - "properties": { - "attributes": { - "description": "The attributes associated with the archive.", - "properties": { - "destination": { - "description": "An archive's destination.", - "nullable": true, - "oneOf": [ - { - "description": "The Azure archive destination.", - "properties": { - "container": { - "description": "The container where the archive will be stored.", - "example": "container-name", - "type": "string" - }, - "integration": { - "description": "The Azure archive's integration destination.", - "properties": { - "client_id": { - "description": "A client ID.", - "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", - "type": "string" - }, - "tenant_id": { - "description": "A tenant ID.", - "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", - "type": "string" - } - }, - "required": [ - "tenant_id", - "client_id" - ], - "type": "object" - }, - "path": { - "description": "The archive path.", - "type": "string" - }, - "region": { - "description": "The region where the archive will be stored.", - "type": "string" - }, - "storage_account": { - "description": "The associated storage account.", - "example": "account-name", - "type": "string" - }, - "type": { - "default": "azure", - "description": "Type of the Azure archive destination.", - "enum": [ - "azure" - ], - "example": "azure", - "type": "string", - "x-enum-varnames": [ - "AZURE" - ] - } - }, - "required": [ - "storage_account", - "container", - "integration", - "type" - ], - "type": "object" - }, - { - "description": "The GCS archive destination.", - "properties": { - "bucket": { - "description": "The bucket where the archive will be stored.", - "example": "bucket-name", - "type": "string" - }, - "integration": { - "description": "The GCS archive's integration destination.", - "properties": { - "client_email": { - "description": "A client email.", - "example": "youremail@example.com", + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", "type": "string" }, - "project_id": { - "description": "A project ID.", - "example": "project-id", - "type": "string" + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] } }, "required": [ - "client_email" + "type" + ], + "type": "object" + }, + "integration": { + "description": "The S3 Archive's integration destination.", + "properties": { + "account_id": { + "description": "The account ID for the integration.", + "example": "123456789012", + "type": "string" + }, + "role_name": { + "description": "The path of the integration.", + "example": "role-name", + "type": "string" + } + }, + "required": [ + "role_name", + "account_id" + ], + "type": "object" + }, + "path": { + "description": "The archive path.", + "type": "string" + }, + "type": { + "default": "s3", + "description": "Type of the S3 archive destination.", + "enum": [ + "s3" + ], + "example": "s3", + "type": "string", + "x-enum-varnames": [ + "S3" + ] + } + }, + "required": [ + "bucket", + "integration", + "type" + ], + "type": "object" + } + ] + }, + "include_tags": { + "default": false, + "description": "To store the tags in the archive, set the value \"true\".\nIf it is set to \"false\", the tags will be deleted when the logs are sent to the archive.", + "example": false, + "type": "boolean" + }, + "name": { + "description": "The archive name.", + "example": "Nginx Archive", + "type": "string" + }, + "query": { + "description": "The archive query/filter. Logs matching this query are included in the archive.", + "example": "source:nginx", + "type": "string" + }, + "rehydration_max_scan_size_in_gb": { + "description": "Maximum scan size for rehydration from this archive.", + "example": 100, + "format": "int64", + "nullable": true, + "type": "integer" + }, + "rehydration_tags": { + "description": "An array of tags to add to rehydrated logs from an archive.", + "example": [ + "team:intake", + "team:app" + ], + "items": { + "description": "A given tag in the `:` format.", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "name", + "query", + "destination" + ], + "type": "object" + }, + "type": { + "default": "archives", + "description": "The type of the resource. The value should always be archives.", + "example": "archives", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "LogsArchiveCreateRequestDestination": { + "description": "An archive's destination.", + "oneOf": [ + { + "description": "The Azure archive destination.", + "properties": { + "container": { + "description": "The container where the archive will be stored.", + "example": "container-name", + "type": "string" + }, + "integration": { + "description": "The Azure archive's integration destination.", + "properties": { + "client_id": { + "description": "A client ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string" + }, + "tenant_id": { + "description": "A tenant ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string" + } + }, + "required": [ + "tenant_id", + "client_id" + ], + "type": "object" + }, + "path": { + "description": "The archive path.", + "type": "string" + }, + "region": { + "description": "The region where the archive will be stored.", + "type": "string" + }, + "storage_account": { + "description": "The associated storage account.", + "example": "account-name", + "type": "string" + }, + "type": { + "default": "azure", + "description": "Type of the Azure archive destination.", + "enum": [ + "azure" + ], + "example": "azure", + "type": "string", + "x-enum-varnames": [ + "AZURE" + ] + } + }, + "required": [ + "storage_account", + "container", + "integration", + "type" + ], + "type": "object" + }, + { + "description": "The GCS archive destination.", + "properties": { + "bucket": { + "description": "The bucket where the archive will be stored.", + "example": "bucket-name", + "type": "string" + }, + "integration": { + "description": "The GCS archive's integration destination.", + "properties": { + "client_email": { + "description": "A client email.", + "example": "youremail@example.com", + "type": "string" + }, + "project_id": { + "description": "A project ID.", + "example": "project-id", + "type": "string" + } + }, + "required": [ + "client_email" + ], + "type": "object" + }, + "path": { + "description": "The archive path.", + "type": "string" + }, + "type": { + "default": "gcs", + "description": "Type of the GCS archive destination.", + "enum": [ + "gcs" + ], + "example": "gcs", + "type": "string", + "x-enum-varnames": [ + "GCS" + ] + } + }, + "required": [ + "bucket", + "integration", + "type" + ], + "type": "object" + }, + { + "description": "The S3 archive destination.", + "properties": { + "bucket": { + "description": "The bucket where the archive will be stored.", + "example": "bucket-name", + "type": "string" + }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "integration": { + "description": "The S3 Archive's integration destination.", + "properties": { + "account_id": { + "description": "The account ID for the integration.", + "example": "123456789012", + "type": "string" + }, + "role_name": { + "description": "The path of the integration.", + "example": "role-name", + "type": "string" + } + }, + "required": [ + "role_name", + "account_id" + ], + "type": "object" + }, + "path": { + "description": "The archive path.", + "type": "string" + }, + "type": { + "default": "s3", + "description": "Type of the S3 archive destination.", + "enum": [ + "s3" + ], + "example": "s3", + "type": "string", + "x-enum-varnames": [ + "S3" + ] + } + }, + "required": [ + "bucket", + "integration", + "type" + ], + "type": "object" + } + ] + }, + "LogsArchiveDefinition": { + "description": "The definition of an archive.", + "properties": { + "attributes": { + "description": "The attributes associated with the archive.", + "properties": { + "destination": { + "description": "An archive's destination.", + "nullable": true, + "oneOf": [ + { + "description": "The Azure archive destination.", + "properties": { + "container": { + "description": "The container where the archive will be stored.", + "example": "container-name", + "type": "string" + }, + "integration": { + "description": "The Azure archive's integration destination.", + "properties": { + "client_id": { + "description": "A client ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string" + }, + "tenant_id": { + "description": "A tenant ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string" + } + }, + "required": [ + "tenant_id", + "client_id" + ], + "type": "object" + }, + "path": { + "description": "The archive path.", + "type": "string" + }, + "region": { + "description": "The region where the archive will be stored.", + "type": "string" + }, + "storage_account": { + "description": "The associated storage account.", + "example": "account-name", + "type": "string" + }, + "type": { + "default": "azure", + "description": "Type of the Azure archive destination.", + "enum": [ + "azure" + ], + "example": "azure", + "type": "string", + "x-enum-varnames": [ + "AZURE" + ] + } + }, + "required": [ + "storage_account", + "container", + "integration", + "type" + ], + "type": "object" + }, + { + "description": "The GCS archive destination.", + "properties": { + "bucket": { + "description": "The bucket where the archive will be stored.", + "example": "bucket-name", + "type": "string" + }, + "integration": { + "description": "The GCS archive's integration destination.", + "properties": { + "client_email": { + "description": "A client email.", + "example": "youremail@example.com", + "type": "string" + }, + "project_id": { + "description": "A project ID.", + "example": "project-id", + "type": "string" + } + }, + "required": [ + "client_email" + ], + "type": "object" + }, + "path": { + "description": "The archive path.", + "type": "string" + }, + "type": { + "default": "gcs", + "description": "Type of the GCS archive destination.", + "enum": [ + "gcs" + ], + "example": "gcs", + "type": "string", + "x-enum-varnames": [ + "GCS" + ] + } + }, + "required": [ + "bucket", + "integration", + "type" + ], + "type": "object" + }, + { + "description": "The S3 archive destination.", + "properties": { + "bucket": { + "description": "The bucket where the archive will be stored.", + "example": "bucket-name", + "type": "string" + }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" ], "type": "object" }, - "path": { - "description": "The archive path.", - "type": "string" - }, - "type": { - "default": "gcs", - "description": "Type of the GCS archive destination.", - "enum": [ - "gcs" - ], - "example": "gcs", - "type": "string", - "x-enum-varnames": [ - "GCS" - ] - } - }, - "required": [ - "bucket", - "integration", - "type" - ], - "type": "object" - }, - { - "description": "The S3 archive destination.", - "properties": { - "bucket": { - "description": "The bucket where the archive will be stored.", - "example": "bucket-name", - "type": "string" - }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -108212,6 +114480,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -108404,6 +114701,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -108460,6 +114786,50 @@ "S3" ] }, + "LogsArchiveEncryptionS3": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "LogsArchiveEncryptionS3Type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + }, "LogsArchiveIntegrationAzure": { "description": "The Azure archive's integration destination.", "properties": { @@ -108800,6 +115170,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -118724,6 +125123,646 @@ }, "type": "object" }, + "NotificationRule": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + }, + "NotificationRuleAttributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "NotificationRuleQuery": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "NotificationRuleResponse": { + "description": "Response object which includes a notification rule.", + "properties": { + "data": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "NotificationRulesType": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + }, "NullableRelationshipToUser": { "description": "Relationship to user.", "nullable": true, @@ -122624,6 +129663,465 @@ }, "type": "object" }, + "PatchNotificationRuleParameters": { + "description": "Body of the notification rule patch request.", + "properties": { + "data": { + "description": "Data of the notification rule patch request: the rule ID, the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + }, + "PatchNotificationRuleParametersData": { + "description": "Data of the notification rule patch request: the rule ID, the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + }, + "PatchNotificationRuleParametersDataAttributes": { + "description": "Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, "Permission": { "description": "Permission object.", "properties": { @@ -126330,6 +133828,179 @@ }, "type": "object" }, + "PublishAppResponse": { + "description": "The response object after an app is successfully published.", + "properties": { + "data": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "Query": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, "QueryFormula": { "description": "A formula for calculation based on one or more queries.", "properties": { @@ -126383,6 +134054,21 @@ "DESC" ] }, + "QueryType": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + }, "RUMAggregateBucketValue": { "description": "A bucket value, can be either a timeseries or a single value.", "oneOf": [ @@ -134356,6 +142042,11 @@ "example": "q8MQxk8TCqrHnWkx", "type": "string" }, + "RuleName": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, "RuleOutcomeRelationships": { "description": "The JSON:API relationship to a scorecard rule.", "properties": { @@ -134391,6 +142082,27 @@ }, "type": "object" }, + "RuleSeverity": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, "RuleType": { "default": "rule", "description": "The JSON:API type for scorecard rules.", @@ -134403,6 +142115,98 @@ "RULE" ] }, + "RuleTypes": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "RuleTypesItems": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "RuleUser": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, "RumMetricCompute": { "description": "The compute rule to compute the rum-based metric.", "properties": { @@ -158004,6 +165808,100 @@ }, "type": "object" }, + "Selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, "SensitiveDataScannerConfigRequest": { "description": "Group reorder request.", "properties": { @@ -176755,6 +184653,17 @@ }, "type": "array" }, + "Targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, "Team": { "description": "A team", "properties": { @@ -180337,6 +188246,12 @@ }, "type": "object" }, + "TimeAggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, "TimeseriesFormulaQueryRequest": { "description": "A request wrapper around a single timeseries query to be executed.", "properties": { @@ -182401,6 +190316,19 @@ "SECRET" ] }, + "TriggerSource": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + }, "Unit": { "description": "Object containing the metric unit family, scale factor, name, and short name.", "nullable": true, @@ -182434,6 +190362,74 @@ }, "type": "object" }, + "UnpublishAppResponse": { + "description": "The response object after an app is successfully unpublished.", + "properties": { + "data": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, "UpdateActionConnectionRequest": { "description": "Request used to update an action connection.", "properties": { @@ -182983,997 +190979,3643 @@ }, "type": "object" }, - "UpdateOpenAPIResponse": { - "description": "Response for `UpdateOpenAPI`.", + "UpdateAppRequest": { + "description": "A request object for updating an existing app.", + "example": { + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isDisabled": false, + "isLoading": false, + "isVisible": true, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42" + }, + "type": "calloutValue" + } + ], + "isVisible": "true", + "layout": { + "default": { + "height": 8, + "width": 2, + "x": 0, + "y": 0 + } + } + }, + "type": "gridCell" + } + ] + }, + "type": "grid" + } + ], + "description": "This is a simple example app", + "embeddedQueries": [], + "name": "Example App", + "rootInstanceName": "grid0" + }, + "id": "9e20cbaf-68da-45a6-9ccf-54193ac29fa5", + "type": "appDefinitions" + } + }, "properties": { "data": { - "description": "Data envelope for `UpdateOpenAPIResponse`.", + "description": "The data object containing the new app definition. Any fields not included in the request remain unchanged.", "properties": { "attributes": { - "description": "Attributes for `UpdateOpenAPI`.", + "description": "App definition attributes to be updated, such as name, description, and components.", "properties": { - "failed_endpoints": { - "description": "List of endpoints which couldn't be parsed.", + "components": { + "description": "The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field.", "items": { - "description": "Endpoint info extracted from an `OpenAPI` specification.", + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", "properties": { - "method": { - "description": "The endpoint method.", + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", "type": "string" }, - "path": { - "description": "The endpoint path.", + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] } }, + "required": [ + "name", + "type", + "properties" + ], "type": "object" }, "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "UpdateOpenAPIResponseAttributes": { - "description": "Attributes for `UpdateOpenAPI`.", - "properties": { - "failed_endpoints": { - "description": "List of endpoints which couldn't be parsed.", - "items": { - "description": "Endpoint info extracted from an `OpenAPI` specification.", - "properties": { - "method": { - "description": "The endpoint method.", - "type": "string" - }, - "path": { - "description": "The endpoint path.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "UpdateOpenAPIResponseData": { - "description": "Data envelope for `UpdateOpenAPIResponse`.", - "properties": { - "attributes": { - "description": "Attributes for `UpdateOpenAPI`.", - "properties": { - "failed_endpoints": { - "description": "List of endpoints which couldn't be parsed.", - "items": { - "description": "Endpoint info extracted from an `OpenAPI` specification.", - "properties": { - "method": { - "description": "The endpoint method.", - "type": "string" - }, - "path": { - "description": "The endpoint path.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" - } - }, - "type": "object" - }, - "UpdateRuleRequest": { - "description": "Request to update a scorecard rule.", - "properties": { - "data": { - "description": "Data for the request to update a scorecard rule.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" }, "description": { - "description": "Explanation of the rule.", + "description": "The new human-readable description for the app.", "type": "string" }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" + "embeddedQueries": { + "description": "The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" }, "name": { - "description": "Name of the rule.", - "example": "Team Defined", + "description": "The new name of the app.", "type": "string" }, - "owner": { - "description": "Owner of the rule.", + "rootInstanceName": { + "description": "The new name of the root component of the app. This must be a `grid` component that contains all other components.", "type": "string" }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" + "tags": { + "description": "The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, "type": "object" }, + "id": { + "description": "The ID of the app to update. The app ID must match the ID in the URL path.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", + "default": "appDefinitions", + "description": "The app definition type.", "enum": [ - "rule" + "appDefinitions" ], - "example": "rule", + "example": "appDefinitions", "type": "string", "x-enum-varnames": [ - "RULE" + "APPDEFINITIONS" ] } }, + "required": [ + "type" + ], "type": "object" } }, "type": "object" }, - "UpdateRuleRequestData": { - "description": "Data for the request to update a scorecard rule.", + "UpdateAppRequestData": { + "description": "The data object containing the new app definition. Any fields not included in the request remain unchanged.", "properties": { "attributes": { - "description": "Details of a rule.", + "description": "App definition attributes to be updated, such as name, description, and components.", "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" + "components": { + "description": "The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" }, "description": { - "description": "Explanation of the rule.", + "description": "The new human-readable description for the app.", "type": "string" }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" + "embeddedQueries": { + "description": "The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" }, "name": { - "description": "Name of the rule.", - "example": "Team Defined", + "description": "The new name of the app.", "type": "string" }, - "owner": { - "description": "Owner of the rule.", + "rootInstanceName": { + "description": "The new name of the root component of the app. This must be a `grid` component that contains all other components.", "type": "string" }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" + "tags": { + "description": "The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, "type": "object" }, + "id": { + "description": "The ID of the app to update. The app ID must match the ID in the URL path.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", + "default": "appDefinitions", + "description": "The app definition type.", "enum": [ - "rule" + "appDefinitions" ], - "example": "rule", + "example": "appDefinitions", "type": "string", "x-enum-varnames": [ - "RULE" + "APPDEFINITIONS" ] } }, + "required": [ + "type" + ], "type": "object" }, - "UpdateRuleResponse": { - "description": "The response from a rule update request.", + "UpdateAppRequestDataAttributes": { + "description": "App definition attributes to be updated, such as name, description, and components.", "properties": { - "data": { - "description": "The data for a rule update response.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" - }, - "description": { - "description": "Explanation of the rule.", - "type": "string" - }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" - }, - "owner": { - "description": "Owner of the rule.", - "type": "string" + "components": { + "description": "The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" - } + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" }, - "type": "object" - }, - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "relationships": { - "description": "Scorecard create rule response relationship.", "properties": { - "scorecard": { - "description": "Relationship data for a rule.", - "properties": { - "data": { - "description": "Rule relationship data.", + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, "id": { - "description": "The unique ID for a scorecard.", - "example": "q8MQxk8TCqrHnWkp", + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", "type": "string" }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, "type": { - "default": "scorecard", - "description": "The JSON:API type for scorecard.", + "description": "The UI component type.", "enum": [ - "scorecard" + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" ], - "example": "scorecard", + "example": "text", "type": "string", "x-enum-varnames": [ - "SCORECARD" + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" ] } }, + "required": [ + "name", + "type", + "properties" + ], "type": "object" - } + }, + "type": "array" }, - "type": "object" - } + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" }, - "type": "object" - }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" - } - }, - "type": "object" - }, - "UpdateRuleResponseData": { - "description": "The data for a rule update response.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" - }, - "description": { - "description": "Explanation of the rule.", - "type": "string" - }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" - }, - "owner": { - "description": "Owner of the rule.", - "type": "string" + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" - } + "required": [ + "name", + "type", + "properties" + ], + "type": "object" }, - "type": "object" + "type": "array" }, - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", + "description": { + "description": "The new human-readable description for the app.", "type": "string" }, - "relationships": { - "description": "Scorecard create rule response relationship.", - "properties": { - "scorecard": { - "description": "Relationship data for a rule.", - "properties": { - "data": { - "description": "Rule relationship data.", + "embeddedQueries": { + "description": "The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", "properties": { - "id": { - "description": "The unique ID for a scorecard.", - "example": "q8MQxk8TCqrHnWkp", - "type": "string" + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] }, "type": { - "default": "scorecard", - "description": "The JSON:API type for scorecard.", + "description": "The response to the event.", "enum": [ - "scorecard" + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" ], - "example": "scorecard", + "example": "triggerQuery", "type": "string", "x-enum-varnames": [ - "SCORECARD" + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" ] } }, "type": "object" - } + }, + "type": "array" }, - "type": "object" - } + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" }, - "type": "object" + "type": "array" }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" + "name": { + "description": "The new name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The new name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed.", + "example": [ + "service:webshop-backend", + "team:webshop" ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, "type": "object" }, - "UpsertCatalogEntityRequest": { - "description": "Create or update entity request.", - "oneOf": [ - { - "description": "Entity schema v3.", - "oneOf": [ - { - "additionalProperties": false, - "description": "Schema for service entities.", + "UpdateAppResponse": { + "description": "The response object after an app is successfully updated.", + "properties": { + "data": { + "description": "The data object containing the updated app definition.", + "properties": { + "attributes": { + "description": "The updated app definition attributes, such as name, description, and components.", "properties": { - "apiVersion": { - "description": "The schema version of entity type. The field is known as schema-version in the previous version.", - "enum": [ - "v3" - ], - "example": "v3", - "type": "string", - "x-enum-varnames": [ - "V3" - ] - }, - "datadog": { - "additionalProperties": false, - "description": "Datadog product integrations for the service entity.", - "properties": { - "codeLocations": { - "additionalProperties": false, - "description": "Schema for mapping source code locations to an entity.", - "items": { - "additionalProperties": false, - "description": "Code location item.", - "properties": { - "paths": { - "description": "The paths (glob) to the source code of the service.", - "items": { - "type": "string" + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] }, - "type": "array" + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } }, - "repositoryURL": { - "description": "The repository path of the source code of the entity.", - "pattern": "url", - "type": "string" - } + "type": "object" }, - "type": "object" + "type": "array" }, - "type": "array" - }, - "events": { - "additionalProperties": false, - "description": "Events associations.", - "items": { - "additionalProperties": false, - "description": "Events association item.", - "properties": { - "name": { - "description": "The name of the query.", - "type": "string" - }, - "query": { - "description": "The query to run.", - "type": "string" - } - }, - "type": "object" + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" }, - "type": "array" - }, - "logs": { - "additionalProperties": false, - "description": "Logs association.", - "items": { - "additionalProperties": false, - "description": "Log association item.", + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", "properties": { - "name": { - "description": "The name of the query.", + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", "type": "string" }, - "query": { - "description": "The query to run.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "performanceData": { - "additionalProperties": false, - "description": "Performance stats association.", - "properties": { - "tags": { - "description": "A list of APM entity tags that associates the APM Stats data with the entity.", - "items": { - "type": "string" + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" }, - "type": "array" - } + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" }, - "type": "object" + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } }, - "pipelines": { - "additionalProperties": false, - "description": "CI Pipelines association.", - "properties": { - "fingerprints": { - "description": "A list of CI Fingerprints that associate CI Pipelines with the entity.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } + "required": [ + "name", + "type", + "properties" + ], + "type": "object" }, - "type": "object" + "type": "array" }, - "extensions": { - "additionalProperties": {}, - "description": "Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.", - "type": "object", - "x-ignore-duplicate-object": true + "description": { + "description": "The human-readable description for the app.", + "type": "string" }, - "integrations": { - "additionalProperties": false, - "description": "A base schema for defining third-party integrations.", - "properties": { - "opsgenie": { - "additionalProperties": false, - "description": "An Opsgenie integration schema.", - "properties": { - "region": { - "description": "The region for the Opsgenie integration.", - "minLength": 1, - "type": "string" + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" }, - "serviceURL": { - "description": "The service URL for the Opsgenie integration.", - "example": "https://www.opsgenie.com/service/shopping-cart", - "minLength": 1, - "type": "string" - } + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" }, - "required": [ - "serviceURL" - ], - "type": "object" - }, - "pagerduty": { - "additionalProperties": false, - "description": "A PagerDuty integration schema.", "properties": { - "serviceURL": { - "description": "The service URL for the PagerDuty integration.", - "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", - "minLength": 1, - "type": "string" - } + "description": "The properties of the query. The properties vary depending on the query type." }, - "required": [ - "serviceURL" - ], - "type": "object" - } + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" }, - "type": "object" + "type": "array" }, - "kind": { - "description": "The definition of Entity V3 Service Kind object.", - "enum": [ - "service" + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" ], - "example": "service", - "type": "string", - "x-enum-varnames": [ - "SERVICE" - ] + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the updated app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "included": { + "description": "Data on the version of the app that was published.", + "items": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } }, - "metadata": { - "additionalProperties": false, - "description": "The definition of Entity V3 Metadata object.", - "properties": { - "additionalOwners": { - "additionalProperties": false, - "description": "The additional owners of the entity, usually a team.", - "items": { - "description": "The definition of Entity V3 Metadata Additional Owners Items object.", - "properties": { - "name": { - "description": "Team name.", - "example": "", - "type": "string" - }, - "type": { - "description": "Team type.", - "type": "string" - } - }, - "required": [ - "name" - ] - }, - "type": "array" - }, - "contacts": { - "additionalProperties": false, - "description": "A list of contacts for the entity.", - "items": { - "additionalProperties": false, - "description": "The definition of Entity V3 Metadata Contacts Items object.", - "properties": { - "contact": { - "description": "Contact value.", - "example": "https://slack/", - "type": "string" - }, - "name": { - "description": "Contact name.", - "minLength": 2, - "type": "string" - }, - "type": { - "description": "Contact type.", - "example": "slack", - "type": "string" - } - }, - "required": [ - "type", - "contact" - ], - "type": "object" + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata of an app.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "relationship": { + "description": "The app's publication relationship and custom connections.", + "properties": { + "connections": { + "description": "Array of custom connections used by the app.", + "items": { + "description": "A custom connection used by an app.", + "properties": { + "attributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" }, - "type": "array" - }, - "description": { - "description": "Short description of the entity. The UI can leverage the description for display.", - "type": "string" - }, - "displayName": { - "description": "User friendly name of the entity. The UI can leverage the display name for display.", - "type": "string" - }, - "id": { - "description": "A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.", - "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", - "minLength": 1, - "type": "string" - }, - "inheritFrom": { - "description": "The entity reference from which to inherit metadata", - "example": "application:default/myapp", - "type": "string" - }, - "links": { - "additionalProperties": false, - "description": "A list of links for the entity.", - "items": { - "additionalProperties": false, - "description": "The definition of Entity V3 Metadata Links Items object.", + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", "properties": { - "name": { - "description": "Link name.", - "example": "mylink", - "type": "string" - }, - "provider": { - "description": "Link provider.", - "type": "string" - }, - "type": { - "default": "other", - "description": "Link type.", - "example": "link", + "id": { + "description": "The Private Action Runner ID.", "type": "string" }, "url": { - "description": "Link URL.", - "example": "https://mylink", + "description": "The URL of the Private Action Runner.", "type": "string" } }, - "required": [ - "name", - "type", - "url" - ], "type": "object" - }, - "type": "array" - }, - "managed": { - "additionalProperties": {}, - "description": "A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.", - "type": "object" - }, - "name": { - "description": "Unique name given to an entity under the kind/namespace.", - "example": "myService", - "minLength": 1, - "type": "string" + } }, - "namespace": { - "description": "Namespace is a part of unique identifier. It has a default value of 'default'.", - "example": "default", - "minLength": 1, + "type": "object" + }, + "id": { + "description": "The ID of the custom connection.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" }, - "owner": { - "additionalProperties": false, - "description": "The owner of the entity, usually a team.", - "properties": { - "name": { - "description": "Team name.", - "type": "string" - } - } - }, - "tags": { - "description": "A set of custom tags.", - "example": [ - "this:tag", - "that:tag" + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" ], - "items": { - "type": "string" - }, - "type": "array" + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] } }, - "required": [ - "name" - ], "type": "object" }, - "spec": { - "additionalProperties": false, - "description": "The definition of Entity V3 Service Spec object.", + "meta": { + "description": "Metadata object containing the publication creation information.", "properties": { - "dependsOn": { - "description": "A list of components the service depends on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "languages": { - "description": "The service's programming language.", - "items": { - "type": "string" - }, - "type": "array" - }, - "lifecycle": { - "description": "The lifecycle state of the component.", - "minLength": 1, + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", "type": "string" }, - "tier": { - "description": "The importance of the component.", - "minLength": 1, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", "type": "string" }, - "type": { - "description": "The type of service.", + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" } }, "type": "object" } }, - "required": [ - "apiVersion", - "kind", - "metadata" - ], "type": "object" - }, - { - "additionalProperties": false, - "description": "Schema for datastore entities.", - "properties": { - "apiVersion": { - "description": "The schema version of entity type. The field is known as schema-version in the previous version.", - "enum": [ - "v3" - ], - "example": "v3", - "type": "string", - "x-enum-varnames": [ - "V3" - ] - }, - "datadog": { - "additionalProperties": false, - "description": "Datadog product integrations for the datastore entity.", + } + }, + "type": "object" + } + }, + "type": "object" + }, + "UpdateAppResponseData": { + "description": "The data object containing the updated app definition.", + "properties": { + "attributes": { + "description": "The updated app definition attributes, such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, "properties": { - "events": { - "additionalProperties": false, - "description": "Events associations.", - "items": { - "additionalProperties": false, - "description": "Events association item.", - "properties": { - "name": { - "description": "The name of the query.", - "type": "string" + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } }, - "query": { - "description": "The query to run.", - "type": "string" - } + "required": [ + "name", + "type", + "properties" + ], + "type": "object" }, - "type": "object" + "type": "array" }, - "type": "array" - }, - "logs": { - "additionalProperties": false, - "description": "Logs association.", - "items": { - "additionalProperties": false, - "description": "Log association item.", - "properties": { - "name": { - "description": "The name of the query.", + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { "type": "string" }, - "query": { - "description": "The query to run.", - "type": "string" + { + "default": true, + "type": "boolean" } - }, - "type": "object" - }, - "type": "array" + ] + } }, - "performanceData": { - "additionalProperties": false, - "description": "Performance stats association.", + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "The human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", "properties": { - "tags": { - "description": "A list of APM entity tags that associates the APM Stats data with the entity.", - "items": { - "type": "string" - }, - "type": "array" + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] } }, "type": "object" - } + }, + "type": "array" }, - "type": "object", - "x-ignore-duplicate-object": true + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } }, - "extensions": { + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the updated app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "UpdateAppResponseDataAttributes": { + "description": "The updated app definition attributes, such as name, description, and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { "additionalProperties": {}, - "description": "Custom extensions. This is the free-formed field to send client side metadata. No Datadog features are affected by this field.", - "type": "object", - "x-ignore-duplicate-object": true - }, - "integrations": { - "additionalProperties": false, - "description": "A base schema for defining third-party integrations.", + "description": "An event on a UI component that triggers a response or action in an app.", "properties": { - "opsgenie": { - "additionalProperties": false, - "description": "An Opsgenie integration schema.", + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", "properties": { - "region": { - "description": "The region for the Opsgenie integration.", - "minLength": 1, + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, "type": "string" }, - "serviceURL": { - "description": "The service URL for the Opsgenie integration.", - "example": "https://www.opsgenie.com/service/shopping-cart", - "minLength": 1, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] } }, "required": [ - "serviceURL" + "name", + "type", + "properties" ], "type": "object" }, - "pagerduty": { - "additionalProperties": false, - "description": "A PagerDuty integration schema.", - "properties": { - "serviceURL": { - "description": "The service URL for the PagerDuty integration.", - "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", - "minLength": 1, - "type": "string" - } + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" }, - "required": [ - "serviceURL" + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "The human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" ], - "type": "object" + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] } }, "type": "object" }, - "kind": { - "description": "The definition of Entity V3 Datastore Kind object.", - "enum": [ - "datastore" - ], - "example": "datastore", - "type": "string", - "x-enum-varnames": [ - "DATASTORE" - ] - }, - "metadata": { - "additionalProperties": false, - "description": "The definition of Entity V3 Metadata object.", - "properties": { - "additionalOwners": { - "additionalProperties": false, - "description": "The additional owners of the entity, usually a team.", - "items": { - "description": "The definition of Entity V3 Metadata Additional Owners Items object.", - "properties": { - "name": { - "description": "Team name.", - "example": "", - "type": "string" + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "UpdateOpenAPIResponse": { + "description": "Response for `UpdateOpenAPI`.", + "properties": { + "data": { + "description": "Data envelope for `UpdateOpenAPIResponse`.", + "properties": { + "attributes": { + "description": "Attributes for `UpdateOpenAPI`.", + "properties": { + "failed_endpoints": { + "description": "List of endpoints which couldn't be parsed.", + "items": { + "description": "Endpoint info extracted from an `OpenAPI` specification.", + "properties": { + "method": { + "description": "The endpoint method.", + "type": "string" + }, + "path": { + "description": "The endpoint path.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "UpdateOpenAPIResponseAttributes": { + "description": "Attributes for `UpdateOpenAPI`.", + "properties": { + "failed_endpoints": { + "description": "List of endpoints which couldn't be parsed.", + "items": { + "description": "Endpoint info extracted from an `OpenAPI` specification.", + "properties": { + "method": { + "description": "The endpoint method.", + "type": "string" + }, + "path": { + "description": "The endpoint path.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "UpdateOpenAPIResponseData": { + "description": "Data envelope for `UpdateOpenAPIResponse`.", + "properties": { + "attributes": { + "description": "Attributes for `UpdateOpenAPI`.", + "properties": { + "failed_endpoints": { + "description": "List of endpoints which couldn't be parsed.", + "items": { + "description": "Endpoint info extracted from an `OpenAPI` specification.", + "properties": { + "method": { + "description": "The endpoint method.", + "type": "string" + }, + "path": { + "description": "The endpoint path.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "UpdateRuleRequest": { + "description": "Request to update a scorecard rule.", + "properties": { + "data": { + "description": "Data for the request to update a scorecard rule.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "UpdateRuleRequestData": { + "description": "Data for the request to update a scorecard rule.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + }, + "UpdateRuleResponse": { + "description": "The response from a rule update request.", + "properties": { + "data": { + "description": "The data for a rule update response.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "relationships": { + "description": "Scorecard create rule response relationship.", + "properties": { + "scorecard": { + "description": "Relationship data for a rule.", + "properties": { + "data": { + "description": "Rule relationship data.", + "properties": { + "id": { + "description": "The unique ID for a scorecard.", + "example": "q8MQxk8TCqrHnWkp", + "type": "string" + }, + "type": { + "default": "scorecard", + "description": "The JSON:API type for scorecard.", + "enum": [ + "scorecard" + ], + "example": "scorecard", + "type": "string", + "x-enum-varnames": [ + "SCORECARD" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + } + }, + "type": "object" + }, + "UpdateRuleResponseData": { + "description": "The data for a rule update response.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "relationships": { + "description": "Scorecard create rule response relationship.", + "properties": { + "scorecard": { + "description": "Relationship data for a rule.", + "properties": { + "data": { + "description": "Rule relationship data.", + "properties": { + "id": { + "description": "The unique ID for a scorecard.", + "example": "q8MQxk8TCqrHnWkp", + "type": "string" + }, + "type": { + "default": "scorecard", + "description": "The JSON:API type for scorecard.", + "enum": [ + "scorecard" + ], + "example": "scorecard", + "type": "string", + "x-enum-varnames": [ + "SCORECARD" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + }, + "UpsertCatalogEntityRequest": { + "description": "Create or update entity request.", + "oneOf": [ + { + "description": "Entity schema v3.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Schema for service entities.", + "properties": { + "apiVersion": { + "description": "The schema version of entity type. The field is known as schema-version in the previous version.", + "enum": [ + "v3" + ], + "example": "v3", + "type": "string", + "x-enum-varnames": [ + "V3" + ] + }, + "datadog": { + "additionalProperties": false, + "description": "Datadog product integrations for the service entity.", + "properties": { + "codeLocations": { + "additionalProperties": false, + "description": "Schema for mapping source code locations to an entity.", + "items": { + "additionalProperties": false, + "description": "Code location item.", + "properties": { + "paths": { + "description": "The paths (glob) to the source code of the service.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repositoryURL": { + "description": "The repository path of the source code of the entity.", + "pattern": "url", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "events": { + "additionalProperties": false, + "description": "Events associations.", + "items": { + "additionalProperties": false, + "description": "Events association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string" + }, + "query": { + "description": "The query to run.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "logs": { + "additionalProperties": false, + "description": "Logs association.", + "items": { + "additionalProperties": false, + "description": "Log association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string" + }, + "query": { + "description": "The query to run.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "performanceData": { + "additionalProperties": false, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A list of APM entity tags that associates the APM Stats data with the entity.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "pipelines": { + "additionalProperties": false, + "description": "CI Pipelines association.", + "properties": { + "fingerprints": { + "description": "A list of CI Fingerprints that associate CI Pipelines with the entity.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.", + "type": "object", + "x-ignore-duplicate-object": true + }, + "integrations": { + "additionalProperties": false, + "description": "A base schema for defining third-party integrations.", + "properties": { + "opsgenie": { + "additionalProperties": false, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The region for the Opsgenie integration.", + "minLength": 1, + "type": "string" + }, + "serviceURL": { + "description": "The service URL for the Opsgenie integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "serviceURL" + ], + "type": "object" + }, + "pagerduty": { + "additionalProperties": false, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The service URL for the PagerDuty integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "serviceURL" + ], + "type": "object" + } + }, + "type": "object" + }, + "kind": { + "description": "The definition of Entity V3 Service Kind object.", + "enum": [ + "service" + ], + "example": "service", + "type": "string", + "x-enum-varnames": [ + "SERVICE" + ] + }, + "metadata": { + "additionalProperties": false, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": false, + "description": "The additional owners of the entity, usually a team.", + "items": { + "description": "The definition of Entity V3 Metadata Additional Owners Items object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string" }, "type": { "description": "Team type.", @@ -184119,20 +194761,34 @@ }, "spec": { "additionalProperties": false, - "description": "The definition of Entity V3 Datastore Spec object.", + "description": "The definition of Entity V3 Service Spec object.", "properties": { + "dependsOn": { + "description": "A list of components the service depends on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "languages": { + "description": "The service's programming language.", + "items": { + "type": "string" + }, + "type": "array" + }, "lifecycle": { - "description": "The lifecycle state of the datastore.", + "description": "The lifecycle state of the component.", "minLength": 1, "type": "string" }, "tier": { - "description": "The importance of the datastore.", + "description": "The importance of the component.", "minLength": 1, "type": "string" }, "type": { - "description": "The type of datastore.", + "description": "The type of service.", "type": "string" } }, @@ -184148,7 +194804,7 @@ }, { "additionalProperties": false, - "description": "Schema for queue entities.", + "description": "Schema for datastore entities.", "properties": { "apiVersion": { "description": "The schema version of entity type. The field is known as schema-version in the previous version.", @@ -184225,7 +194881,7 @@ }, "extensions": { "additionalProperties": {}, - "description": "Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.", + "description": "Custom extensions. This is the free-formed field to send client side metadata. No Datadog features are affected by this field.", "type": "object", "x-ignore-duplicate-object": true }, @@ -184274,14 +194930,14 @@ "type": "object" }, "kind": { - "description": "The definition of Entity V3 Queue Kind object.", + "description": "The definition of Entity V3 Datastore Kind object.", "enum": [ - "queue" + "datastore" ], - "example": "queue", + "example": "datastore", "type": "string", "x-enum-varnames": [ - "QUEUE" + "DATASTORE" ] }, "metadata": { @@ -184443,20 +195099,20 @@ }, "spec": { "additionalProperties": false, - "description": "The definition of Entity V3 Queue Spec object.", + "description": "The definition of Entity V3 Datastore Spec object.", "properties": { "lifecycle": { - "description": "The lifecycle state of the queue.", + "description": "The lifecycle state of the datastore.", "minLength": 1, "type": "string" }, "tier": { - "description": "The importance of the queue.", + "description": "The importance of the datastore.", "minLength": 1, "type": "string" }, "type": { - "description": "The type of queue.", + "description": "The type of datastore.", "type": "string" } }, @@ -184472,7 +195128,7 @@ }, { "additionalProperties": false, - "description": "Schema for system entities.", + "description": "Schema for queue entities.", "properties": { "apiVersion": { "description": "The schema version of entity type. The field is known as schema-version in the previous version.", @@ -184487,7 +195143,7 @@ }, "datadog": { "additionalProperties": false, - "description": "Datadog product integrations for the service entity.", + "description": "Datadog product integrations for the datastore entity.", "properties": { "events": { "additionalProperties": false, @@ -184542,23 +195198,10 @@ } }, "type": "object" - }, - "pipelines": { - "additionalProperties": false, - "description": "CI Pipelines association.", - "properties": { - "fingerprints": { - "description": "A list of CI Fingerprints that associate CI Pipelines with the entity.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" } }, - "type": "object" + "type": "object", + "x-ignore-duplicate-object": true }, "extensions": { "additionalProperties": {}, @@ -184611,14 +195254,14 @@ "type": "object" }, "kind": { - "description": "The definition of Entity V3 System Kind object.", + "description": "The definition of Entity V3 Queue Kind object.", "enum": [ - "system" + "queue" ], - "example": "system", + "example": "queue", "type": "string", "x-enum-varnames": [ - "SYSTEM" + "QUEUE" ] }, "metadata": { @@ -184780,24 +195423,21 @@ }, "spec": { "additionalProperties": false, - "description": "The definition of Entity V3 System Spec object.", + "description": "The definition of Entity V3 Queue Spec object.", "properties": { - "components": { - "description": "A list of components belongs to the system.", - "items": { - "type": "string" - }, - "type": "array" - }, "lifecycle": { - "description": "The lifecycle state of the component.", + "description": "The lifecycle state of the queue.", "minLength": 1, "type": "string" }, "tier": { - "description": "An entity reference to the owner of the component.", + "description": "The importance of the queue.", "minLength": 1, "type": "string" + }, + "type": { + "description": "The type of queue.", + "type": "string" } }, "type": "object" @@ -184809,216 +195449,556 @@ "metadata" ], "type": "object" - } - ] - }, - { - "description": "Entity definition in raw JSON or YAML representation.", - "example": "apiVersion: v3\nkind: service\nmetadata:\n name: myservice\n", - "type": "string" - } - ] - }, - "UpsertCatalogEntityResponse": { - "description": "Upsert entity response.", - "properties": { - "data": { - "description": "List of entity data.", - "items": { - "description": "Entity data.", - "properties": { - "attributes": { - "description": "Entity attributes.", - "properties": { - "apiVersion": { - "description": "The API version.", - "type": "string" - }, - "description": { - "description": "The description.", - "type": "string" - }, - "displayName": { - "description": "The display name.", - "type": "string" - }, - "kind": { - "description": "The kind.", - "type": "string" - }, - "name": { - "description": "The name.", - "type": "string" - }, - "namespace": { - "description": "The namespace.", - "type": "string" - }, - "owner": { - "description": "The owner.", - "type": "string" - }, - "tags": { - "description": "The tags.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "Entity ID.", - "type": "string" - }, - "meta": { - "description": "Entity metadata.", - "properties": { - "createdAt": { - "description": "The creation time.", - "type": "string" - }, - "ingestionSource": { - "description": "The ingestion source.", - "type": "string" - }, - "modifiedAt": { - "description": "The modification time.", - "type": "string" - }, - "origin": { - "description": "The origin.", - "type": "string" - } + }, + { + "additionalProperties": false, + "description": "Schema for system entities.", + "properties": { + "apiVersion": { + "description": "The schema version of entity type. The field is known as schema-version in the previous version.", + "enum": [ + "v3" + ], + "example": "v3", + "type": "string", + "x-enum-varnames": [ + "V3" + ] }, - "type": "object" - }, - "relationships": { - "description": "Entity relationships.", - "properties": { - "incidents": { - "description": "Entity to incidents relationship.", - "properties": { - "data": { - "description": "Relationships.", - "items": { - "description": "Relationship entry.", - "properties": { - "id": { - "description": "Associated data ID.", - "type": "string" - }, - "type": { - "description": "Relationship type.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "oncall": { - "description": "Entity to oncalls relationship.", - "properties": { - "data": { - "description": "Relationships.", - "items": { - "description": "Relationship entry.", - "properties": { - "id": { - "description": "Associated data ID.", - "type": "string" - }, - "type": { - "description": "Relationship type.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "rawSchema": { - "description": "Entity to raw schema relationship.", - "properties": { - "data": { - "description": "Relationship entry.", + "datadog": { + "additionalProperties": false, + "description": "Datadog product integrations for the service entity.", + "properties": { + "events": { + "additionalProperties": false, + "description": "Events associations.", + "items": { + "additionalProperties": false, + "description": "Events association item.", "properties": { - "id": { - "description": "Associated data ID.", + "name": { + "description": "The name of the query.", "type": "string" }, - "type": { - "description": "Relationship type.", + "query": { + "description": "The query to run.", "type": "string" } }, "type": "object" - } - }, - "type": "object" - }, - "relatedEntities": { - "description": "Entity to related entities relationship.", - "properties": { - "data": { - "description": "Relationships.", - "items": { - "description": "Relationship entry.", - "properties": { - "id": { - "description": "Associated data ID.", - "type": "string" - }, - "type": { - "description": "Relationship type.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } + }, + "type": "array" }, - "type": "object" - }, - "schema": { - "description": "Entity to detail schema relationship.", - "properties": { - "data": { - "description": "Relationship entry.", + "logs": { + "additionalProperties": false, + "description": "Logs association.", + "items": { + "additionalProperties": false, + "description": "Log association item.", "properties": { - "id": { - "description": "Associated data ID.", + "name": { + "description": "The name of the query.", "type": "string" }, - "type": { - "description": "Relationship type.", + "query": { + "description": "The query to run.", "type": "string" } }, "type": "object" - } + }, + "type": "array" }, - "type": "object" - } - }, - "type": "object" - }, - "type": { - "description": "Entity.", - "type": "string" - } - }, - "type": "object" - }, + "performanceData": { + "additionalProperties": false, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A list of APM entity tags that associates the APM Stats data with the entity.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "pipelines": { + "additionalProperties": false, + "description": "CI Pipelines association.", + "properties": { + "fingerprints": { + "description": "A list of CI Fingerprints that associate CI Pipelines with the entity.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.", + "type": "object", + "x-ignore-duplicate-object": true + }, + "integrations": { + "additionalProperties": false, + "description": "A base schema for defining third-party integrations.", + "properties": { + "opsgenie": { + "additionalProperties": false, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The region for the Opsgenie integration.", + "minLength": 1, + "type": "string" + }, + "serviceURL": { + "description": "The service URL for the Opsgenie integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "serviceURL" + ], + "type": "object" + }, + "pagerduty": { + "additionalProperties": false, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The service URL for the PagerDuty integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "serviceURL" + ], + "type": "object" + } + }, + "type": "object" + }, + "kind": { + "description": "The definition of Entity V3 System Kind object.", + "enum": [ + "system" + ], + "example": "system", + "type": "string", + "x-enum-varnames": [ + "SYSTEM" + ] + }, + "metadata": { + "additionalProperties": false, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": false, + "description": "The additional owners of the entity, usually a team.", + "items": { + "description": "The definition of Entity V3 Metadata Additional Owners Items object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string" + }, + "type": { + "description": "Team type.", + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "type": "array" + }, + "contacts": { + "additionalProperties": false, + "description": "A list of contacts for the entity.", + "items": { + "additionalProperties": false, + "description": "The definition of Entity V3 Metadata Contacts Items object.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://slack/", + "type": "string" + }, + "name": { + "description": "Contact name.", + "minLength": 2, + "type": "string" + }, + "type": { + "description": "Contact type.", + "example": "slack", + "type": "string" + } + }, + "required": [ + "type", + "contact" + ], + "type": "object" + }, + "type": "array" + }, + "description": { + "description": "Short description of the entity. The UI can leverage the description for display.", + "type": "string" + }, + "displayName": { + "description": "User friendly name of the entity. The UI can leverage the display name for display.", + "type": "string" + }, + "id": { + "description": "A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.", + "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", + "minLength": 1, + "type": "string" + }, + "inheritFrom": { + "description": "The entity reference from which to inherit metadata", + "example": "application:default/myapp", + "type": "string" + }, + "links": { + "additionalProperties": false, + "description": "A list of links for the entity.", + "items": { + "additionalProperties": false, + "description": "The definition of Entity V3 Metadata Links Items object.", + "properties": { + "name": { + "description": "Link name.", + "example": "mylink", + "type": "string" + }, + "provider": { + "description": "Link provider.", + "type": "string" + }, + "type": { + "default": "other", + "description": "Link type.", + "example": "link", + "type": "string" + }, + "url": { + "description": "Link URL.", + "example": "https://mylink", + "type": "string" + } + }, + "required": [ + "name", + "type", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "managed": { + "additionalProperties": {}, + "description": "A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.", + "type": "object" + }, + "name": { + "description": "Unique name given to an entity under the kind/namespace.", + "example": "myService", + "minLength": 1, + "type": "string" + }, + "namespace": { + "description": "Namespace is a part of unique identifier. It has a default value of 'default'.", + "example": "default", + "minLength": 1, + "type": "string" + }, + "owner": { + "additionalProperties": false, + "description": "The owner of the entity, usually a team.", + "properties": { + "name": { + "description": "Team name.", + "type": "string" + } + } + }, + "tags": { + "description": "A set of custom tags.", + "example": [ + "this:tag", + "that:tag" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "spec": { + "additionalProperties": false, + "description": "The definition of Entity V3 System Spec object.", + "properties": { + "components": { + "description": "A list of components belongs to the system.", + "items": { + "type": "string" + }, + "type": "array" + }, + "lifecycle": { + "description": "The lifecycle state of the component.", + "minLength": 1, + "type": "string" + }, + "tier": { + "description": "An entity reference to the owner of the component.", + "minLength": 1, + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "metadata" + ], + "type": "object" + } + ] + }, + { + "description": "Entity definition in raw JSON or YAML representation.", + "example": "apiVersion: v3\nkind: service\nmetadata:\n name: myservice\n", + "type": "string" + } + ] + }, + "UpsertCatalogEntityResponse": { + "description": "Upsert entity response.", + "properties": { + "data": { + "description": "List of entity data.", + "items": { + "description": "Entity data.", + "properties": { + "attributes": { + "description": "Entity attributes.", + "properties": { + "apiVersion": { + "description": "The API version.", + "type": "string" + }, + "description": { + "description": "The description.", + "type": "string" + }, + "displayName": { + "description": "The display name.", + "type": "string" + }, + "kind": { + "description": "The kind.", + "type": "string" + }, + "name": { + "description": "The name.", + "type": "string" + }, + "namespace": { + "description": "The namespace.", + "type": "string" + }, + "owner": { + "description": "The owner.", + "type": "string" + }, + "tags": { + "description": "The tags.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "Entity ID.", + "type": "string" + }, + "meta": { + "description": "Entity metadata.", + "properties": { + "createdAt": { + "description": "The creation time.", + "type": "string" + }, + "ingestionSource": { + "description": "The ingestion source.", + "type": "string" + }, + "modifiedAt": { + "description": "The modification time.", + "type": "string" + }, + "origin": { + "description": "The origin.", + "type": "string" + } + }, + "type": "object" + }, + "relationships": { + "description": "Entity relationships.", + "properties": { + "incidents": { + "description": "Entity to incidents relationship.", + "properties": { + "data": { + "description": "Relationships.", + "items": { + "description": "Relationship entry.", + "properties": { + "id": { + "description": "Associated data ID.", + "type": "string" + }, + "type": { + "description": "Relationship type.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "oncall": { + "description": "Entity to oncalls relationship.", + "properties": { + "data": { + "description": "Relationships.", + "items": { + "description": "Relationship entry.", + "properties": { + "id": { + "description": "Associated data ID.", + "type": "string" + }, + "type": { + "description": "Relationship type.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "rawSchema": { + "description": "Entity to raw schema relationship.", + "properties": { + "data": { + "description": "Relationship entry.", + "properties": { + "id": { + "description": "Associated data ID.", + "type": "string" + }, + "type": { + "description": "Relationship type.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "relatedEntities": { + "description": "Entity to related entities relationship.", + "properties": { + "data": { + "description": "Relationships.", + "items": { + "description": "Relationship entry.", + "properties": { + "id": { + "description": "Associated data ID.", + "type": "string" + }, + "type": { + "description": "Relationship type.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "schema": { + "description": "Entity to detail schema relationship.", + "properties": { + "data": { + "description": "Relationship entry.", + "properties": { + "id": { + "description": "Associated data ID.", + "type": "string" + }, + "type": { + "description": "Relationship type.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "description": "Entity.", + "type": "string" + } + }, + "type": "object" + }, "type": "array" }, "included": { @@ -195040,6 +206020,12 @@ "USERS" ] }, + "Version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + }, "VulnerabilitiesType": { "description": "The JSON:API type.", "enum": [ @@ -197571,6 +208557,8 @@ "security_monitoring_filters_read": "Read Security Filters.", "security_monitoring_filters_write": "Create, edit, and delete Security Filters.", "security_monitoring_findings_read": "View a list of findings that include both misconfigurations and identity risks.", + "security_monitoring_notification_profiles_read": "View Rule Security Notification rules.", + "security_monitoring_notification_profiles_write": "Create, edit, and delete Security Notification rules.", "security_monitoring_rules_read": "Read Detection Rules.", "security_monitoring_rules_write": "Create and edit Detection Rules.", "security_monitoring_signals_read": "View Security Signals.", @@ -197619,8 +208607,6 @@ "x-env-name": "DD_APP_KEY" }, "bearerAuth": { - "in": "header", - "name": "Authorization", "scheme": "bearer", "type": "http", "x-env-name": "DD_BEARER_TOKEN" @@ -197661,266 +208647,3419 @@ { "description": "The definition of `AWSIntegration` object.", "properties": { - "credentials": { - "description": "The definition of `AWSCredentials` object.", - "oneOf": [ - { - "description": "The definition of `AWSAssumeRole` object.", - "properties": { - "account_id": { - "description": "AWS account the connection is created for", - "example": "111222333444", - "pattern": "^\\d{12}$", - "type": "string" - }, - "external_id": { - "description": "External ID used to scope which connection can be used to assume the role", - "example": "33a1011635c44b38a064cf14e82e1d8f", - "readOnly": true, - "type": "string" - }, - "principal_id": { - "description": "AWS account that will assume the role", - "example": "123456789012", - "readOnly": true, - "type": "string" - }, - "role": { - "description": "Role to assume", - "example": "my-role", - "type": "string" - }, - "type": { - "description": "The definition of `AWSAssumeRoleType` object.", - "enum": [ - "AWSAssumeRole" - ], - "example": "AWSAssumeRole", - "type": "string", - "x-enum-varnames": [ - "AWSASSUMEROLE" - ] - } - }, - "required": [ - "type", - "account_id", - "role" + "credentials": { + "description": "The definition of `AWSCredentials` object.", + "oneOf": [ + { + "description": "The definition of `AWSAssumeRole` object.", + "properties": { + "account_id": { + "description": "AWS account the connection is created for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string" + }, + "external_id": { + "description": "External ID used to scope which connection can be used to assume the role", + "example": "33a1011635c44b38a064cf14e82e1d8f", + "readOnly": true, + "type": "string" + }, + "principal_id": { + "description": "AWS account that will assume the role", + "example": "123456789012", + "readOnly": true, + "type": "string" + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string" + }, + "type": { + "description": "The definition of `AWSAssumeRoleType` object.", + "enum": [ + "AWSAssumeRole" + ], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ] + } + }, + "required": [ + "type", + "account_id", + "role" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `AWSIntegrationType` object.", + "enum": [ + "AWS" + ], + "example": "AWS", + "type": "string", + "x-enum-varnames": [ + "AWS" + ] + } + }, + "required": [ + "type", + "credentials" + ], + "type": "object" + }, + { + "description": "The definition of `HTTPIntegration` object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "pattern": "url", + "type": "string" + }, + "credentials": { + "description": "The definition of `HTTPCredentials` object.", + "oneOf": [ + { + "description": "The definition of `HTTPTokenAuth` object.", + "properties": { + "body": { + "description": "The definition of `HTTPBody` object.", + "properties": { + "content": { + "description": "Serialized body content", + "example": "{\"some-json\": \"with-value\"}", + "type": "string" + }, + "content_type": { + "description": "Content type of the body", + "example": "application/json", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "description": "The `HTTPTokenAuth` `headers`.", + "items": { + "description": "The definition of `HTTPHeader` object.", + "properties": { + "name": { + "description": "The `HTTPHeader` `name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string" + }, + "value": { + "description": "The `HTTPHeader` `value`.", + "example": "Some header value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "tokens": { + "description": "The `HTTPTokenAuth` `tokens`.", + "items": { + "description": "The definition of `HTTPToken` object.", + "properties": { + "name": { + "description": "The `HTTPToken` `name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "type": { + "description": "The definition of `TokenType` object.", + "enum": [ + "SECRET" + ], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ] + }, + "value": { + "description": "The `HTTPToken` `value`.", + "example": "Some Token Value", + "type": "string" + } + }, + "required": [ + "name", + "value", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "The definition of `HTTPTokenAuthType` object.", + "enum": [ + "HTTPTokenAuth" + ], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ] + }, + "url_parameters": { + "description": "The `HTTPTokenAuth` `url_parameters`.", + "items": { + "description": "The definition of `UrlParam` object.", + "properties": { + "name": { + "example": "MyUrlParameter", + "description": "Name for tokens.", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "value": { + "description": "The `UrlParam` `value`.", + "example": "Some Url Parameter value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `HTTPIntegrationType` object.", + "enum": [ + "HTTP" + ], + "example": "HTTP", + "type": "string", + "x-enum-varnames": [ + "HTTP" + ] + } + }, + "required": [ + "type", + "base_url", + "credentials" + ], + "type": "object" + } + ] + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string" + } + }, + "required": [ + "name", + "integration" + ], + "type": "object" + }, + "id": { + "description": "The connection identifier", + "readOnly": true, + "type": "string" + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": [ + "action_connection" + ], + "example": "action_connection", + "type": "string", + "x-enum-varnames": [ + "ACTION_CONNECTION" + ] + } + }, + "required": [ + "type", + "attributes" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "The response for a created connection", + "properties": { + "data": { + "description": "Data related to the connection.", + "properties": { + "attributes": { + "description": "The definition of `ActionConnectionAttributes` object.", + "properties": { + "integration": { + "description": "The definition of `ActionConnectionIntegration` object.", + "oneOf": [ + { + "description": "The definition of `AWSIntegration` object.", + "properties": { + "credentials": { + "description": "The definition of `AWSCredentials` object.", + "oneOf": [ + { + "description": "The definition of `AWSAssumeRole` object.", + "properties": { + "account_id": { + "description": "AWS account the connection is created for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string" + }, + "external_id": { + "description": "External ID used to scope which connection can be used to assume the role", + "example": "33a1011635c44b38a064cf14e82e1d8f", + "readOnly": true, + "type": "string" + }, + "principal_id": { + "description": "AWS account that will assume the role", + "example": "123456789012", + "readOnly": true, + "type": "string" + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string" + }, + "type": { + "description": "The definition of `AWSAssumeRoleType` object.", + "enum": [ + "AWSAssumeRole" + ], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ] + } + }, + "required": [ + "type", + "account_id", + "role" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `AWSIntegrationType` object.", + "enum": [ + "AWS" + ], + "example": "AWS", + "type": "string", + "x-enum-varnames": [ + "AWS" + ] + } + }, + "required": [ + "type", + "credentials" + ], + "type": "object" + }, + { + "description": "The definition of `HTTPIntegration` object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "pattern": "url", + "type": "string" + }, + "credentials": { + "description": "The definition of `HTTPCredentials` object.", + "oneOf": [ + { + "description": "The definition of `HTTPTokenAuth` object.", + "properties": { + "body": { + "description": "The definition of `HTTPBody` object.", + "properties": { + "content": { + "description": "Serialized body content", + "example": "{\"some-json\": \"with-value\"}", + "type": "string" + }, + "content_type": { + "description": "Content type of the body", + "example": "application/json", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "description": "The `HTTPTokenAuth` `headers`.", + "items": { + "description": "The definition of `HTTPHeader` object.", + "properties": { + "name": { + "description": "The `HTTPHeader` `name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string" + }, + "value": { + "description": "The `HTTPHeader` `value`.", + "example": "Some header value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "tokens": { + "description": "The `HTTPTokenAuth` `tokens`.", + "items": { + "description": "The definition of `HTTPToken` object.", + "properties": { + "name": { + "description": "The `HTTPToken` `name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "type": { + "description": "The definition of `TokenType` object.", + "enum": [ + "SECRET" + ], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ] + }, + "value": { + "description": "The `HTTPToken` `value`.", + "example": "Some Token Value", + "type": "string" + } + }, + "required": [ + "name", + "value", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "The definition of `HTTPTokenAuthType` object.", + "enum": [ + "HTTPTokenAuth" + ], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ] + }, + "url_parameters": { + "description": "The `HTTPTokenAuth` `url_parameters`.", + "items": { + "description": "The definition of `UrlParam` object.", + "properties": { + "name": { + "example": "MyUrlParameter", + "description": "Name for tokens.", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "value": { + "description": "The `UrlParam` `value`.", + "example": "Some Url Parameter value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `HTTPIntegrationType` object.", + "enum": [ + "HTTP" + ], + "example": "HTTP", + "type": "string", + "x-enum-varnames": [ + "HTTP" + ] + } + }, + "required": [ + "type", + "base_url", + "credentials" + ], + "type": "object" + } + ] + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string" + } + }, + "required": [ + "name", + "integration" + ], + "type": "object" + }, + "id": { + "description": "The connection identifier", + "readOnly": true, + "type": "string" + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": [ + "action_connection" + ], + "example": "action_connection", + "type": "string", + "x-enum-varnames": [ + "ACTION_CONNECTION" + ] + } + }, + "required": [ + "type", + "attributes" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Successfully created Action Connection" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too Many Request" + } + }, + "summary": "Create a new Action Connection", + "tags": [ + "Action Connection" + ], + "x-given": { + "action_connection": { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"action_connection\",\n \"attributes\": {\n \"name\": \"Cassette Connection DELETE\",\n \"integration\": {\n \"type\": \"AWS\",\n \"credentials\": {\n \"type\": \"AWSAssumeRole\",\n \"role\": \"MyRole\",\n \"account_id\": \"123456789123\"\n }\n }\n }\n }\n}" + } + ], + "step": "there is a valid \"action_connection\" in the system" + } + }, + "x-menu-order": 2, + "x-undo": { + "operationId": "DeleteActionConnection", + "parameters": [ + { + "name": "connection_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + } + }, + "/api/v2/actions/connections/{connection_id}": { + "delete": { + "description": "Delete an existing Action Connection", + "operationId": "DeleteActionConnection", + "parameters": [ + { + "description": "The ID of the action connection", + "in": "path", + "name": "connection_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully." + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too Many Request" + } + }, + "summary": "Delete an existing Action Connection", + "tags": [ + "Action Connection" + ], + "x-menu-order": 4, + "x-permission": { + "operator": "OR", + "permissions": [ + "connection_write" + ] + }, + "x-undo": { + "type": "idempotent" + } + }, + "get": { + "description": "Get an existing Action Connection", + "operationId": "GetActionConnection", + "parameters": [ + { + "description": "The ID of the action connection", + "in": "path", + "name": "connection_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The response for found connection", + "properties": { + "data": { + "description": "Data related to the connection.", + "properties": { + "attributes": { + "description": "The definition of `ActionConnectionAttributes` object.", + "properties": { + "integration": { + "description": "The definition of `ActionConnectionIntegration` object.", + "oneOf": [ + { + "description": "The definition of `AWSIntegration` object.", + "properties": { + "credentials": { + "description": "The definition of `AWSCredentials` object.", + "oneOf": [ + { + "description": "The definition of `AWSAssumeRole` object.", + "properties": { + "account_id": { + "description": "AWS account the connection is created for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string" + }, + "external_id": { + "description": "External ID used to scope which connection can be used to assume the role", + "example": "33a1011635c44b38a064cf14e82e1d8f", + "readOnly": true, + "type": "string" + }, + "principal_id": { + "description": "AWS account that will assume the role", + "example": "123456789012", + "readOnly": true, + "type": "string" + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string" + }, + "type": { + "description": "The definition of `AWSAssumeRoleType` object.", + "enum": [ + "AWSAssumeRole" + ], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ] + } + }, + "required": [ + "type", + "account_id", + "role" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `AWSIntegrationType` object.", + "enum": [ + "AWS" + ], + "example": "AWS", + "type": "string", + "x-enum-varnames": [ + "AWS" + ] + } + }, + "required": [ + "type", + "credentials" + ], + "type": "object" + }, + { + "description": "The definition of `HTTPIntegration` object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "pattern": "url", + "type": "string" + }, + "credentials": { + "description": "The definition of `HTTPCredentials` object.", + "oneOf": [ + { + "description": "The definition of `HTTPTokenAuth` object.", + "properties": { + "body": { + "description": "The definition of `HTTPBody` object.", + "properties": { + "content": { + "description": "Serialized body content", + "example": "{\"some-json\": \"with-value\"}", + "type": "string" + }, + "content_type": { + "description": "Content type of the body", + "example": "application/json", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "description": "The `HTTPTokenAuth` `headers`.", + "items": { + "description": "The definition of `HTTPHeader` object.", + "properties": { + "name": { + "description": "The `HTTPHeader` `name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string" + }, + "value": { + "description": "The `HTTPHeader` `value`.", + "example": "Some header value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "tokens": { + "description": "The `HTTPTokenAuth` `tokens`.", + "items": { + "description": "The definition of `HTTPToken` object.", + "properties": { + "name": { + "description": "The `HTTPToken` `name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "type": { + "description": "The definition of `TokenType` object.", + "enum": [ + "SECRET" + ], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ] + }, + "value": { + "description": "The `HTTPToken` `value`.", + "example": "Some Token Value", + "type": "string" + } + }, + "required": [ + "name", + "value", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "The definition of `HTTPTokenAuthType` object.", + "enum": [ + "HTTPTokenAuth" + ], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ] + }, + "url_parameters": { + "description": "The `HTTPTokenAuth` `url_parameters`.", + "items": { + "description": "The definition of `UrlParam` object.", + "properties": { + "name": { + "example": "MyUrlParameter", + "description": "Name for tokens.", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "value": { + "description": "The `UrlParam` `value`.", + "example": "Some Url Parameter value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `HTTPIntegrationType` object.", + "enum": [ + "HTTP" + ], + "example": "HTTP", + "type": "string", + "x-enum-varnames": [ + "HTTP" + ] + } + }, + "required": [ + "type", + "base_url", + "credentials" + ], + "type": "object" + } + ] + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string" + } + }, + "required": [ + "name", + "integration" + ], + "type": "object" + }, + "id": { + "description": "The connection identifier", + "readOnly": true, + "type": "string" + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": [ + "action_connection" + ], + "example": "action_connection", + "type": "string", + "x-enum-varnames": [ + "ACTION_CONNECTION" + ] + } + }, + "required": [ + "type", + "attributes" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Successfully get Action Connection" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too Many Request" + } + }, + "summary": "Get an existing Action Connection", + "tags": [ + "Action Connection" + ], + "x-menu-order": 1, + "x-undo": { + "type": "safe" + } + }, + "patch": { + "description": "Update an existing Action Connection", + "operationId": "UpdateActionConnection", + "parameters": [ + { + "description": "The ID of the action connection", + "in": "path", + "name": "connection_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Request used to update an action connection.", + "properties": { + "data": { + "description": "Data related to the connection update.", + "properties": { + "attributes": { + "description": "The definition of `ActionConnectionAttributesUpdate` object.", + "properties": { + "integration": { + "description": "The definition of `ActionConnectionIntegrationUpdate` object.", + "oneOf": [ + { + "description": "The definition of `AWSIntegrationUpdate` object.", + "properties": { + "credentials": { + "description": "The definition of `AWSCredentialsUpdate` object.", + "oneOf": [ + { + "description": "The definition of `AWSAssumeRoleUpdate` object.", + "properties": { + "account_id": { + "description": "AWS account the connection is created for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string" + }, + "generate_new_external_id": { + "description": "The `AWSAssumeRoleUpdate` `generate_new_external_id`.", + "type": "boolean" + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string" + }, + "type": { + "description": "The definition of `AWSAssumeRoleType` object.", + "enum": [ + "AWSAssumeRole" + ], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `AWSIntegrationType` object.", + "enum": [ + "AWS" + ], + "example": "AWS", + "type": "string", + "x-enum-varnames": [ + "AWS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "description": "The definition of `HTTPIntegrationUpdate` object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "pattern": "url", + "type": "string" + }, + "credentials": { + "description": "The definition of `HTTPCredentialsUpdate` object.", + "oneOf": [ + { + "description": "The definition of `HTTPTokenAuthUpdate` object.", + "properties": { + "body": { + "description": "The definition of `HTTPBody` object.", + "properties": { + "content": { + "description": "Serialized body content", + "example": "{\"some-json\": \"with-value\"}", + "type": "string" + }, + "content_type": { + "description": "Content type of the body", + "example": "application/json", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "description": "The `HTTPTokenAuthUpdate` `headers`.", + "items": { + "description": "The definition of `HTTPHeaderUpdate` object.", + "properties": { + "deleted": { + "description": "Should the header be deleted.", + "type": "boolean" + }, + "name": { + "description": "The `HTTPHeaderUpdate` `name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string" + }, + "value": { + "description": "The `HTTPHeaderUpdate` `value`.", + "example": "Updated Header Value", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + }, + "tokens": { + "description": "The `HTTPTokenAuthUpdate` `tokens`.", + "items": { + "description": "The definition of `HTTPTokenUpdate` object.", + "properties": { + "deleted": { + "description": "Should the header be deleted.", + "type": "boolean" + }, + "name": { + "description": "The `HTTPToken` `name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "type": { + "description": "The definition of `TokenType` object.", + "enum": [ + "SECRET" + ], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ] + }, + "value": { + "description": "The `HTTPToken` `value`.", + "example": "Some Token Value", + "type": "string" + } + }, + "required": [ + "name", + "type", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "The definition of `HTTPTokenAuthType` object.", + "enum": [ + "HTTPTokenAuth" + ], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ] + }, + "url_parameters": { + "description": "The `HTTPTokenAuthUpdate` `url_parameters`.", + "items": { + "description": "The definition of `UrlParamUpdate` object.", + "properties": { + "deleted": { + "description": "Should the header be deleted.", + "type": "boolean" + }, + "name": { + "example": "MyUrlParameter", + "description": "Name for tokens.", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "value": { + "description": "The `UrlParamUpdate` `value`.", + "example": "Some Url Parameter value", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `HTTPIntegrationType` object.", + "enum": [ + "HTTP" + ], + "example": "HTTP", + "type": "string", + "x-enum-varnames": [ + "HTTP" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": [ + "action_connection" + ], + "example": "action_connection", + "type": "string", + "x-enum-varnames": [ + "ACTION_CONNECTION" + ] + } + }, + "required": [ + "type", + "attributes" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "Update an existing Action Connection request body", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The response for an updated connection.", + "properties": { + "data": { + "description": "Data related to the connection.", + "properties": { + "attributes": { + "description": "The definition of `ActionConnectionAttributes` object.", + "properties": { + "integration": { + "description": "The definition of `ActionConnectionIntegration` object.", + "oneOf": [ + { + "description": "The definition of `AWSIntegration` object.", + "properties": { + "credentials": { + "description": "The definition of `AWSCredentials` object.", + "oneOf": [ + { + "description": "The definition of `AWSAssumeRole` object.", + "properties": { + "account_id": { + "description": "AWS account the connection is created for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string" + }, + "external_id": { + "description": "External ID used to scope which connection can be used to assume the role", + "example": "33a1011635c44b38a064cf14e82e1d8f", + "readOnly": true, + "type": "string" + }, + "principal_id": { + "description": "AWS account that will assume the role", + "example": "123456789012", + "readOnly": true, + "type": "string" + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string" + }, + "type": { + "description": "The definition of `AWSAssumeRoleType` object.", + "enum": [ + "AWSAssumeRole" + ], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ] + } + }, + "required": [ + "type", + "account_id", + "role" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `AWSIntegrationType` object.", + "enum": [ + "AWS" + ], + "example": "AWS", + "type": "string", + "x-enum-varnames": [ + "AWS" + ] + } + }, + "required": [ + "type", + "credentials" + ], + "type": "object" + }, + { + "description": "The definition of `HTTPIntegration` object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "pattern": "url", + "type": "string" + }, + "credentials": { + "description": "The definition of `HTTPCredentials` object.", + "oneOf": [ + { + "description": "The definition of `HTTPTokenAuth` object.", + "properties": { + "body": { + "description": "The definition of `HTTPBody` object.", + "properties": { + "content": { + "description": "Serialized body content", + "example": "{\"some-json\": \"with-value\"}", + "type": "string" + }, + "content_type": { + "description": "Content type of the body", + "example": "application/json", + "type": "string" + } + }, + "type": "object" + }, + "headers": { + "description": "The `HTTPTokenAuth` `headers`.", + "items": { + "description": "The definition of `HTTPHeader` object.", + "properties": { + "name": { + "description": "The `HTTPHeader` `name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string" + }, + "value": { + "description": "The `HTTPHeader` `value`.", + "example": "Some header value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "tokens": { + "description": "The `HTTPTokenAuth` `tokens`.", + "items": { + "description": "The definition of `HTTPToken` object.", + "properties": { + "name": { + "description": "The `HTTPToken` `name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "type": { + "description": "The definition of `TokenType` object.", + "enum": [ + "SECRET" + ], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ] + }, + "value": { + "description": "The `HTTPToken` `value`.", + "example": "Some Token Value", + "type": "string" + } + }, + "required": [ + "name", + "value", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "description": "The definition of `HTTPTokenAuthType` object.", + "enum": [ + "HTTPTokenAuth" + ], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ] + }, + "url_parameters": { + "description": "The `HTTPTokenAuth` `url_parameters`.", + "items": { + "description": "The definition of `UrlParam` object.", + "properties": { + "name": { + "example": "MyUrlParameter", + "description": "Name for tokens.", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string" + }, + "value": { + "description": "The `UrlParam` `value`.", + "example": "Some Url Parameter value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "type": { + "description": "The definition of `HTTPIntegrationType` object.", + "enum": [ + "HTTP" + ], + "example": "HTTP", + "type": "string", + "x-enum-varnames": [ + "HTTP" + ] + } + }, + "required": [ + "type", + "base_url", + "credentials" + ], + "type": "object" + } + ] + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string" + } + }, + "required": [ + "name", + "integration" + ], + "type": "object" + }, + "id": { + "description": "The connection identifier", + "readOnly": true, + "type": "string" + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": [ + "action_connection" + ], + "example": "action_connection", + "type": "string", + "x-enum-varnames": [ + "ACTION_CONNECTION" + ] + } + }, + "required": [ + "type", + "attributes" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Successfully updated Action Connection" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too Many Request" + } + }, + "summary": "Update an existing Action Connection", + "tags": [ + "Action Connection" + ], + "x-menu-order": 3, + "x-undo": { + "type": "idempotent" + } + } + }, + "/api/v2/agentless_scanning/accounts/aws": { + "get": { + "description": "Fetches the scan options configured for AWS accounts.", + "operationId": "ListAwsScanOptions", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response object that includes a list of AWS scan options.", + "properties": { + "data": { + "description": "A list of AWS scan options.", + "items": { + "description": "Single AWS Scan Options entry.", + "properties": { + "attributes": { + "description": "Attributes for the AWS scan options.", + "properties": { + "lambda": { + "description": "Indicates if scanning of Lambda functions is enabled.", + "example": true, + "type": "boolean" + }, + "sensitive_data": { + "description": "Indicates if scanning for sensitive data is enabled.", + "example": false, + "type": "boolean" + }, + "vuln_containers_os": { + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "example": true, + "type": "boolean" + }, + "vuln_host_os": { + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "example": true, + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the AWS account.", + "example": "184366314700", + "type": "string" + }, + "type": { + "default": "aws_scan_options", + "description": "The type of the resource. The value should always be `aws_scan_options`.", + "enum": [ + "aws_scan_options" + ], + "example": "aws_scan_options", + "type": "string", + "x-enum-varnames": [ + "AWS_SCAN_OPTIONS" + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get AWS Scan Options", + "tags": [ + "Agentless Scanning" + ], + "x-menu-order": 3, + "x-undo": { + "type": "safe" + } + } + }, + "/api/v2/api_keys": { + "get": { + "description": "List all API keys available for your account.", + "operationId": "ListAPIKeys", + "parameters": [ + { + "description": "Size for a given page. The maximum allowed value is 100.", + "in": "query", + "name": "page[size]", + "required": false, + "schema": { + "default": 10, + "example": 10, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Specific page number to return.", + "in": "query", + "name": "page[number]", + "required": false, + "schema": { + "default": 0, + "example": 0, + "format": "int64", + "type": "integer" + } + }, + { + "description": "API key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign.", + "in": "query", + "name": "sort", + "required": false, + "schema": { + "default": "name", + "description": "Sorting options", + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "modified_at", + "-modified_at", + "name", + "-name" + ], + "type": "string", + "x-enum-varnames": [ + "CREATED_AT_ASCENDING", + "CREATED_AT_DESCENDING", + "LAST4_ASCENDING", + "LAST4_DESCENDING", + "MODIFIED_AT_ASCENDING", + "MODIFIED_AT_DESCENDING", + "NAME_ASCENDING", + "NAME_DESCENDING" + ] + } + }, + { + "description": "Filter API keys by the specified string.", + "in": "query", + "name": "filter", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Only include API keys created on or after the specified date.", + "in": "query", + "name": "filter[created_at][start]", + "required": false, + "schema": { + "example": "2020-11-24T18:46:21+00:00", + "type": "string", + "x-merge-override": { + "format": false + } + } + }, + { + "description": "Only include API keys created on or before the specified date.", + "in": "query", + "name": "filter[created_at][end]", + "required": false, + "schema": { + "example": "2020-11-24T18:46:21+00:00", + "type": "string", + "x-merge-override": { + "format": false + } + } + }, + { + "description": "Only include API keys modified on or after the specified date.", + "in": "query", + "name": "filter[modified_at][start]", + "required": false, + "schema": { + "example": "2020-11-24T18:46:21+00:00", + "type": "string", + "x-merge-override": { + "format": false + } + } + }, + { + "description": "Only include API keys modified on or before the specified date.", + "in": "query", + "name": "filter[modified_at][end]", + "required": false, + "schema": { + "example": "2020-11-24T18:46:21+00:00", + "type": "string", + "x-merge-override": { + "format": false + } + } + }, + { + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`.", + "in": "query", + "name": "include", + "required": false, + "schema": { + "example": "created_by,modified_by", + "type": "string" + } + }, + { + "description": "Filter API keys by remote config read enabled status.", + "in": "query", + "name": "filter[remote_config_read_enabled]", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter API keys by category.", + "in": "query", + "name": "filter[category]", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response for a list of API keys.", + "properties": { + "data": { + "description": "Array of API keys.", + "items": { + "description": "Partial Datadog API key.", + "properties": { + "attributes": { + "description": "Attributes of a partial API key.", + "properties": { + "category": { + "description": "The category of the API key.", + "type": "string" + }, + "created_at": { + "description": "Creation date of the API key.", + "example": "2020-11-23T10:00:00.000Z", + "readOnly": true, + "type": "string", + "x-merge-override": { + "format": false + } + }, + "last4": { + "description": "The last four characters of the API key.", + "example": "abcd", + "maxLength": 4, + "minLength": 4, + "readOnly": true, + "type": "string", + "x-secret": true + }, + "modified_at": { + "description": "Date the API key was last modified.", + "example": "2020-11-23T10:00:00.000Z", + "readOnly": true, + "type": "string", + "x-merge-override": { + "format": false + } + }, + "name": { + "description": "Name of the API key.", + "example": "API Key for submitting metrics", + "type": "string" + }, + "remote_config_read_enabled": { + "description": "The remote config read enabled status.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the API key.", + "type": "string" + }, + "relationships": { + "description": "Resources related to the API key.", + "properties": { + "created_by": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" ], - "type": "object" + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] } - ] - }, - "type": { - "description": "The definition of `AWSIntegrationType` object.", - "enum": [ - "AWS" + }, + "required": [ + "id", + "type" ], - "example": "AWS", - "type": "string", - "x-enum-varnames": [ - "AWS" - ] + "type": "object", + "x-merge-override": { + "required": false + } } }, "required": [ - "type", - "credentials" + "data" ], "type": "object" }, - { - "description": "The definition of `HTTPIntegration` object.", + "modified_by": { + "description": "Relationship to user.", + "nullable": true, "properties": { - "base_url": { - "description": "Base HTTP url for the integration", - "example": "http://datadoghq.com", - "pattern": "url", + "data": { + "description": "Relationship to user object.", + "nullable": true, + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "api_keys", + "description": "API Keys resource type.", + "enum": [ + "api_keys" + ], + "example": "api_keys", + "type": "string", + "x-enum-varnames": [ + "API_KEYS" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + }, + "included": { + "description": "Array of objects related to the API key.", + "items": { + "description": "An object related to an API key.", + "oneOf": [ + { + "description": "User object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of user object returned by the API.", + "properties": { + "created_at": { + "description": "Creation time of the user.", + "format": "date-time", "type": "string" }, - "credentials": { - "description": "The definition of `HTTPCredentials` object.", - "oneOf": [ - { - "description": "The definition of `HTTPTokenAuth` object.", + "disabled": { + "description": "Whether the user is disabled.", + "type": "boolean" + }, + "email": { + "description": "Email of the user.", + "type": "string" + }, + "handle": { + "description": "Handle of the user.", + "type": "string" + }, + "icon": { + "description": "URL of the user's icon.", + "type": "string" + }, + "mfa_enabled": { + "description": "If user has MFA enabled.", + "readOnly": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time that the user was last modified.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the user.", + "nullable": true, + "type": "string" + }, + "service_account": { + "description": "Whether the user is a service account.", + "type": "boolean" + }, + "status": { + "description": "Status of the user.", + "type": "string" + }, + "title": { + "description": "Title of the user.", + "nullable": true, + "type": "string" + }, + "verified": { + "description": "Whether the user is verified.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the user.", + "type": "string" + }, + "relationships": { + "description": "Relationships of the user object returned by the API.", + "properties": { + "org": { + "description": "Relationship to an organization.", + "properties": { + "data": { + "description": "Relationship to organization object.", "properties": { - "body": { - "description": "The definition of `HTTPBody` object.", - "properties": { - "content": { - "description": "Serialized body content", - "example": "{\"some-json\": \"with-value\"}", - "type": "string" - }, - "content_type": { - "description": "Content type of the body", - "example": "application/json", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "description": "The `HTTPTokenAuth` `headers`.", - "items": { - "description": "The definition of `HTTPHeader` object.", - "properties": { - "name": { - "description": "The `HTTPHeader` `name`.", - "example": "MyHttpHeader", - "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", - "type": "string" - }, - "value": { - "description": "The `HTTPHeader` `value`.", - "example": "Some header value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "tokens": { - "description": "The `HTTPTokenAuth` `tokens`.", - "items": { - "description": "The definition of `HTTPToken` object.", - "properties": { - "name": { - "description": "The `HTTPToken` `name`.", - "example": "MyToken", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "type": { - "description": "The definition of `TokenType` object.", - "enum": [ - "SECRET" - ], - "example": "SECRET", - "type": "string", - "x-enum-varnames": [ - "SECRET" - ] - }, - "value": { - "description": "The `HTTPToken` `value`.", - "example": "Some Token Value", - "type": "string" - } - }, - "required": [ - "name", - "value", - "type" - ], - "type": "object" - }, - "type": "array" + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" }, "type": { - "description": "The definition of `HTTPTokenAuthType` object.", + "default": "orgs", + "description": "Organizations resource type.", "enum": [ - "HTTPTokenAuth" + "orgs" ], - "example": "HTTPTokenAuth", + "example": "orgs", "type": "string", "x-enum-varnames": [ - "HTTPTOKENAUTH" + "ORGS" ] - }, - "url_parameters": { - "description": "The `HTTPTokenAuth` `url_parameters`.", - "items": { - "description": "The definition of `UrlParam` object.", - "properties": { - "name": { - "example": "MyUrlParameter", - "description": "Name for tokens.", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "value": { - "description": "The `UrlParam` `value`.", - "example": "Some Url Parameter value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" } }, "required": [ + "id", "type" ], "type": "object" } - ] + }, + "required": [ + "data" + ], + "type": "object" }, - "type": { - "description": "The definition of `HTTPIntegrationType` object.", - "enum": [ - "HTTP" + "other_orgs": { + "description": "Relationship to organizations.", + "properties": { + "data": { + "description": "Relationships to organization objects.", + "example": [], + "items": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" ], - "example": "HTTP", - "type": "string", - "x-enum-varnames": [ - "HTTP" - ] + "type": "object" + }, + "other_users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "type": "object", + "x-merge-override": { + "properties": false + } + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + { + "description": "The definition of LeakedKey object.", + "properties": { + "attributes": { + "description": "The definition of LeakedKeyAttributes object.", + "properties": { + "date": { + "description": "The LeakedKeyAttributes date.", + "example": "2017-07-21T17:32:28Z", + "format": "date-time", + "type": "string" + }, + "leak_source": { + "description": "The LeakedKeyAttributes leak_source.", + "type": "string" } }, "required": [ - "type", - "base_url", - "credentials" + "date" ], "type": "object" + }, + "id": { + "description": "The LeakedKey id.", + "example": "id", + "type": "string" + }, + "type": { + "default": "leaked_keys", + "description": "The definition of LeakedKeyType object.", + "enum": [ + "leaked_keys" + ], + "example": "leaked_keys", + "type": "string", + "x-enum-varnames": [ + "LEAKED_KEYS" + ] } - ] + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + ] + }, + "type": "array", + "x-merge-override": { + "items": false + } + }, + "meta": { + "description": "Additional information related to api keys response.", + "properties": { + "max_allowed": { + "description": "Max allowed number of API keys.", + "format": "int64", + "type": "integer" + }, + "page": { + "description": "Additional information related to the API keys response.", + "properties": { + "total_filtered_count": { + "description": "Total filtered application key count.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get all API keys", + "tags": [ + "Key Management" + ], + "x-menu-order": 5, + "x-permission": { + "operator": "OR", + "permissions": [ + "api_keys_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "post": { + "description": "Create an API key.", + "operationId": "CreateAPIKey", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Request used to create an API key.", + "properties": { + "data": { + "description": "Object used to create an API key.", + "properties": { + "attributes": { + "description": "Attributes used to create an API Key.", + "properties": { + "category": { + "description": "The APIKeyCreateAttributes category.", + "type": "string" }, "name": { - "description": "Name of the connection", - "example": "My AWS Connection", + "description": "Name of the API key.", + "example": "API Key for submitting metrics", "type": "string" + }, + "remote_config_read_enabled": { + "description": "The APIKeyCreateAttributes remote_config_read_enabled.", + "type": "boolean" } }, "required": [ - "name", - "integration" + "name" ], "type": "object" }, - "id": { - "description": "The connection identifier", - "readOnly": true, - "type": "string" - }, "type": { - "description": "The definition of `ActionConnectionDataType` object.", + "default": "api_keys", + "description": "API Keys resource type.", "enum": [ - "action_connection" + "api_keys" ], - "example": "action_connection", + "example": "api_keys", "type": "string", "x-enum-varnames": [ - "ACTION_CONNECTION" + "API_KEYS" ] } }, "required": [ - "type", - "attributes" + "attributes", + "type" ], - "type": "object" + "type": "object", + "x-merge-override": { + "required": false + } } }, "required": [ @@ -197937,287 +212076,485 @@ "content": { "application/json": { "schema": { - "description": "The response for a created connection", + "description": "Response for retrieving an API key.", "properties": { "data": { - "description": "Data related to the connection.", + "description": "Datadog API key.", "properties": { "attributes": { - "description": "The definition of `ActionConnectionAttributes` object.", + "description": "Attributes of a full API key.", "properties": { - "integration": { - "description": "The definition of `ActionConnectionIntegration` object.", - "oneOf": [ - { - "description": "The definition of `AWSIntegration` object.", + "category": { + "description": "The category of the API key.", + "type": "string" + }, + "created_at": { + "description": "Creation date of the API key.", + "example": "2020-11-23T10:00:00.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "key": { + "description": "The API key.", + "readOnly": true, + "type": "string", + "x-secret": true + }, + "last4": { + "description": "The last four characters of the API key.", + "example": "abcd", + "maxLength": 4, + "minLength": 4, + "readOnly": true, + "type": "string", + "x-secret": true + }, + "modified_at": { + "description": "Date the API key was last modified.", + "example": "2020-11-23T10:00:00.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "name": { + "description": "Name of the API key.", + "example": "API Key for submitting metrics", + "type": "string" + }, + "remote_config_read_enabled": { + "description": "The remote config read enabled status.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the API key.", + "type": "string" + }, + "relationships": { + "description": "Resources related to the API key.", + "properties": { + "created_by": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", "properties": { - "credentials": { - "description": "The definition of `AWSCredentials` object.", - "oneOf": [ - { - "description": "The definition of `AWSAssumeRole` object.", + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "modified_by": { + "description": "Relationship to user.", + "nullable": true, + "properties": { + "data": { + "description": "Relationship to user object.", + "nullable": true, + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "api_keys", + "description": "API Keys resource type.", + "enum": [ + "api_keys" + ], + "example": "api_keys", + "type": "string", + "x-enum-varnames": [ + "API_KEYS" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "included": { + "description": "Array of objects related to the API key.", + "items": { + "description": "An object related to an API key.", + "oneOf": [ + { + "description": "User object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of user object returned by the API.", + "properties": { + "created_at": { + "description": "Creation time of the user.", + "format": "date-time", + "type": "string" + }, + "disabled": { + "description": "Whether the user is disabled.", + "type": "boolean" + }, + "email": { + "description": "Email of the user.", + "type": "string" + }, + "handle": { + "description": "Handle of the user.", + "type": "string" + }, + "icon": { + "description": "URL of the user's icon.", + "type": "string" + }, + "mfa_enabled": { + "description": "If user has MFA enabled.", + "readOnly": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time that the user was last modified.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the user.", + "nullable": true, + "type": "string" + }, + "service_account": { + "description": "Whether the user is a service account.", + "type": "boolean" + }, + "status": { + "description": "Status of the user.", + "type": "string" + }, + "title": { + "description": "Title of the user.", + "nullable": true, + "type": "string" + }, + "verified": { + "description": "Whether the user is verified.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the user.", + "type": "string" + }, + "relationships": { + "description": "Relationships of the user object returned by the API.", + "properties": { + "org": { + "description": "Relationship to an organization.", + "properties": { + "data": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_orgs": { + "description": "Relationship to organizations.", + "properties": { + "data": { + "description": "Relationships to organization objects.", + "example": [], + "items": { + "description": "Relationship to organization object.", "properties": { - "account_id": { - "description": "AWS account the connection is created for", - "example": "111222333444", - "pattern": "^\\d{12}$", - "type": "string" - }, - "external_id": { - "description": "External ID used to scope which connection can be used to assume the role", - "example": "33a1011635c44b38a064cf14e82e1d8f", - "readOnly": true, - "type": "string" - }, - "principal_id": { - "description": "AWS account that will assume the role", - "example": "123456789012", - "readOnly": true, - "type": "string" - }, - "role": { - "description": "Role to assume", - "example": "my-role", + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", "type": "string" }, "type": { - "description": "The definition of `AWSAssumeRoleType` object.", + "default": "orgs", + "description": "Organizations resource type.", "enum": [ - "AWSAssumeRole" + "orgs" ], - "example": "AWSAssumeRole", + "example": "orgs", "type": "string", "x-enum-varnames": [ - "AWSASSUMEROLE" + "ORGS" ] } }, "required": [ - "type", - "account_id", - "role" + "id", + "type" ], "type": "object" - } - ] + }, + "type": "array" + } }, - "type": { - "description": "The definition of `AWSIntegrationType` object.", - "enum": [ - "AWS" - ], - "example": "AWS", - "type": "string", - "x-enum-varnames": [ - "AWS" - ] - } + "required": [ + "data" + ], + "type": "object" }, - "required": [ - "type", - "credentials" - ], - "type": "object" - }, - { - "description": "The definition of `HTTPIntegration` object.", - "properties": { - "base_url": { - "description": "Base HTTP url for the integration", - "example": "http://datadoghq.com", - "pattern": "url", - "type": "string" - }, - "credentials": { - "description": "The definition of `HTTPCredentials` object.", - "oneOf": [ - { - "description": "The definition of `HTTPTokenAuth` object.", + "other_users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", "properties": { - "body": { - "description": "The definition of `HTTPBody` object.", - "properties": { - "content": { - "description": "Serialized body content", - "example": "{\"some-json\": \"with-value\"}", - "type": "string" - }, - "content_type": { - "description": "Content type of the body", - "example": "application/json", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "description": "The `HTTPTokenAuth` `headers`.", - "items": { - "description": "The definition of `HTTPHeader` object.", - "properties": { - "name": { - "description": "The `HTTPHeader` `name`.", - "example": "MyHttpHeader", - "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", - "type": "string" - }, - "value": { - "description": "The `HTTPHeader` `value`.", - "example": "Some header value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "tokens": { - "description": "The `HTTPTokenAuth` `tokens`.", - "items": { - "description": "The definition of `HTTPToken` object.", - "properties": { - "name": { - "description": "The `HTTPToken` `name`.", - "example": "MyToken", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "type": { - "description": "The definition of `TokenType` object.", - "enum": [ - "SECRET" - ], - "example": "SECRET", - "type": "string", - "x-enum-varnames": [ - "SECRET" - ] - }, - "value": { - "description": "The `HTTPToken` `value`.", - "example": "Some Token Value", - "type": "string" - } - }, - "required": [ - "name", - "value", - "type" - ], - "type": "object" - }, - "type": "array" + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" }, "type": { - "description": "The definition of `HTTPTokenAuthType` object.", + "default": "users", + "description": "Users resource type.", "enum": [ - "HTTPTokenAuth" + "users" ], - "example": "HTTPTokenAuth", + "example": "users", "type": "string", "x-enum-varnames": [ - "HTTPTOKENAUTH" + "USERS" ] - }, - "url_parameters": { - "description": "The `HTTPTokenAuth` `url_parameters`.", - "items": { - "description": "The definition of `UrlParam` object.", - "properties": { - "name": { - "example": "MyUrlParameter", - "description": "Name for tokens.", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "value": { - "description": "The `UrlParam` `value`.", - "example": "Some Url Parameter value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" } }, "required": [ + "id", "type" ], - "type": "object" - } - ] + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } }, - "type": { - "description": "The definition of `HTTPIntegrationType` object.", - "enum": [ - "HTTP" - ], - "example": "HTTP", - "type": "string", - "x-enum-varnames": [ - "HTTP" - ] - } + "required": [ + "data" + ], + "type": "object" }, - "required": [ - "type", - "base_url", - "credentials" - ], - "type": "object" + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "type": "object", + "x-merge-override": { + "properties": false } - ] + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } }, - "name": { - "description": "Name of the connection", - "example": "My AWS Connection", - "type": "string" + "type": "object", + "x-merge-override": { + "required": false } }, - "required": [ - "name", - "integration" - ], - "type": "object" - }, - "id": { - "description": "The connection identifier", - "readOnly": true, - "type": "string" - }, - "type": { - "description": "The definition of `ActionConnectionDataType` object.", - "enum": [ - "action_connection" - ], - "example": "action_connection", - "type": "string", - "x-enum-varnames": [ - "ACTION_CONNECTION" - ] - } + { + "description": "The definition of LeakedKey object.", + "properties": { + "attributes": { + "description": "The definition of LeakedKeyAttributes object.", + "properties": { + "date": { + "description": "The LeakedKeyAttributes date.", + "example": "2017-07-21T17:32:28Z", + "format": "date-time", + "type": "string" + }, + "leak_source": { + "description": "The LeakedKeyAttributes leak_source.", + "type": "string" + } + }, + "required": [ + "date" + ], + "type": "object" + }, + "id": { + "description": "The LeakedKey id.", + "example": "id", + "type": "string" + }, + "type": { + "default": "leaked_keys", + "description": "The definition of LeakedKeyType object.", + "enum": [ + "leaked_keys" + ], + "example": "leaked_keys", + "type": "string", + "x-enum-varnames": [ + "LEAKED_KEYS" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + ] }, - "required": [ - "type", - "attributes" - ], - "type": "object" + "type": "array", + "x-merge-override": { + "items": false + } } }, "type": "object" } } }, - "description": "Successfully created Action Connection" + "description": "Created" }, "400": { "content": { @@ -198227,52 +212564,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -198294,179 +212592,720 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Create an API key", + "tags": [ + "Key Management" + ], + "x-codegen-request-body-name": "body", + "x-given": { + "api_key": { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"attributes\": {\n \"name\": \"{{ unique }}\"\n },\n \"type\": \"api_keys\"\n }\n}" + } + ], + "step": "there is a valid \"api_key\" in the system" + } + }, + "x-menu-order": 4, + "x-permission": { + "operator": "OR", + "permissions": [ + "api_keys_write" + ] + }, + "x-undo": { + "operationId": "DeleteAPIKey", + "parameters": [ + { + "name": "api_key_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "x-merge-override": { + "post": true + } + }, + "/api/v2/api_keys/{api_key_id}": { + "delete": { + "description": "Delete an API key.", + "operationId": "DeleteAPIKey", + "parameters": [ + { + "description": "The ID of the API key.", + "in": "path", + "name": "api_key_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Delete an API key", + "tags": [ + "Key Management" + ], + "x-menu-order": 1, + "x-permission": { + "operator": "OR", + "permissions": [ + "api_keys_delete" + ] + }, + "x-undo": { + "type": "idempotent" + } + }, + "get": { + "description": "Get an API key.", + "operationId": "GetAPIKey", + "parameters": [ + { + "description": "The ID of the API key.", + "in": "path", + "name": "api_key_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`.", + "in": "query", + "name": "include", + "required": false, + "schema": { + "example": "created_by,modified_by", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response for retrieving an API key.", + "properties": { + "data": { + "description": "Datadog API key.", + "properties": { + "attributes": { + "description": "Attributes of a full API key.", + "properties": { + "category": { + "description": "The category of the API key.", + "type": "string" + }, + "created_at": { + "description": "Creation date of the API key.", + "example": "2020-11-23T10:00:00.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "key": { + "description": "The API key.", + "readOnly": true, + "type": "string", + "x-secret": true + }, + "last4": { + "description": "The last four characters of the API key.", + "example": "abcd", + "maxLength": 4, + "minLength": 4, + "readOnly": true, + "type": "string", + "x-secret": true + }, + "modified_at": { + "description": "Date the API key was last modified.", + "example": "2020-11-23T10:00:00.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "name": { + "description": "Name of the API key.", + "example": "API Key for submitting metrics", + "type": "string" + }, + "remote_config_read_enabled": { + "description": "The remote config read enabled status.", + "type": "boolean" + } }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" + "type": "object" + }, + "id": { + "description": "ID of the API key.", + "type": "string" + }, + "relationships": { + "description": "Resources related to the API key.", + "properties": { + "created_by": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "modified_by": { + "description": "Relationship to user.", + "nullable": true, + "properties": { + "data": { + "description": "Relationship to user object.", + "nullable": true, + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + } }, - "source": { - "description": "References to the source of the error.", + "type": "object" + }, + "type": { + "default": "api_keys", + "description": "API Keys resource type.", + "enum": [ + "api_keys" + ], + "example": "api_keys", + "type": "string", + "x-enum-varnames": [ + "API_KEYS" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "included": { + "description": "Array of objects related to the API key.", + "items": { + "description": "An object related to an API key.", + "oneOf": [ + { + "description": "User object returned by the API.", "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" + "attributes": { + "description": "Attributes of user object returned by the API.", + "properties": { + "created_at": { + "description": "Creation time of the user.", + "format": "date-time", + "type": "string" + }, + "disabled": { + "description": "Whether the user is disabled.", + "type": "boolean" + }, + "email": { + "description": "Email of the user.", + "type": "string" + }, + "handle": { + "description": "Handle of the user.", + "type": "string" + }, + "icon": { + "description": "URL of the user's icon.", + "type": "string" + }, + "mfa_enabled": { + "description": "If user has MFA enabled.", + "readOnly": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time that the user was last modified.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the user.", + "nullable": true, + "type": "string" + }, + "service_account": { + "description": "Whether the user is a service account.", + "type": "boolean" + }, + "status": { + "description": "Status of the user.", + "type": "string" + }, + "title": { + "description": "Title of the user.", + "nullable": true, + "type": "string" + }, + "verified": { + "description": "Whether the user is verified.", + "type": "boolean" + } + }, + "type": "object" }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", + "id": { + "description": "ID of the user.", "type": "string" }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" + "relationships": { + "description": "Relationships of the user object returned by the API.", + "properties": { + "org": { + "description": "Relationship to an organization.", + "properties": { + "data": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_orgs": { + "description": "Relationship to organizations.", + "properties": { + "data": { + "description": "Relationships to organization objects.", + "example": [], + "items": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "type": "object", + "x-merge-override": { + "properties": false + } + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] } }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Forbidden" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" + "type": "object", + "x-merge-override": { + "required": false + } }, - "source": { - "description": "References to the source of the error.", + { + "description": "The definition of LeakedKey object.", "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" + "attributes": { + "description": "The definition of LeakedKeyAttributes object.", + "properties": { + "date": { + "description": "The LeakedKeyAttributes date.", + "example": "2017-07-21T17:32:28Z", + "format": "date-time", + "type": "string" + }, + "leak_source": { + "description": "The LeakedKeyAttributes leak_source.", + "type": "string" + } + }, + "required": [ + "date" + ], + "type": "object" }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", + "id": { + "description": "The LeakedKey id.", + "example": "id", "type": "string" }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" + "type": { + "default": "leaked_keys", + "description": "The definition of LeakedKeyType object.", + "enum": [ + "leaked_keys" + ], + "example": "leaked_keys", + "type": "string", + "x-enum-varnames": [ + "LEAKED_KEYS" + ] } }, + "required": [ + "attributes", + "id", + "type" + ], "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" } - }, - "type": "object" + ] }, - "type": "array" + "type": "array", + "x-merge-override": { + "items": false + } } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "Too Many Request" - } - }, - "summary": "Create a new Action Connection", - "tags": [ - "Action Connection" - ], - "x-given": { - "action_connection": { - "parameters": [ - { - "name": "body", - "value": "{\n \"data\": {\n \"type\": \"action_connection\",\n \"attributes\": {\n \"name\": \"Cassette Connection DELETE\",\n \"integration\": {\n \"type\": \"AWS\",\n \"credentials\": {\n \"type\": \"AWSAssumeRole\",\n \"role\": \"MyRole\",\n \"account_id\": \"123456789123\"\n }\n }\n }\n }\n}" - } - ], - "step": "there is a valid \"action_connection\" in the system" - } - }, - "x-menu-order": 2, - "x-undo": { - "operationId": "DeleteActionConnection", - "parameters": [ - { - "name": "connection_id", - "source": "data.id" - } - ], - "type": "unsafe" - } - } - }, - "/api/v2/actions/connections/{connection_id}": { - "delete": { - "description": "Delete an existing Action Connection", - "operationId": "DeleteActionConnection", - "parameters": [ - { - "description": "The ID of the action connection", - "in": "path", - "name": "connection_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "The resource was deleted successfully." + "description": "OK" }, "403": { "content": { @@ -198476,52 +213315,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -198543,52 +213343,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -198610,52 +213371,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -198667,324 +213389,594 @@ } } }, - "description": "Too Many Request" + "description": "Too many requests" } }, - "summary": "Delete an existing Action Connection", + "summary": "Get API key", "tags": [ - "Action Connection" + "Key Management" ], - "x-menu-order": 4, + "x-menu-order": 3, + "x-merge-override": { + "parameters": false + }, "x-permission": { "operator": "OR", "permissions": [ - "connection_write" + "api_keys_read" ] }, "x-undo": { - "type": "idempotent" + "type": "safe" } }, - "get": { - "description": "Get an existing Action Connection", - "operationId": "GetActionConnection", + "patch": { + "description": "Update an API key.", + "operationId": "UpdateAPIKey", "parameters": [ { - "description": "The ID of the action connection", + "description": "The ID of the API key.", "in": "path", - "name": "connection_id", + "name": "api_key_id", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Request used to update an API key.", + "properties": { + "data": { + "description": "Object used to update an API key.", + "properties": { + "attributes": { + "description": "Attributes used to update an API Key.", + "properties": { + "category": { + "description": "The APIKeyUpdateAttributes category.", + "type": "string" + }, + "name": { + "description": "Name of the API key.", + "example": "API Key for submitting metrics", + "type": "string" + }, + "remote_config_read_enabled": { + "description": "The APIKeyUpdateAttributes remote_config_read_enabled.", + "type": "boolean" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "id": { + "description": "ID of the API key.", + "example": "00112233-4455-6677-8899-aabbccddeeff", + "type": "string" + }, + "type": { + "default": "api_keys", + "description": "API Keys resource type.", + "enum": [ + "api_keys" + ], + "example": "api_keys", + "type": "string", + "x-enum-varnames": [ + "API_KEYS" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "description": "The response for found connection", + "description": "Response for retrieving an API key.", "properties": { "data": { - "description": "Data related to the connection.", + "description": "Datadog API key.", "properties": { "attributes": { - "description": "The definition of `ActionConnectionAttributes` object.", + "description": "Attributes of a full API key.", "properties": { - "integration": { - "description": "The definition of `ActionConnectionIntegration` object.", - "oneOf": [ - { - "description": "The definition of `AWSIntegration` object.", + "category": { + "description": "The category of the API key.", + "type": "string" + }, + "created_at": { + "description": "Creation date of the API key.", + "example": "2020-11-23T10:00:00.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "key": { + "description": "The API key.", + "readOnly": true, + "type": "string", + "x-secret": true + }, + "last4": { + "description": "The last four characters of the API key.", + "example": "abcd", + "maxLength": 4, + "minLength": 4, + "readOnly": true, + "type": "string", + "x-secret": true + }, + "modified_at": { + "description": "Date the API key was last modified.", + "example": "2020-11-23T10:00:00.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "name": { + "description": "Name of the API key.", + "example": "API Key for submitting metrics", + "type": "string" + }, + "remote_config_read_enabled": { + "description": "The remote config read enabled status.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the API key.", + "type": "string" + }, + "relationships": { + "description": "Resources related to the API key.", + "properties": { + "created_by": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", "properties": { - "credentials": { - "description": "The definition of `AWSCredentials` object.", - "oneOf": [ - { - "description": "The definition of `AWSAssumeRole` object.", + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "modified_by": { + "description": "Relationship to user.", + "nullable": true, + "properties": { + "data": { + "description": "Relationship to user object.", + "nullable": true, + "properties": { + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string" + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "api_keys", + "description": "API Keys resource type.", + "enum": [ + "api_keys" + ], + "example": "api_keys", + "type": "string", + "x-enum-varnames": [ + "API_KEYS" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "included": { + "description": "Array of objects related to the API key.", + "items": { + "description": "An object related to an API key.", + "oneOf": [ + { + "description": "User object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of user object returned by the API.", + "properties": { + "created_at": { + "description": "Creation time of the user.", + "format": "date-time", + "type": "string" + }, + "disabled": { + "description": "Whether the user is disabled.", + "type": "boolean" + }, + "email": { + "description": "Email of the user.", + "type": "string" + }, + "handle": { + "description": "Handle of the user.", + "type": "string" + }, + "icon": { + "description": "URL of the user's icon.", + "type": "string" + }, + "mfa_enabled": { + "description": "If user has MFA enabled.", + "readOnly": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time that the user was last modified.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the user.", + "nullable": true, + "type": "string" + }, + "service_account": { + "description": "Whether the user is a service account.", + "type": "boolean" + }, + "status": { + "description": "Status of the user.", + "type": "string" + }, + "title": { + "description": "Title of the user.", + "nullable": true, + "type": "string" + }, + "verified": { + "description": "Whether the user is verified.", + "type": "boolean" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the user.", + "type": "string" + }, + "relationships": { + "description": "Relationships of the user object returned by the API.", + "properties": { + "org": { + "description": "Relationship to an organization.", + "properties": { + "data": { + "description": "Relationship to organization object.", + "properties": { + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", + "type": "string" + }, + "type": { + "default": "orgs", + "description": "Organizations resource type.", + "enum": [ + "orgs" + ], + "example": "orgs", + "type": "string", + "x-enum-varnames": [ + "ORGS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "other_orgs": { + "description": "Relationship to organizations.", + "properties": { + "data": { + "description": "Relationships to organization objects.", + "example": [], + "items": { + "description": "Relationship to organization object.", "properties": { - "account_id": { - "description": "AWS account the connection is created for", - "example": "111222333444", - "pattern": "^\\d{12}$", - "type": "string" - }, - "external_id": { - "description": "External ID used to scope which connection can be used to assume the role", - "example": "33a1011635c44b38a064cf14e82e1d8f", - "readOnly": true, - "type": "string" - }, - "principal_id": { - "description": "AWS account that will assume the role", - "example": "123456789012", - "readOnly": true, - "type": "string" - }, - "role": { - "description": "Role to assume", - "example": "my-role", + "id": { + "description": "ID of the organization.", + "example": "00000000-0000-beef-0000-000000000000", "type": "string" }, "type": { - "description": "The definition of `AWSAssumeRoleType` object.", + "default": "orgs", + "description": "Organizations resource type.", "enum": [ - "AWSAssumeRole" + "orgs" ], - "example": "AWSAssumeRole", + "example": "orgs", "type": "string", "x-enum-varnames": [ - "AWSASSUMEROLE" + "ORGS" ] } }, "required": [ - "type", - "account_id", - "role" + "id", + "type" ], "type": "object" - } - ] + }, + "type": "array" + } }, - "type": { - "description": "The definition of `AWSIntegrationType` object.", - "enum": [ - "AWS" - ], - "example": "AWS", - "type": "string", - "x-enum-varnames": [ - "AWS" - ] - } + "required": [ + "data" + ], + "type": "object" }, - "required": [ - "type", - "credentials" - ], - "type": "object" - }, - { - "description": "The definition of `HTTPIntegration` object.", - "properties": { - "base_url": { - "description": "Base HTTP url for the integration", - "example": "http://datadoghq.com", - "pattern": "url", - "type": "string" - }, - "credentials": { - "description": "The definition of `HTTPCredentials` object.", - "oneOf": [ - { - "description": "The definition of `HTTPTokenAuth` object.", + "other_users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", "properties": { - "body": { - "description": "The definition of `HTTPBody` object.", - "properties": { - "content": { - "description": "Serialized body content", - "example": "{\"some-json\": \"with-value\"}", - "type": "string" - }, - "content_type": { - "description": "Content type of the body", - "example": "application/json", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "description": "The `HTTPTokenAuth` `headers`.", - "items": { - "description": "The definition of `HTTPHeader` object.", - "properties": { - "name": { - "description": "The `HTTPHeader` `name`.", - "example": "MyHttpHeader", - "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", - "type": "string" - }, - "value": { - "description": "The `HTTPHeader` `value`.", - "example": "Some header value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" + "id": { + "description": "A unique identifier that represents the user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string" }, - "tokens": { - "description": "The `HTTPTokenAuth` `tokens`.", - "items": { - "description": "The definition of `HTTPToken` object.", - "properties": { - "name": { - "description": "The `HTTPToken` `name`.", - "example": "MyToken", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "type": { - "description": "The definition of `TokenType` object.", - "enum": [ - "SECRET" - ], - "example": "SECRET", - "type": "string", - "x-enum-varnames": [ - "SECRET" - ] - }, - "value": { - "description": "The `HTTPToken` `value`.", - "example": "Some Token Value", - "type": "string" - } - }, - "required": [ - "name", - "value", - "type" - ], - "type": "object" - }, - "type": "array" + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" }, "type": { - "description": "The definition of `HTTPTokenAuthType` object.", + "default": "roles", + "description": "Roles type.", "enum": [ - "HTTPTokenAuth" + "roles" ], - "example": "HTTPTokenAuth", + "example": "roles", "type": "string", "x-enum-varnames": [ - "HTTPTOKENAUTH" + "ROLES" ] - }, - "url_parameters": { - "description": "The `HTTPTokenAuth` `url_parameters`.", - "items": { - "description": "The definition of `UrlParam` object.", - "properties": { - "name": { - "example": "MyUrlParameter", - "description": "Name for tokens.", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "value": { - "description": "The `UrlParam` `value`.", - "example": "Some Url Parameter value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" } }, - "required": [ - "type" - ], - "type": "object" - } - ] + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } }, - "type": { - "description": "The definition of `HTTPIntegrationType` object.", - "enum": [ - "HTTP" - ], - "example": "HTTP", - "type": "string", - "x-enum-varnames": [ - "HTTP" - ] + "type": "object", + "x-merge-override": { + "required": false } - }, - "required": [ - "type", - "base_url", - "credentials" - ], - "type": "object" + } + }, + "type": "object", + "x-merge-override": { + "properties": false } - ] + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": [ + "users" + ], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS" + ] + } }, - "name": { - "description": "Name of the connection", - "example": "My AWS Connection", - "type": "string" + "type": "object", + "x-merge-override": { + "required": false } }, - "required": [ - "name", - "integration" - ], - "type": "object" - }, - "id": { - "description": "The connection identifier", - "readOnly": true, - "type": "string" - }, - "type": { - "description": "The definition of `ActionConnectionDataType` object.", - "enum": [ - "action_connection" - ], - "example": "action_connection", - "type": "string", - "x-enum-varnames": [ - "ACTION_CONNECTION" - ] - } + { + "description": "The definition of LeakedKey object.", + "properties": { + "attributes": { + "description": "The definition of LeakedKeyAttributes object.", + "properties": { + "date": { + "description": "The LeakedKeyAttributes date.", + "example": "2017-07-21T17:32:28Z", + "format": "date-time", + "type": "string" + }, + "leak_source": { + "description": "The LeakedKeyAttributes leak_source.", + "type": "string" + } + }, + "required": [ + "date" + ], + "type": "object" + }, + "id": { + "description": "The LeakedKey id.", + "example": "id", + "type": "string" + }, + "type": { + "default": "leaked_keys", + "description": "The definition of LeakedKeyType object.", + "enum": [ + "leaked_keys" + ], + "example": "leaked_keys", + "type": "string", + "x-enum-varnames": [ + "LEAKED_KEYS" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + ] }, - "required": [ - "type", - "attributes" - ], - "type": "object" + "type": "array", + "x-merge-override": { + "items": false + } } }, "type": "object" } } }, - "description": "Successfully get Action Connection" + "description": "OK" }, "400": { "content": { @@ -198994,52 +213986,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -199061,52 +214014,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -199128,52 +214042,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -199195,52 +214070,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -199252,588 +214088,133 @@ } } }, - "description": "Too Many Request" + "description": "Too many requests" } }, - "summary": "Get an existing Action Connection", + "summary": "Edit an API key", "tags": [ - "Action Connection" + "Key Management" ], - "x-menu-order": 1, + "x-codegen-request-body-name": "body", + "x-menu-order": 2, + "x-permission": { + "operator": "OR", + "permissions": [ + "api_keys_write" + ] + }, "x-undo": { - "type": "safe" + "type": "idempotent" } }, - "patch": { - "description": "Update an existing Action Connection", - "operationId": "UpdateActionConnection", + "x-merge-override": { + "delete": true, + "get": true, + "patch": true + } + }, + "/api/v2/apicatalog/api": { + "get": { + "description": "List APIs and their IDs.", + "operationId": "ListAPIs", "parameters": [ { - "description": "The ID of the action connection", - "in": "path", - "name": "connection_id", - "required": true, + "description": "Filter APIs by name", + "in": "query", + "name": "query", + "required": false, "schema": { + "example": "payments", "type": "string" } + }, + { + "description": "Number of items per page.", + "in": "query", + "name": "page[limit]", + "required": false, + "schema": { + "default": 20, + "format": "int64", + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Offset for pagination.", + "in": "query", + "name": "page[offset]", + "required": false, + "schema": { + "default": 0, + "format": "int64", + "minimum": 0, + "type": "integer" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "Request used to update an action connection.", - "properties": { - "data": { - "description": "Data related to the connection update.", - "properties": { - "attributes": { - "description": "The definition of `ActionConnectionAttributesUpdate` object.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response for `ListAPIs`.", + "properties": { + "data": { + "description": "List of API items.", + "items": { + "description": "Data envelope for `ListAPIsResponse`.", "properties": { - "integration": { - "description": "The definition of `ActionConnectionIntegrationUpdate` object.", - "oneOf": [ - { - "description": "The definition of `AWSIntegrationUpdate` object.", - "properties": { - "credentials": { - "description": "The definition of `AWSCredentialsUpdate` object.", - "oneOf": [ - { - "description": "The definition of `AWSAssumeRoleUpdate` object.", - "properties": { - "account_id": { - "description": "AWS account the connection is created for", - "example": "111222333444", - "pattern": "^\\d{12}$", - "type": "string" - }, - "generate_new_external_id": { - "description": "The `AWSAssumeRoleUpdate` `generate_new_external_id`.", - "type": "boolean" - }, - "role": { - "description": "Role to assume", - "example": "my-role", - "type": "string" - }, - "type": { - "description": "The definition of `AWSAssumeRoleType` object.", - "enum": [ - "AWSAssumeRole" - ], - "example": "AWSAssumeRole", - "type": "string", - "x-enum-varnames": [ - "AWSASSUMEROLE" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - } - ] - }, - "type": { - "description": "The definition of `AWSIntegrationType` object.", - "enum": [ - "AWS" - ], - "example": "AWS", - "type": "string", - "x-enum-varnames": [ - "AWS" - ] - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "description": "The definition of `HTTPIntegrationUpdate` object.", - "properties": { - "base_url": { - "description": "Base HTTP url for the integration", - "example": "http://datadoghq.com", - "pattern": "url", - "type": "string" - }, - "credentials": { - "description": "The definition of `HTTPCredentialsUpdate` object.", - "oneOf": [ - { - "description": "The definition of `HTTPTokenAuthUpdate` object.", - "properties": { - "body": { - "description": "The definition of `HTTPBody` object.", - "properties": { - "content": { - "description": "Serialized body content", - "example": "{\"some-json\": \"with-value\"}", - "type": "string" - }, - "content_type": { - "description": "Content type of the body", - "example": "application/json", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "description": "The `HTTPTokenAuthUpdate` `headers`.", - "items": { - "description": "The definition of `HTTPHeaderUpdate` object.", - "properties": { - "deleted": { - "description": "Should the header be deleted.", - "type": "boolean" - }, - "name": { - "description": "The `HTTPHeaderUpdate` `name`.", - "example": "MyHttpHeader", - "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", - "type": "string" - }, - "value": { - "description": "The `HTTPHeaderUpdate` `value`.", - "example": "Updated Header Value", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - "tokens": { - "description": "The `HTTPTokenAuthUpdate` `tokens`.", - "items": { - "description": "The definition of `HTTPTokenUpdate` object.", - "properties": { - "deleted": { - "description": "Should the header be deleted.", - "type": "boolean" - }, - "name": { - "description": "The `HTTPToken` `name`.", - "example": "MyToken", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "type": { - "description": "The definition of `TokenType` object.", - "enum": [ - "SECRET" - ], - "example": "SECRET", - "type": "string", - "x-enum-varnames": [ - "SECRET" - ] - }, - "value": { - "description": "The `HTTPToken` `value`.", - "example": "Some Token Value", - "type": "string" - } - }, - "required": [ - "name", - "type", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "type": { - "description": "The definition of `HTTPTokenAuthType` object.", - "enum": [ - "HTTPTokenAuth" - ], - "example": "HTTPTokenAuth", - "type": "string", - "x-enum-varnames": [ - "HTTPTOKENAUTH" - ] - }, - "url_parameters": { - "description": "The `HTTPTokenAuthUpdate` `url_parameters`.", - "items": { - "description": "The definition of `UrlParamUpdate` object.", - "properties": { - "deleted": { - "description": "Should the header be deleted.", - "type": "boolean" - }, - "name": { - "example": "MyUrlParameter", - "description": "Name for tokens.", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "value": { - "description": "The `UrlParamUpdate` `value`.", - "example": "Some Url Parameter value", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "type" - ], - "type": "object" - } - ] - }, - "type": { - "description": "The definition of `HTTPIntegrationType` object.", - "enum": [ - "HTTP" - ], - "example": "HTTP", - "type": "string", - "x-enum-varnames": [ - "HTTP" - ] - } - }, - "required": [ - "type" - ], - "type": "object" + "attributes": { + "description": "Attributes for `ListAPIsResponseData`.", + "properties": { + "name": { + "description": "API name.", + "example": "Payments API", + "type": "string" } - ] + }, + "type": "object" }, - "name": { - "description": "Name of the connection", - "example": "My AWS Connection", + "id": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", "type": "string" } }, "type": "object" }, - "type": { - "description": "The definition of `ActionConnectionDataType` object.", - "enum": [ - "action_connection" - ], - "example": "action_connection", - "type": "string", - "x-enum-varnames": [ - "ACTION_CONNECTION" - ] - } + "type": "array" }, - "required": [ - "type", - "attributes" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "Update an existing Action Connection request body", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "The response for an updated connection.", - "properties": { - "data": { - "description": "Data related to the connection.", + "meta": { + "description": "Metadata for `ListAPIsResponse`.", "properties": { - "attributes": { - "description": "The definition of `ActionConnectionAttributes` object.", + "pagination": { + "description": "Pagination metadata information for `ListAPIsResponse`.", "properties": { - "integration": { - "description": "The definition of `ActionConnectionIntegration` object.", - "oneOf": [ - { - "description": "The definition of `AWSIntegration` object.", - "properties": { - "credentials": { - "description": "The definition of `AWSCredentials` object.", - "oneOf": [ - { - "description": "The definition of `AWSAssumeRole` object.", - "properties": { - "account_id": { - "description": "AWS account the connection is created for", - "example": "111222333444", - "pattern": "^\\d{12}$", - "type": "string" - }, - "external_id": { - "description": "External ID used to scope which connection can be used to assume the role", - "example": "33a1011635c44b38a064cf14e82e1d8f", - "readOnly": true, - "type": "string" - }, - "principal_id": { - "description": "AWS account that will assume the role", - "example": "123456789012", - "readOnly": true, - "type": "string" - }, - "role": { - "description": "Role to assume", - "example": "my-role", - "type": "string" - }, - "type": { - "description": "The definition of `AWSAssumeRoleType` object.", - "enum": [ - "AWSAssumeRole" - ], - "example": "AWSAssumeRole", - "type": "string", - "x-enum-varnames": [ - "AWSASSUMEROLE" - ] - } - }, - "required": [ - "type", - "account_id", - "role" - ], - "type": "object" - } - ] - }, - "type": { - "description": "The definition of `AWSIntegrationType` object.", - "enum": [ - "AWS" - ], - "example": "AWS", - "type": "string", - "x-enum-varnames": [ - "AWS" - ] - } - }, - "required": [ - "type", - "credentials" - ], - "type": "object" - }, - { - "description": "The definition of `HTTPIntegration` object.", - "properties": { - "base_url": { - "description": "Base HTTP url for the integration", - "example": "http://datadoghq.com", - "pattern": "url", - "type": "string" - }, - "credentials": { - "description": "The definition of `HTTPCredentials` object.", - "oneOf": [ - { - "description": "The definition of `HTTPTokenAuth` object.", - "properties": { - "body": { - "description": "The definition of `HTTPBody` object.", - "properties": { - "content": { - "description": "Serialized body content", - "example": "{\"some-json\": \"with-value\"}", - "type": "string" - }, - "content_type": { - "description": "Content type of the body", - "example": "application/json", - "type": "string" - } - }, - "type": "object" - }, - "headers": { - "description": "The `HTTPTokenAuth` `headers`.", - "items": { - "description": "The definition of `HTTPHeader` object.", - "properties": { - "name": { - "description": "The `HTTPHeader` `name`.", - "example": "MyHttpHeader", - "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", - "type": "string" - }, - "value": { - "description": "The `HTTPHeader` `value`.", - "example": "Some header value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" - }, - "tokens": { - "description": "The `HTTPTokenAuth` `tokens`.", - "items": { - "description": "The definition of `HTTPToken` object.", - "properties": { - "name": { - "description": "The `HTTPToken` `name`.", - "example": "MyToken", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "type": { - "description": "The definition of `TokenType` object.", - "enum": [ - "SECRET" - ], - "example": "SECRET", - "type": "string", - "x-enum-varnames": [ - "SECRET" - ] - }, - "value": { - "description": "The `HTTPToken` `value`.", - "example": "Some Token Value", - "type": "string" - } - }, - "required": [ - "name", - "value", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "type": { - "description": "The definition of `HTTPTokenAuthType` object.", - "enum": [ - "HTTPTokenAuth" - ], - "example": "HTTPTokenAuth", - "type": "string", - "x-enum-varnames": [ - "HTTPTOKENAUTH" - ] - }, - "url_parameters": { - "description": "The `HTTPTokenAuth` `url_parameters`.", - "items": { - "description": "The definition of `UrlParam` object.", - "properties": { - "name": { - "example": "MyUrlParameter", - "description": "Name for tokens.", - "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", - "type": "string" - }, - "value": { - "description": "The `UrlParam` `value`.", - "example": "Some Url Parameter value", - "type": "string" - } - }, - "required": [ - "name", - "value" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "type" - ], - "type": "object" - } - ] - }, - "type": { - "description": "The definition of `HTTPIntegrationType` object.", - "enum": [ - "HTTP" - ], - "example": "HTTP", - "type": "string", - "x-enum-varnames": [ - "HTTP" - ] - } - }, - "required": [ - "type", - "base_url", - "credentials" - ], - "type": "object" - } - ] + "limit": { + "description": "Number of items in the current page.", + "example": 20, + "format": "int64", + "type": "integer" }, - "name": { - "description": "Name of the connection", - "example": "My AWS Connection", - "type": "string" - } - }, - "required": [ - "name", - "integration" - ], - "type": "object" - }, - "id": { - "description": "The connection identifier", - "readOnly": true, - "type": "string" - }, - "type": { - "description": "The definition of `ActionConnectionDataType` object.", - "enum": [ - "action_connection" - ], - "example": "action_connection", - "type": "string", - "x-enum-varnames": [ - "ACTION_CONNECTION" - ] + "offset": { + "description": "Offset for pagination.", + "example": 0, + "format": "int64", + "type": "integer" + }, + "total_count": { + "description": "Total number of items.", + "example": 35, + "format": "int64", + "type": "integer" + } + }, + "type": "object" } }, - "required": [ - "type", - "attributes" - ], "type": "object" } }, @@ -199841,7 +214222,7 @@ } } }, - "description": "Successfully updated Action Connection" + "description": "OK" }, "400": { "content": { @@ -199908,7 +214289,7 @@ } } }, - "description": "Bad Request" + "description": "Bad request" }, "403": { "content": { @@ -199977,7 +214358,86 @@ }, "description": "Forbidden" }, - "404": { + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "apm_api_catalog_read" + ] + } + ], + "summary": "List APIs", + "tags": [ + "API Management" + ], + "x-menu-order": 4, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_api_catalog_read" + ] + }, + "x-undo": { + "type": "safe" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + } + }, + "/api/v2/apicatalog/api/{id}": { + "delete": { + "description": "Delete a specific API by ID.", + "operationId": "DeleteOpenAPI", + "parameters": [ + { + "description": "ID of the API to delete", + "in": "path", + "name": "id", + "required": true, + "schema": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "API deleted successfully" + }, + "400": { "content": { "application/json": { "schema": { @@ -200042,9 +214502,9 @@ } } }, - "description": "Not Found" + "description": "Bad request" }, - "429": { + "403": { "content": { "application/json": { "schema": { @@ -200109,77 +214569,59 @@ } } }, - "description": "Too Many Request" - } - }, - "summary": "Update an existing Action Connection", - "tags": [ - "Action Connection" - ], - "x-menu-order": 3, - "x-undo": { - "type": "idempotent" - } - } - }, - "/api/v2/agentless_scanning/accounts/aws": { - "get": { - "description": "Fetches the scan options configured for AWS accounts.", - "operationId": "ListAwsScanOptions", - "responses": { - "200": { + "description": "Forbidden" + }, + "404": { "content": { "application/json": { "schema": { - "description": "Response object that includes a list of AWS scan options.", + "description": "API error response.", "properties": { - "data": { - "description": "A list of AWS scan options.", + "errors": { + "description": "A list of errors.", "items": { - "description": "Single AWS Scan Options entry.", + "description": "API error response body", "properties": { - "attributes": { - "description": "Attributes for the AWS scan options.", + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", "properties": { - "lambda": { - "description": "Indicates if scanning of Lambda functions is enabled.", - "example": true, - "type": "boolean" - }, - "sensitive_data": { - "description": "Indicates if scanning for sensitive data is enabled.", - "example": false, - "type": "boolean" + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" }, - "vuln_containers_os": { - "description": "Indicates if scanning for vulnerabilities in containers is enabled.", - "example": true, - "type": "boolean" + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" }, - "vuln_host_os": { - "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", - "example": true, - "type": "boolean" + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" } }, "type": "object" }, - "id": { - "description": "The ID of the AWS account.", - "example": "184366314700", + "status": { + "description": "Status code of the response.", + "example": "400", "type": "string" }, - "type": { - "default": "aws_scan_options", - "description": "The type of the resource. The value should always be `aws_scan_options`.", - "enum": [ - "aws_scan_options" - ], - "example": "aws_scan_options", - "type": "string", - "x-enum-varnames": [ - "AWS_SCAN_OPTIONS" - ] + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" } }, "type": "object" @@ -200187,31 +214629,6 @@ "type": "array" } }, - "type": "object" - } - } - }, - "description": "OK" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, "required": [ "errors" ], @@ -200219,7 +214636,7 @@ } } }, - "description": "Not Authorized" + "description": "API not found error" }, "429": { "content": { @@ -200250,664 +214667,395 @@ "description": "Too many requests" } }, - "summary": "Get AWS Scan Options", + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "apm_api_catalog_write" + ] + } + ], + "summary": "Delete an API", "tags": [ - "Agentless Scanning" + "API Management" ], - "x-menu-order": 3, + "x-menu-order": 5, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_api_catalog_write" + ] + }, "x-undo": { - "type": "safe" - } + "type": "idempotent" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." } }, - "/api/v2/api_keys": { + "/api/v2/apicatalog/api/{id}/openapi": { "get": { - "description": "List all API keys available for your account.", - "operationId": "ListAPIKeys", + "description": "Retrieve information about a specific API in [OpenAPI](https://spec.openapis.org/oas/latest.html) format file.", + "operationId": "GetOpenAPI", "parameters": [ { - "description": "Size for a given page. The maximum allowed value is 100.", - "in": "query", - "name": "page[size]", - "required": false, - "schema": { - "default": 10, - "example": 10, - "format": "int64", - "type": "integer" - } - }, - { - "description": "Specific page number to return.", - "in": "query", - "name": "page[number]", - "required": false, - "schema": { - "default": 0, - "example": 0, - "format": "int64", - "type": "integer" - } - }, - { - "description": "API key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign.", - "in": "query", - "name": "sort", - "required": false, - "schema": { - "default": "name", - "description": "Sorting options", - "enum": [ - "created_at", - "-created_at", - "last4", - "-last4", - "modified_at", - "-modified_at", - "name", - "-name" - ], - "type": "string", - "x-enum-varnames": [ - "CREATED_AT_ASCENDING", - "CREATED_AT_DESCENDING", - "LAST4_ASCENDING", - "LAST4_DESCENDING", - "MODIFIED_AT_ASCENDING", - "MODIFIED_AT_DESCENDING", - "NAME_ASCENDING", - "NAME_DESCENDING" - ] - } - }, - { - "description": "Filter API keys by the specified string.", - "in": "query", - "name": "filter", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Only include API keys created on or after the specified date.", - "in": "query", - "name": "filter[created_at][start]", - "required": false, - "schema": { - "example": "2020-11-24T18:46:21+00:00", - "type": "string", - "x-merge-override": { - "format": false - } - } - }, - { - "description": "Only include API keys created on or before the specified date.", - "in": "query", - "name": "filter[created_at][end]", - "required": false, - "schema": { - "example": "2020-11-24T18:46:21+00:00", - "type": "string", - "x-merge-override": { - "format": false - } - } - }, - { - "description": "Only include API keys modified on or after the specified date.", - "in": "query", - "name": "filter[modified_at][start]", - "required": false, - "schema": { - "example": "2020-11-24T18:46:21+00:00", - "type": "string", - "x-merge-override": { - "format": false - } - } - }, - { - "description": "Only include API keys modified on or before the specified date.", - "in": "query", - "name": "filter[modified_at][end]", - "required": false, - "schema": { - "example": "2020-11-24T18:46:21+00:00", - "type": "string", - "x-merge-override": { - "format": false - } - } - }, - { - "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`.", - "in": "query", - "name": "include", - "required": false, - "schema": { - "example": "created_by,modified_by", - "type": "string" - } - }, - { - "description": "Filter API keys by remote config read enabled status.", - "in": "query", - "name": "filter[remote_config_read_enabled]", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter API keys by category.", - "in": "query", - "name": "filter[category]", - "required": false, + "description": "ID of the API to retrieve", + "in": "path", + "name": "id", + "required": true, "schema": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", "type": "string" } } ], "responses": { "200": { + "content": { + "multipart/form-data": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" + }, + "400": { "content": { "application/json": { "schema": { - "description": "Response for a list of API keys.", + "description": "API error response.", "properties": { - "data": { - "description": "Array of API keys.", + "errors": { + "description": "A list of errors.", "items": { - "description": "Partial Datadog API key.", + "description": "API error response body", "properties": { - "attributes": { - "description": "Attributes of a partial API key.", + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", "properties": { - "category": { - "description": "The category of the API key.", + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", "type": "string" }, - "created_at": { - "description": "Creation date of the API key.", - "example": "2020-11-23T10:00:00.000Z", - "readOnly": true, - "type": "string", - "x-merge-override": { - "format": false - } - }, - "last4": { - "description": "The last four characters of the API key.", - "example": "abcd", - "maxLength": 4, - "minLength": 4, - "readOnly": true, - "type": "string", - "x-secret": true - }, - "modified_at": { - "description": "Date the API key was last modified.", - "example": "2020-11-23T10:00:00.000Z", - "readOnly": true, - "type": "string", - "x-merge-override": { - "format": false - } - }, - "name": { - "description": "Name of the API key.", - "example": "API Key for submitting metrics", + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", "type": "string" }, - "remote_config_read_enabled": { - "description": "The remote config read enabled status.", - "type": "boolean" + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" } }, "type": "object" }, - "id": { - "description": "ID of the API key.", + "status": { + "description": "Status code of the response.", + "example": "400", "type": "string" }, - "relationships": { - "description": "Resources related to the API key.", + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", "properties": { - "created_by": { - "description": "Relationship to user.", - "properties": { - "data": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "required": [ - "data" - ], - "type": "object" + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" }, - "modified_by": { - "description": "Relationship to user.", - "nullable": true, - "properties": { - "data": { - "description": "Relationship to user object.", - "nullable": true, - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-0000-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "required": [ - "data" - ], - "type": "object" + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" } }, "type": "object" }, - "type": { - "default": "api_keys", - "description": "API Keys resource type.", - "enum": [ - "api_keys" - ], - "example": "api_keys", - "type": "string", - "x-enum-varnames": [ - "API_KEYS" - ] + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" } }, - "type": "object", - "x-merge-override": { - "required": false - } + "type": "object" }, "type": "array" - }, - "included": { - "description": "Array of objects related to the API key.", + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", "items": { - "description": "An object related to an API key.", - "oneOf": [ - { - "description": "User object returned by the API.", + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", "properties": { - "attributes": { - "description": "Attributes of user object returned by the API.", - "properties": { - "created_at": { - "description": "Creation time of the user.", - "format": "date-time", - "type": "string" - }, - "disabled": { - "description": "Whether the user is disabled.", - "type": "boolean" - }, - "email": { - "description": "Email of the user.", - "type": "string" - }, - "handle": { - "description": "Handle of the user.", - "type": "string" - }, - "icon": { - "description": "URL of the user's icon.", - "type": "string" - }, - "mfa_enabled": { - "description": "If user has MFA enabled.", - "readOnly": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time that the user was last modified.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the user.", - "nullable": true, - "type": "string" - }, - "service_account": { - "description": "Whether the user is a service account.", - "type": "boolean" - }, - "status": { - "description": "Status of the user.", - "type": "string" - }, - "title": { - "description": "Title of the user.", - "nullable": true, - "type": "string" - }, - "verified": { - "description": "Whether the user is verified.", - "type": "boolean" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the user.", + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", "type": "string" }, - "relationships": { - "description": "Relationships of the user object returned by the API.", - "properties": { - "org": { - "description": "Relationship to an organization.", - "properties": { - "data": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_orgs": { - "description": "Relationship to organizations.", - "properties": { - "data": { - "description": "Relationships to organization objects.", - "example": [], - "items": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_users": { - "description": "Relationship to users.", - "properties": { - "data": { - "description": "Relationships to user objects.", - "example": [], - "items": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "type": "object", - "x-merge-override": { - "properties": false - } + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" } }, - "type": "object", - "x-merge-override": { - "required": false - } + "type": "object" }, - { - "description": "The definition of LeakedKey object.", - "properties": { - "attributes": { - "description": "The definition of LeakedKeyAttributes object.", + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "API not found error" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "apm_api_catalog_read" + ] + } + ], + "summary": "Get an API", + "tags": [ + "API Management" + ], + "x-menu-order": 3, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_api_catalog_read" + ] + }, + "x-undo": { + "type": "safe" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + }, + "put": { + "description": "Update information about a specific API. The given content will replace all API content of the given ID.\nThe ID is returned by the create API, or can be found in the URL in the API catalog UI.\n", + "operationId": "UpdateOpenAPI", + "parameters": [ + { + "description": "ID of the API to modify", + "in": "path", + "name": "id", + "required": true, + "schema": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", + "type": "string" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "description": "Object for API data in an `OpenAPI` format as a file.", + "properties": { + "openapi_spec_file": { + "description": "Binary `OpenAPI` spec file", + "format": "binary", + "type": "string" + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response for `UpdateOpenAPI`.", + "properties": { + "data": { + "description": "Data envelope for `UpdateOpenAPIResponse`.", + "properties": { + "attributes": { + "description": "Attributes for `UpdateOpenAPI`.", + "properties": { + "failed_endpoints": { + "description": "List of endpoints which couldn't be parsed.", + "items": { + "description": "Endpoint info extracted from an `OpenAPI` specification.", "properties": { - "date": { - "description": "The LeakedKeyAttributes date.", - "example": "2017-07-21T17:32:28Z", - "format": "date-time", + "method": { + "description": "The endpoint method.", "type": "string" }, - "leak_source": { - "description": "The LeakedKeyAttributes leak_source.", + "path": { + "description": "The endpoint path.", "type": "string" } }, - "required": [ - "date" - ], "type": "object" }, - "id": { - "description": "The LeakedKey id.", - "example": "id", - "type": "string" - }, - "type": { - "default": "leaked_keys", - "description": "The definition of LeakedKeyType object.", - "enum": [ - "leaked_keys" - ], - "example": "leaked_keys", - "type": "string", - "x-enum-varnames": [ - "LEAKED_KEYS" - ] - } - }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - } - ] - }, - "type": "array", - "x-merge-override": { - "items": false - } - }, - "meta": { - "description": "Additional information related to api keys response.", - "properties": { - "max_allowed": { - "description": "Max allowed number of API keys.", - "format": "int64", - "type": "integer" - }, - "page": { - "description": "Additional information related to the API keys response.", - "properties": { - "total_filtered_count": { - "description": "Total filtered application key count.", - "format": "int64", - "type": "integer" + "type": "array" } }, "type": "object" + }, + "id": { + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", + "type": "string" } }, "type": "object" @@ -200917,7 +215065,7 @@ } } }, - "description": "OK" + "description": "API updated successfully" }, "400": { "content": { @@ -200927,13 +215075,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -200945,7 +215132,7 @@ } } }, - "description": "Bad Request" + "description": "Bad request" }, "403": { "content": { @@ -200955,13 +215142,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -200975,6 +215201,73 @@ }, "description": "Forbidden" }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "API not found error" + }, "429": { "content": { "application/json": { @@ -201004,81 +215297,50 @@ "description": "Too many requests" } }, - "summary": "Get all API keys", + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "apm_api_catalog_write" + ] + } + ], + "summary": "Update an API", "tags": [ - "Key Management" + "API Management" ], - "x-menu-order": 5, + "x-menu-order": 2, "x-permission": { "operator": "OR", "permissions": [ - "api_keys_read" + "apm_api_catalog_write" ] }, "x-undo": { - "type": "safe" - } - }, + "type": "idempotent" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + } + }, + "/api/v2/apicatalog/openapi": { "post": { - "description": "Create an API key.", - "operationId": "CreateAPIKey", + "description": "Create a new API from the [OpenAPI](https://spec.openapis.org/oas/latest.html) specification given.\nSee the [API Catalog documentation](https://docs.datadoghq.com/api_catalog/add_metadata/) for additional\ninformation about the possible metadata.\nIt returns the created API ID.\n", + "operationId": "CreateOpenAPI", "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { - "description": "Request used to create an API key.", + "description": "Object for API data in an `OpenAPI` format as a file.", "properties": { - "data": { - "description": "Object used to create an API key.", - "properties": { - "attributes": { - "description": "Attributes used to create an API Key.", - "properties": { - "category": { - "description": "The APIKeyCreateAttributes category.", - "type": "string" - }, - "name": { - "description": "Name of the API key.", - "example": "API Key for submitting metrics", - "type": "string" - }, - "remote_config_read_enabled": { - "description": "The APIKeyCreateAttributes remote_config_read_enabled.", - "type": "boolean" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": { - "default": "api_keys", - "description": "API Keys resource type.", - "enum": [ - "api_keys" - ], - "example": "api_keys", - "type": "string", - "x-enum-varnames": [ - "API_KEYS" - ] - } - }, - "required": [ - "attributes", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } + "openapi_spec_file": { + "description": "Binary `OpenAPI` spec file", + "format": "binary", + "type": "string" } }, - "required": [ - "data" - ], "type": "object" } } @@ -201090,485 +215352,669 @@ "content": { "application/json": { "schema": { - "description": "Response for retrieving an API key.", + "description": "Response for `CreateOpenAPI` operation.", "properties": { "data": { - "description": "Datadog API key.", + "description": "Data envelope for `CreateOpenAPIResponse`.", "properties": { "attributes": { - "description": "Attributes of a full API key.", + "description": "Attributes for `CreateOpenAPI`.", "properties": { - "category": { - "description": "The category of the API key.", - "type": "string" - }, - "created_at": { - "description": "Creation date of the API key.", - "example": "2020-11-23T10:00:00.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "key": { - "description": "The API key.", - "readOnly": true, - "type": "string", - "x-secret": true - }, - "last4": { - "description": "The last four characters of the API key.", - "example": "abcd", - "maxLength": 4, - "minLength": 4, - "readOnly": true, - "type": "string", - "x-secret": true - }, - "modified_at": { - "description": "Date the API key was last modified.", - "example": "2020-11-23T10:00:00.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "name": { - "description": "Name of the API key.", - "example": "API Key for submitting metrics", - "type": "string" - }, - "remote_config_read_enabled": { - "description": "The remote config read enabled status.", - "type": "boolean" + "failed_endpoints": { + "description": "List of endpoints which couldn't be parsed.", + "items": { + "description": "Endpoint info extracted from an `OpenAPI` specification.", + "properties": { + "method": { + "description": "The endpoint method.", + "type": "string" + }, + "path": { + "description": "The endpoint path.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" } }, "type": "object" }, "id": { - "description": "ID of the API key.", + "description": "API identifier.", + "example": "90646597-5fdb-4a17-a240-647003f8c028", + "format": "uuid", "type": "string" - }, - "relationships": { - "description": "Resources related to the API key.", - "properties": { - "created_by": { - "description": "Relationship to user.", - "properties": { - "data": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - } + } + }, + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "API created successfully" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" }, - "required": [ - "data" - ], - "type": "object" + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } }, - "modified_by": { - "description": "Relationship to user.", - "nullable": true, - "properties": { - "data": { - "description": "Relationship to user object.", - "nullable": true, - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-0000-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - } + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" }, - "required": [ - "data" - ], - "type": "object" - } + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" }, - "type": "object" + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } }, - "type": { - "default": "api_keys", - "description": "API Keys resource type.", - "enum": [ - "api_keys" - ], - "example": "api_keys", - "type": "string", - "x-enum-varnames": [ - "API_KEYS" - ] - } + "type": "object" }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "included": { - "description": "Array of objects related to the API key.", + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "An object related to an API key.", - "oneOf": [ - { - "description": "User object returned by the API.", + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "apm_api_catalog_write" + ] + } + ], + "summary": "Create a new API", + "tags": [ + "API Management" + ], + "x-given": { + "managed_api": { + "parameters": [ + { + "name": "openapi_spec_file", + "value": "\"openapi-spec.yaml\"" + } + ], + "step": "there is a valid \"managed_api\" in the system" + } + }, + "x-menu-order": 1, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_api_catalog_write" + ] + }, + "x-undo": { + "operationId": "DeleteOpenAPI", + "parameters": [ + { + "name": "id", + "source": "data.id" + } + ], + "type": "unsafe" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + } + }, + "/api/v2/apm/config/metrics": { + "get": { + "description": "Get the list of configured span-based metrics with their definitions.", + "operationId": "ListSpansMetrics", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "All the available span-based metric objects.", + "properties": { + "data": { + "description": "A list of span-based metric objects.", + "items": { + "description": "The span-based metric properties.", + "properties": { + "attributes": { + "description": "The object describing a Datadog span-based metric.", "properties": { - "attributes": { - "description": "Attributes of user object returned by the API.", + "compute": { + "description": "The compute rule to compute the span-based metric.", "properties": { - "created_at": { - "description": "Creation time of the user.", - "format": "date-time", - "type": "string" - }, - "disabled": { - "description": "Whether the user is disabled.", - "type": "boolean" - }, - "email": { - "description": "Email of the user.", - "type": "string" - }, - "handle": { - "description": "Handle of the user.", - "type": "string" - }, - "icon": { - "description": "URL of the user's icon.", - "type": "string" - }, - "mfa_enabled": { - "description": "If user has MFA enabled.", - "readOnly": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time that the user was last modified.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the user.", - "nullable": true, - "type": "string" + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] }, - "service_account": { - "description": "Whether the user is a service account.", + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", + "example": false, "type": "boolean" }, - "status": { - "description": "Status of the user.", - "type": "string" - }, - "title": { - "description": "Title of the user.", - "nullable": true, + "path": { + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", + "example": "@duration", "type": "string" - }, - "verified": { - "description": "Whether the user is verified.", - "type": "boolean" } }, "type": "object" }, - "id": { - "description": "ID of the user.", - "type": "string" - }, - "relationships": { - "description": "Relationships of the user object returned by the API.", + "filter": { + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", "properties": { - "org": { - "description": "Relationship to an organization.", - "properties": { - "data": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_orgs": { - "description": "Relationship to organizations.", - "properties": { - "data": { - "description": "Relationships to organization objects.", - "example": [], - "items": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_users": { - "description": "Relationship to users.", - "properties": { - "data": { - "description": "Relationships to user objects.", - "example": [], - "items": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "type": "object", - "x-merge-override": { - "required": false - } + "query": { + "description": "The search query - following the span search syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string" } }, - "type": "object", - "x-merge-override": { - "properties": false - } + "type": "object" }, - "type": { - "default": "users", - "description": "Users resource type.", + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the span-based metric will be aggregated over.", + "example": "resource_name", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "example": "resource_name", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The name of the span-based metric.", + "example": "my.metric", + "type": "string" + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. The value should always be spans_metrics.", + "enum": [ + "spans_metrics" + ], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": [ + "SPANS_METRICS" + ] + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get all span-based metrics", + "tags": [ + "Spans Metrics" + ], + "x-menu-order": 1, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "post": { + "description": "Create a metric based on your ingested spans in your organization.\nReturns the span-based metric object from the request body when the request is successful.", + "operationId": "CreateSpansMetric", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "The new span-based metric body.", + "properties": { + "data": { + "description": "The new span-based metric properties.", + "properties": { + "attributes": { + "description": "The object describing the Datadog span-based metric to create.", + "properties": { + "compute": { + "description": "The compute rule to compute the span-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", "enum": [ - "users" + "count", + "distribution" ], - "example": "users", + "example": "distribution", "type": "string", "x-enum-varnames": [ - "USERS" + "COUNT", + "DISTRIBUTION" ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", + "example": false, + "type": "boolean" + }, + "path": { + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", + "example": "@duration", + "type": "string" } }, - "type": "object", - "x-merge-override": { - "required": false - } + "required": [ + "aggregation_type" + ], + "type": "object" }, - { - "description": "The definition of LeakedKey object.", + "filter": { + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", "properties": { - "attributes": { - "description": "The definition of LeakedKeyAttributes object.", + "query": { + "default": "*", + "description": "The search query - following the span search syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the span-based metric will be aggregated over.", + "example": "resource_name", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "example": "resource_name", + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "compute" + ], + "type": "object" + }, + "id": { + "description": "The name of the span-based metric.", + "example": "my.metric", + "type": "string" + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. The value should always be spans_metrics.", + "enum": [ + "spans_metrics" + ], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": [ + "SPANS_METRICS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The definition of the new span-based metric.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The span-based metric object.", + "properties": { + "data": { + "description": "The span-based metric properties.", + "properties": { + "attributes": { + "description": "The object describing a Datadog span-based metric.", + "properties": { + "compute": { + "description": "The compute rule to compute the span-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", + "example": false, + "type": "boolean" + }, + "path": { + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", + "example": "@duration", + "type": "string" + } + }, + "type": "object" + }, + "filter": { + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "description": "The search query - following the span search syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", "properties": { - "date": { - "description": "The LeakedKeyAttributes date.", - "example": "2017-07-21T17:32:28Z", - "format": "date-time", + "path": { + "description": "The path to the value the span-based metric will be aggregated over.", + "example": "resource_name", "type": "string" }, - "leak_source": { - "description": "The LeakedKeyAttributes leak_source.", + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "example": "resource_name", "type": "string" } }, - "required": [ - "date" - ], "type": "object" }, - "id": { - "description": "The LeakedKey id.", - "example": "id", - "type": "string" - }, - "type": { - "default": "leaked_keys", - "description": "The definition of LeakedKeyType object.", - "enum": [ - "leaked_keys" - ], - "example": "leaked_keys", - "type": "string", - "x-enum-varnames": [ - "LEAKED_KEYS" - ] - } - }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - } - ] + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The name of the span-based metric.", + "example": "my.metric", + "type": "string" + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. The value should always be spans_metrics.", + "enum": [ + "spans_metrics" + ], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": [ + "SPANS_METRICS" + ] + } }, - "type": "array", - "x-merge-override": { - "items": false - } + "type": "object" } }, "type": "object" } } }, - "description": "Created" + "description": "OK" }, "400": { "content": { @@ -201624,7 +216070,35 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" + }, + "409": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Conflict" }, "429": { "content": { @@ -201655,53 +216129,50 @@ "description": "Too many requests" } }, - "summary": "Create an API key", + "summary": "Create a span-based metric", "tags": [ - "Key Management" + "Spans Metrics" ], "x-codegen-request-body-name": "body", "x-given": { - "api_key": { + "spans_metric": { "parameters": [ { "name": "body", - "value": "{\n \"data\": {\n \"attributes\": {\n \"name\": \"{{ unique }}\"\n },\n \"type\": \"api_keys\"\n }\n}" + "value": "{\n \"data\": {\n \"id\": \"{{ unique }}\",\n \"attributes\": {\n \"filter\": {\n \"query\": \"source:{{ unique }}\"\n },\n \"compute\": {\n \"aggregation_type\": \"distribution\",\n \"path\": \"@duration\",\n \"include_percentiles\": false\n },\n \"group_by\": [\n {\n \"path\": \"resource_name\",\n \"tag_name\": \"resource_name\"\n }\n ]\n },\n \"type\": \"spans_metrics\"\n }\n}" } ], - "step": "there is a valid \"api_key\" in the system" + "step": "there is a valid \"spans_metric\" in the system" } }, - "x-menu-order": 4, + "x-menu-order": 2, "x-permission": { "operator": "OR", "permissions": [ - "api_keys_write" + "apm_generate_metrics" ] }, "x-undo": { - "operationId": "DeleteAPIKey", + "operationId": "DeleteSpansMetric", "parameters": [ { - "name": "api_key_id", + "name": "metric_id", "source": "data.id" } ], "type": "unsafe" } - }, - "x-merge-override": { - "post": true } }, - "/api/v2/api_keys/{api_key_id}": { + "/api/v2/apm/config/metrics/{metric_id}": { "delete": { - "description": "Delete an API key.", - "operationId": "DeleteAPIKey", + "description": "Delete a specific span-based metric from your organization.", + "operationId": "DeleteSpansMetric", "parameters": [ { - "description": "The ID of the API key.", + "description": "The name of the span-based metric.", "in": "path", - "name": "api_key_id", + "name": "metric_id", "required": true, "schema": { "type": "string" @@ -201710,7 +216181,7 @@ ], "responses": { "204": { - "description": "No Content" + "description": "OK" }, "403": { "content": { @@ -201738,7 +216209,7 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" }, "404": { "content": { @@ -201797,15 +216268,15 @@ "description": "Too many requests" } }, - "summary": "Delete an API key", + "summary": "Delete a span-based metric", "tags": [ - "Key Management" + "Spans Metrics" ], - "x-menu-order": 1, + "x-menu-order": 5, "x-permission": { "operator": "OR", "permissions": [ - "api_keys_delete" + "apm_generate_metrics" ] }, "x-undo": { @@ -201813,27 +216284,17 @@ } }, "get": { - "description": "Get an API key.", - "operationId": "GetAPIKey", + "description": "Get a specific span-based metric from your organization.", + "operationId": "GetSpansMetric", "parameters": [ { - "description": "The ID of the API key.", + "description": "The name of the span-based metric.", "in": "path", - "name": "api_key_id", + "name": "metric_id", "required": true, "schema": { "type": "string" } - }, - { - "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`.", - "in": "query", - "name": "include", - "required": false, - "schema": { - "example": "created_by,modified_by", - "type": "string" - } } ], "responses": { @@ -201841,478 +216302,404 @@ "content": { "application/json": { "schema": { - "description": "Response for retrieving an API key.", + "description": "The span-based metric object.", "properties": { "data": { - "description": "Datadog API key.", + "description": "The span-based metric properties.", "properties": { "attributes": { - "description": "Attributes of a full API key.", - "properties": { - "category": { - "description": "The category of the API key.", - "type": "string" - }, - "created_at": { - "description": "Creation date of the API key.", - "example": "2020-11-23T10:00:00.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "key": { - "description": "The API key.", - "readOnly": true, - "type": "string", - "x-secret": true - }, - "last4": { - "description": "The last four characters of the API key.", - "example": "abcd", - "maxLength": 4, - "minLength": 4, - "readOnly": true, - "type": "string", - "x-secret": true - }, - "modified_at": { - "description": "Date the API key was last modified.", - "example": "2020-11-23T10:00:00.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "name": { - "description": "Name of the API key.", - "example": "API Key for submitting metrics", - "type": "string" - }, - "remote_config_read_enabled": { - "description": "The remote config read enabled status.", - "type": "boolean" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the API key.", - "type": "string" - }, - "relationships": { - "description": "Resources related to the API key.", + "description": "The object describing a Datadog span-based metric.", "properties": { - "created_by": { - "description": "Relationship to user.", + "compute": { + "description": "The compute rule to compute the span-based metric.", "properties": { - "data": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" ], - "type": "object", - "x-merge-override": { - "required": false - } + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", + "example": false, + "type": "boolean" + }, + "path": { + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", + "example": "@duration", + "type": "string" } }, - "required": [ - "data" - ], "type": "object" }, - "modified_by": { - "description": "Relationship to user.", - "nullable": true, + "filter": { + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", "properties": { - "data": { - "description": "Relationship to user object.", - "nullable": true, - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-0000-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } + "query": { + "description": "The search query - following the span search syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string" } }, - "required": [ - "data" - ], "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the span-based metric will be aggregated over.", + "example": "resource_name", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "example": "resource_name", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" } }, "type": "object" }, + "id": { + "description": "The name of the span-based metric.", + "example": "my.metric", + "type": "string" + }, "type": { - "default": "api_keys", - "description": "API Keys resource type.", + "default": "spans_metrics", + "description": "The type of resource. The value should always be spans_metrics.", "enum": [ - "api_keys" + "spans_metrics" ], - "example": "api_keys", + "example": "spans_metrics", "type": "string", "x-enum-varnames": [ - "API_KEYS" + "SPANS_METRICS" ] } }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "included": { - "description": "Array of objects related to the API key.", + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "An object related to an API key.", - "oneOf": [ - { - "description": "User object returned by the API.", - "properties": { - "attributes": { - "description": "Attributes of user object returned by the API.", - "properties": { - "created_at": { - "description": "Creation time of the user.", - "format": "date-time", - "type": "string" - }, - "disabled": { - "description": "Whether the user is disabled.", - "type": "boolean" - }, - "email": { - "description": "Email of the user.", - "type": "string" - }, - "handle": { - "description": "Handle of the user.", - "type": "string" - }, - "icon": { - "description": "URL of the user's icon.", - "type": "string" - }, - "mfa_enabled": { - "description": "If user has MFA enabled.", - "readOnly": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time that the user was last modified.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the user.", - "nullable": true, - "type": "string" - }, - "service_account": { - "description": "Whether the user is a service account.", - "type": "boolean" - }, - "status": { - "description": "Status of the user.", - "type": "string" - }, - "title": { - "description": "Title of the user.", - "nullable": true, - "type": "string" - }, - "verified": { - "description": "Whether the user is verified.", - "type": "boolean" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the user.", - "type": "string" - }, - "relationships": { - "description": "Relationships of the user object returned by the API.", - "properties": { - "org": { - "description": "Relationship to an organization.", - "properties": { - "data": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_orgs": { - "description": "Relationship to organizations.", - "properties": { - "data": { - "description": "Relationships to organization objects.", - "example": [], - "items": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_users": { - "description": "Relationship to users.", - "properties": { - "data": { - "description": "Relationships to user objects.", - "example": [], - "items": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "type": "object", - "x-merge-override": { - "properties": false - } - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get a span-based metric", + "tags": [ + "Spans Metrics" + ], + "x-menu-order": 3, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "patch": { + "description": "Update a specific span-based metric from your organization.\nReturns the span-based metric object from the request body when the request is successful.", + "operationId": "UpdateSpansMetric", + "parameters": [ + { + "description": "The name of the span-based metric.", + "in": "path", + "name": "metric_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "The new span-based metric body.", + "properties": { + "data": { + "description": "The new span-based metric properties.", + "properties": { + "attributes": { + "description": "The span-based metric properties that will be updated.", + "properties": { + "compute": { + "description": "The compute rule to compute the span-based metric.", + "properties": { + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", + "example": false, + "type": "boolean" } }, - "type": "object", - "x-merge-override": { - "required": false - } + "type": "object" }, - { - "description": "The definition of LeakedKey object.", + "filter": { + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", "properties": { - "attributes": { - "description": "The definition of LeakedKeyAttributes object.", + "query": { + "default": "*", + "description": "The search query - following the span search syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the span-based metric will be aggregated over.", + "example": "resource_name", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "example": "resource_name", + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. The value should always be spans_metrics.", + "enum": [ + "spans_metrics" + ], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": [ + "SPANS_METRICS" + ] + } + }, + "required": [ + "type", + "attributes" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "New definition of the span-based metric.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The span-based metric object.", + "properties": { + "data": { + "description": "The span-based metric properties.", + "properties": { + "attributes": { + "description": "The object describing a Datadog span-based metric.", + "properties": { + "compute": { + "description": "The compute rule to compute the span-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", + "example": false, + "type": "boolean" + }, + "path": { + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", + "example": "@duration", + "type": "string" + } + }, + "type": "object" + }, + "filter": { + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "description": "The search query - following the span search syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", "properties": { - "date": { - "description": "The LeakedKeyAttributes date.", - "example": "2017-07-21T17:32:28Z", - "format": "date-time", + "path": { + "description": "The path to the value the span-based metric will be aggregated over.", + "example": "resource_name", "type": "string" }, - "leak_source": { - "description": "The LeakedKeyAttributes leak_source.", + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", + "example": "resource_name", "type": "string" } }, - "required": [ - "date" - ], "type": "object" }, - "id": { - "description": "The LeakedKey id.", - "example": "id", - "type": "string" - }, - "type": { - "default": "leaked_keys", - "description": "The definition of LeakedKeyType object.", - "enum": [ - "leaked_keys" - ], - "example": "leaked_keys", - "type": "string", - "x-enum-varnames": [ - "LEAKED_KEYS" - ] - } - }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - } - ] + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The name of the span-based metric.", + "example": "my.metric", + "type": "string" + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. The value should always be spans_metrics.", + "enum": [ + "spans_metrics" + ], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": [ + "SPANS_METRICS" + ] + } }, - "type": "array", - "x-merge-override": { - "items": false - } + "type": "object" } }, "type": "object" @@ -202321,6 +216708,34 @@ }, "description": "OK" }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, "403": { "content": { "application/json": { @@ -202347,7 +216762,7 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" }, "404": { "content": { @@ -202406,96 +216821,311 @@ "description": "Too many requests" } }, - "summary": "Get API key", + "summary": "Update a span-based metric", "tags": [ - "Key Management" + "Spans Metrics" ], - "x-menu-order": 3, - "x-merge-override": { - "parameters": false + "x-codegen-request-body-name": "body", + "x-menu-order": 4, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_generate_metrics" + ] + }, + "x-undo": { + "type": "idempotent" + } + } + }, + "/api/v2/apm/config/retention-filters": { + "get": { + "description": "Get the list of APM retention filters.", + "operationId": "ListApmRetentionFilters", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "An ordered list of retention filters.", + "properties": { + "data": { + "description": "A list of retention filters objects.", + "items": { + "description": "The definition of the retention filter.", + "properties": { + "attributes": { + "description": "The attributes of the retention filter.", + "properties": { + "created_at": { + "description": "The creation timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "The creator of the retention filter.", + "type": "string" + }, + "editable": { + "description": "Shows whether the filter can be edited.", + "example": true, + "type": "boolean" + }, + "enabled": { + "description": "The status of the retention filter (Enabled/Disabled).", + "example": true, + "type": "boolean" + }, + "execution_order": { + "description": "The execution order of the retention filter.", + "format": "int64", + "type": "integer" + }, + "filter": { + "description": "The spans filter used to index spans.", + "properties": { + "query": { + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "filter_type": { + "default": "spans-sampling-processor", + "description": "The type of retention filter.", + "enum": [ + "spans-sampling-processor", + "spans-errors-sampling-processor", + "spans-appsec-sampling-processor" + ], + "example": "spans-sampling-processor", + "type": "string", + "x-enum-varnames": [ + "SPANS_SAMPLING_PROCESSOR", + "SPANS_ERRORS_SAMPLING_PROCESSOR", + "SPANS_APPSEC_SAMPLING_PROCESSOR" + ] + }, + "modified_at": { + "description": "The modification timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "The modifier of the retention filter.", + "type": "string" + }, + "name": { + "description": "The name of the retention filter.", + "example": "my retention filter", + "type": "string" + }, + "rate": { + "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", + "example": 1, + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the retention filter.", + "example": "7RBOb7dLSYWI01yc3pIH8w", + "type": "string" + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": [ + "apm_retention_filter" + ], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": [ + "apm_retention_filter" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "OK" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } }, + "summary": "List all APM retention filters", + "tags": [ + "APM Retention Filters" + ], + "x-menu-order": 1, "x-permission": { "operator": "OR", "permissions": [ - "api_keys_read" + "apm_retention_filter_read", + "apm_pipelines_read" ] }, "x-undo": { "type": "safe" } }, - "patch": { - "description": "Update an API key.", - "operationId": "UpdateAPIKey", - "parameters": [ - { - "description": "The ID of the API key.", - "in": "path", - "name": "api_key_id", - "required": true, - "schema": { - "type": "string" - } - } - ], + "post": { + "description": "Create a retention filter to index spans in your organization.\nReturns the retention filter definition when the request is successful.\n\nDefault filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be created.", + "operationId": "CreateApmRetentionFilter", "requestBody": { "content": { "application/json": { "schema": { - "description": "Request used to update an API key.", + "description": "The body of the retention filter to be created.", "properties": { "data": { - "description": "Object used to update an API key.", + "description": "The body of the retention filter to be created.", "properties": { "attributes": { - "description": "Attributes used to update an API Key.", + "description": "The object describing the configuration of the retention filter to create/update.", "properties": { - "category": { - "description": "The APIKeyUpdateAttributes category.", - "type": "string" + "enabled": { + "description": "Enable/Disable the retention filter.", + "example": true, + "type": "boolean" + }, + "filter": { + "description": "The spans filter. Spans matching this filter will be indexed and stored.", + "properties": { + "query": { + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + }, + "filter_type": { + "default": "spans-sampling-processor", + "description": "The type of retention filter. The value should always be spans-sampling-processor.", + "enum": [ + "spans-sampling-processor" + ], + "example": "spans-sampling-processor", + "type": "string", + "x-enum-varnames": [ + "SPANS_SAMPLING_PROCESSOR" + ] }, "name": { - "description": "Name of the API key.", - "example": "API Key for submitting metrics", + "description": "The name of the retention filter.", + "example": "my retention filter", "type": "string" }, - "remote_config_read_enabled": { - "description": "The APIKeyUpdateAttributes remote_config_read_enabled.", - "type": "boolean" + "rate": { + "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", + "example": 1, + "format": "double", + "type": "number" } }, "required": [ - "name" + "name", + "filter", + "enabled", + "filter_type", + "rate" ], "type": "object" }, - "id": { - "description": "ID of the API key.", - "example": "00112233-4455-6677-8899-aabbccddeeff", - "type": "string" - }, "type": { - "default": "api_keys", - "description": "API Keys resource type.", + "default": "apm_retention_filter", + "description": "The type of the resource.", "enum": [ - "api_keys" + "apm_retention_filter" ], - "example": "api_keys", + "example": "apm_retention_filter", "type": "string", "x-enum-varnames": [ - "API_KEYS" + "apm_retention_filter" ] } }, "required": [ "attributes", - "id", "type" ], - "type": "object", - "x-merge-override": { - "required": false - } + "type": "object" } }, "required": [ @@ -202505,6 +217135,7 @@ } } }, + "description": "The definition of the new retention filter.", "required": true }, "responses": { @@ -202512,478 +217143,108 @@ "content": { "application/json": { "schema": { - "description": "Response for retrieving an API key.", + "description": "The retention filters definition.", "properties": { "data": { - "description": "Datadog API key.", + "description": "The definition of the retention filter.", "properties": { "attributes": { - "description": "Attributes of a full API key.", + "description": "The attributes of the retention filter.", "properties": { - "category": { - "description": "The category of the API key.", - "type": "string" - }, "created_at": { - "description": "Creation date of the API key.", - "example": "2020-11-23T10:00:00.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "key": { - "description": "The API key.", - "readOnly": true, - "type": "string", - "x-secret": true - }, - "last4": { - "description": "The last four characters of the API key.", - "example": "abcd", - "maxLength": 4, - "minLength": 4, - "readOnly": true, - "type": "string", - "x-secret": true + "description": "The creation timestamp of the retention filter.", + "format": "int64", + "type": "integer" }, - "modified_at": { - "description": "Date the API key was last modified.", - "example": "2020-11-23T10:00:00.000Z", - "format": "date-time", - "readOnly": true, + "created_by": { + "description": "The creator of the retention filter.", "type": "string" }, - "name": { - "description": "Name of the API key.", - "example": "API Key for submitting metrics", - "type": "string" + "editable": { + "description": "Shows whether the filter can be edited.", + "example": true, + "type": "boolean" }, - "remote_config_read_enabled": { - "description": "The remote config read enabled status.", + "enabled": { + "description": "The status of the retention filter (Enabled/Disabled).", + "example": true, "type": "boolean" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the API key.", - "type": "string" - }, - "relationships": { - "description": "Resources related to the API key.", - "properties": { - "created_by": { - "description": "Relationship to user.", + }, + "execution_order": { + "description": "The execution order of the retention filter.", + "format": "int64", + "type": "integer" + }, + "filter": { + "description": "The spans filter used to index spans.", "properties": { - "data": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } + "query": { + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "example": "@http.status_code:200 service:my-service", + "type": "string" } }, - "required": [ - "data" - ], "type": "object" }, - "modified_by": { - "description": "Relationship to user.", - "nullable": true, - "properties": { - "data": { - "description": "Relationship to user object.", - "nullable": true, - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-0000-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "required": [ - "data" + "filter_type": { + "default": "spans-sampling-processor", + "description": "The type of retention filter. The value should always be spans-sampling-processor.", + "enum": [ + "spans-sampling-processor" ], - "type": "object" - } - }, - "type": "object" - }, - "type": { - "default": "api_keys", - "description": "API Keys resource type.", - "enum": [ - "api_keys" - ], - "example": "api_keys", - "type": "string", - "x-enum-varnames": [ - "API_KEYS" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "included": { - "description": "Array of objects related to the API key.", - "items": { - "description": "An object related to an API key.", - "oneOf": [ - { - "description": "User object returned by the API.", - "properties": { - "attributes": { - "description": "Attributes of user object returned by the API.", - "properties": { - "created_at": { - "description": "Creation time of the user.", - "format": "date-time", - "type": "string" - }, - "disabled": { - "description": "Whether the user is disabled.", - "type": "boolean" - }, - "email": { - "description": "Email of the user.", - "type": "string" - }, - "handle": { - "description": "Handle of the user.", - "type": "string" - }, - "icon": { - "description": "URL of the user's icon.", - "type": "string" - }, - "mfa_enabled": { - "description": "If user has MFA enabled.", - "readOnly": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time that the user was last modified.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the user.", - "nullable": true, - "type": "string" - }, - "service_account": { - "description": "Whether the user is a service account.", - "type": "boolean" - }, - "status": { - "description": "Status of the user.", - "type": "string" - }, - "title": { - "description": "Title of the user.", - "nullable": true, - "type": "string" - }, - "verified": { - "description": "Whether the user is verified.", - "type": "boolean" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the user.", - "type": "string" - }, - "relationships": { - "description": "Relationships of the user object returned by the API.", - "properties": { - "org": { - "description": "Relationship to an organization.", - "properties": { - "data": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_orgs": { - "description": "Relationship to organizations.", - "properties": { - "data": { - "description": "Relationships to organization objects.", - "example": [], - "items": { - "description": "Relationship to organization object.", - "properties": { - "id": { - "description": "ID of the organization.", - "example": "00000000-0000-beef-0000-000000000000", - "type": "string" - }, - "type": { - "default": "orgs", - "description": "Organizations resource type.", - "enum": [ - "orgs" - ], - "example": "orgs", - "type": "string", - "x-enum-varnames": [ - "ORGS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "other_users": { - "description": "Relationship to users.", - "properties": { - "data": { - "description": "Relationships to user objects.", - "example": [], - "items": { - "description": "Relationship to user object.", - "properties": { - "id": { - "description": "A unique identifier that represents the user.", - "example": "00000000-0000-0000-2345-000000000000", - "type": "string" - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } - }, - "required": [ - "id", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - }, - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "type": "object", - "x-merge-override": { - "properties": false - } - }, - "type": { - "default": "users", - "description": "Users resource type.", - "enum": [ - "users" - ], - "example": "users", - "type": "string", - "x-enum-varnames": [ - "USERS" - ] - } + "example": "spans-sampling-processor", + "type": "string", + "x-enum-varnames": [ + "SPANS_SAMPLING_PROCESSOR" + ] + }, + "modified_at": { + "description": "The modification timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "The modifier of the retention filter.", + "type": "string" }, - "type": "object", - "x-merge-override": { - "required": false + "name": { + "description": "The name of the retention filter.", + "example": "my retention filter", + "type": "string" + }, + "rate": { + "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", + "example": 1, + "format": "double", + "type": "number" } }, - { - "description": "The definition of LeakedKey object.", - "properties": { - "attributes": { - "description": "The definition of LeakedKeyAttributes object.", - "properties": { - "date": { - "description": "The LeakedKeyAttributes date.", - "example": "2017-07-21T17:32:28Z", - "format": "date-time", - "type": "string" - }, - "leak_source": { - "description": "The LeakedKeyAttributes leak_source.", - "type": "string" - } - }, - "required": [ - "date" - ], - "type": "object" - }, - "id": { - "description": "The LeakedKey id.", - "example": "id", - "type": "string" - }, - "type": { - "default": "leaked_keys", - "description": "The definition of LeakedKeyType object.", - "enum": [ - "leaked_keys" - ], - "example": "leaked_keys", - "type": "string", - "x-enum-varnames": [ - "LEAKED_KEYS" - ] - } - }, - "required": [ - "attributes", - "id", - "type" - ], - "type": "object" - } - ] + "type": "object" + }, + "id": { + "description": "The ID of the retention filter.", + "example": "7RBOb7dLSYWI01yc3pIH8w", + "type": "string" + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": [ + "apm_retention_filter" + ], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": [ + "apm_retention_filter" + ] + } }, - "type": "array", - "x-merge-override": { - "items": false - } + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" } }, "type": "object" @@ -203046,9 +217307,9 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" }, - "404": { + "409": { "content": { "application/json": { "schema": { @@ -203074,7 +217335,7 @@ } } }, - "description": "Not Found" + "description": "Conflict" }, "429": { "content": { @@ -203105,140 +217366,155 @@ "description": "Too many requests" } }, - "summary": "Edit an API key", + "summary": "Create a retention filter", "tags": [ - "Key Management" + "APM Retention Filters" ], "x-codegen-request-body-name": "body", + "x-given": { + "retention_filter": { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"attributes\": {\n \"name\": \"demo retention filter\",\n \"rate\": 0.90,\n \"filter\": {\n \"query\": \"@_top_level:1 test:service-demo\"\n },\n \"enabled\": true,\n \"filter_type\": \"spans-sampling-processor\"\n },\n \"type\": \"apm_retention_filter\"\n }\n}" + } + ], + "step": "there is a valid \"retention_filter\" in the system" + } + }, "x-menu-order": 2, "x-permission": { "operator": "OR", "permissions": [ - "api_keys_write" + "apm_retention_filter_write", + "apm_pipelines_write" ] }, "x-undo": { - "type": "idempotent" + "operationId": "DeleteApmRetentionFilter", + "parameters": [ + { + "name": "filter_id", + "source": "data.id" + } + ], + "type": "unsafe" } - }, - "x-merge-override": { - "delete": true, - "get": true, - "patch": true } }, - "/api/v2/apicatalog/api": { - "get": { - "description": "List APIs and their IDs.", - "operationId": "ListAPIs", - "parameters": [ - { - "description": "Filter APIs by name", - "in": "query", - "name": "query", - "required": false, - "schema": { - "example": "payments", - "type": "string" - } - }, - { - "description": "Number of items per page.", - "in": "query", - "name": "page[limit]", - "required": false, - "schema": { - "default": 20, - "format": "int64", - "minimum": 1, - "type": "integer" + "/api/v2/apm/config/retention-filters-execution-order": { + "put": { + "description": "Re-order the execution order of retention filters.", + "operationId": "ReorderApmRetentionFilters", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "A list of retention filters to reorder.", + "properties": { + "data": { + "description": "A list of retention filters objects.", + "items": { + "description": "The retention filter object .", + "properties": { + "id": { + "description": "The ID of the retention filter.", + "example": "7RBOb7dLSYWI01yc3pIH8w", + "type": "string" + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": [ + "apm_retention_filter" + ], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": [ + "apm_retention_filter" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "data" + ], + "type": "object" + } } }, - { - "description": "Offset for pagination.", - "in": "query", - "name": "page[offset]", - "required": false, - "schema": { - "default": 0, - "format": "int64", - "minimum": 0, - "type": "integer" - } - } - ], + "description": "The list of retention filters in the new order.", + "required": true + }, "responses": { "200": { + "description": "OK" + }, + "400": { "content": { "application/json": { "schema": { - "description": "Response for `ListAPIs`.", + "description": "API error response.", "properties": { - "data": { - "description": "List of API items.", + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "Data envelope for `ListAPIsResponse`.", - "properties": { - "attributes": { - "description": "Attributes for `ListAPIsResponseData`.", - "properties": { - "name": { - "description": "API name.", - "example": "Payments API", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" - }, - "meta": { - "description": "Metadata for `ListAPIsResponse`.", - "properties": { - "pagination": { - "description": "Pagination metadata information for `ListAPIsResponse`.", - "properties": { - "limit": { - "description": "Number of items in the current page.", - "example": 20, - "format": "int64", - "type": "integer" - }, - "offset": { - "description": "Offset for pagination.", - "example": 0, - "format": "int64", - "type": "integer" - }, - "total_count": { - "description": "Total number of items.", - "example": 35, - "format": "int64", - "type": "integer" - } - }, - "type": "object" - } + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, - "type": "object" + "type": "array" } }, + "required": [ + "errors" + ], "type": "object" } } }, - "description": "OK" + "description": "Not Authorized" }, - "400": { + "429": { "content": { "application/json": { "schema": { @@ -203246,52 +217522,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -203303,7 +217540,45 @@ } } }, - "description": "Bad request" + "description": "Too many requests" + } + }, + "summary": "Re-order retention filters", + "tags": [ + "APM Retention Filters" + ], + "x-codegen-request-body-name": "body", + "x-menu-order": 6, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_retention_filter_write", + "apm_pipelines_write" + ] + }, + "x-undo": { + "type": "idempotent" + } + } + }, + "/api/v2/apm/config/retention-filters/{filter_id}": { + "delete": { + "description": "Delete a specific retention filter from your organization.\n\nDefault filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be deleted.", + "operationId": "DeleteApmRetentionFilter", + "parameters": [ + { + "description": "The ID of the retention filter.", + "in": "path", + "name": "filter_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" }, "403": { "content": { @@ -203313,52 +217588,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -203370,7 +217606,35 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" }, "429": { "content": { @@ -203401,57 +217665,156 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_api_catalog_read" - ] - } - ], - "summary": "List APIs", + "summary": "Delete a retention filter", "tags": [ - "API Management" + "APM Retention Filters" ], - "x-menu-order": 4, + "x-menu-order": 5, "x-permission": { "operator": "OR", "permissions": [ - "apm_api_catalog_read" + "apm_retention_filter_write", + "apm_pipelines_write" ] }, "x-undo": { - "type": "safe" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - } - }, - "/api/v2/apicatalog/api/{id}": { - "delete": { - "description": "Delete a specific API by ID.", - "operationId": "DeleteOpenAPI", + "type": "idempotent" + } + }, + "get": { + "description": "Get an APM retention filter.", + "operationId": "GetApmRetentionFilter", "parameters": [ { - "description": "ID of the API to delete", + "description": "The ID of the retention filter.", "in": "path", - "name": "id", + "name": "filter_id", "required": true, "schema": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", "type": "string" } } ], "responses": { - "204": { - "description": "API deleted successfully" + "200": { + "content": { + "application/json": { + "schema": { + "description": "The retention filters definition.", + "properties": { + "data": { + "description": "The definition of the retention filter.", + "properties": { + "attributes": { + "description": "The attributes of the retention filter.", + "properties": { + "created_at": { + "description": "The creation timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "The creator of the retention filter.", + "type": "string" + }, + "editable": { + "description": "Shows whether the filter can be edited.", + "example": true, + "type": "boolean" + }, + "enabled": { + "description": "The status of the retention filter (Enabled/Disabled).", + "example": true, + "type": "boolean" + }, + "execution_order": { + "description": "The execution order of the retention filter.", + "format": "int64", + "type": "integer" + }, + "filter": { + "description": "The spans filter used to index spans.", + "properties": { + "query": { + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "filter_type": { + "default": "spans-sampling-processor", + "description": "The type of retention filter.", + "enum": [ + "spans-sampling-processor", + "spans-errors-sampling-processor", + "spans-appsec-sampling-processor" + ], + "example": "spans-sampling-processor", + "type": "string", + "x-enum-varnames": [ + "SPANS_SAMPLING_PROCESSOR", + "SPANS_ERRORS_SAMPLING_PROCESSOR", + "SPANS_APPSEC_SAMPLING_PROCESSOR" + ] + }, + "modified_at": { + "description": "The modification timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "The modifier of the retention filter.", + "type": "string" + }, + "name": { + "description": "The name of the retention filter.", + "example": "my retention filter", + "type": "string" + }, + "rate": { + "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", + "example": 1, + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the retention filter.", + "example": "7RBOb7dLSYWI01yc3pIH8w", + "type": "string" + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": [ + "apm_retention_filter" + ], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": [ + "apm_retention_filter" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "OK" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -203459,52 +217822,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -203516,9 +217840,9 @@ } } }, - "description": "Bad request" + "description": "Not Authorized" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -203526,52 +217850,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -203583,9 +217868,9 @@ } } }, - "description": "Forbidden" + "description": "Not Found" }, - "404": { + "429": { "content": { "application/json": { "schema": { @@ -203593,66 +217878,281 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get a given APM retention filter", + "tags": [ + "APM Retention Filters" + ], + "x-menu-order": 3, + "x-permission": { + "operator": "OR", + "permissions": [ + "apm_retention_filter_read", + "apm_pipelines_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "put": { + "description": "Update a retention filter from your organization.\n\nDefault filters (filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor) cannot be renamed or removed.", + "operationId": "UpdateApmRetentionFilter", + "parameters": [ + { + "description": "The ID of the retention filter.", + "in": "path", + "name": "filter_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "The body of the retention filter to be updated.", + "properties": { + "data": { + "description": "The body of the retention filter to be updated.", + "properties": { + "attributes": { + "description": "The object describing the configuration of the retention filter to create/update.", "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" + "enabled": { + "description": "Enable/Disable the retention filter.", + "example": true, + "type": "boolean" }, - "source": { - "description": "References to the source of the error.", + "filter": { + "description": "The spans filter. Spans matching this filter will be indexed and stored.", "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", + "query": { + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "example": "@http.status_code:200 service:my-service", "type": "string" } }, + "required": [ + "query" + ], "type": "object" }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" + "filter_type": { + "default": "spans-sampling-processor", + "description": "The type of retention filter.", + "enum": [ + "spans-sampling-processor", + "spans-errors-sampling-processor", + "spans-appsec-sampling-processor" + ], + "example": "spans-sampling-processor", + "type": "string", + "x-enum-varnames": [ + "SPANS_SAMPLING_PROCESSOR", + "SPANS_ERRORS_SAMPLING_PROCESSOR", + "SPANS_APPSEC_SAMPLING_PROCESSOR" + ] }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", + "name": { + "description": "The name of the retention filter.", + "example": "my retention filter", "type": "string" + }, + "rate": { + "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", + "example": 1, + "format": "double", + "type": "number" } }, - "type": "object" + "required": [ + "name", + "filter", + "enabled", + "filter_type", + "rate" + ], + "type": "object" + }, + "id": { + "description": "The ID of the retention filter.", + "example": "retention-filter-id", + "type": "string" + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": [ + "apm_retention_filter" + ], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": [ + "apm_retention_filter" + ] + } + }, + "required": [ + "id", + "attributes", + "type" + ], + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "description": "The updated definition of the retention filter.", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The retention filters definition.", + "properties": { + "data": { + "description": "The definition of the retention filter.", + "properties": { + "attributes": { + "description": "The attributes of the retention filter.", + "properties": { + "created_at": { + "description": "The creation timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "The creator of the retention filter.", + "type": "string" + }, + "editable": { + "description": "Shows whether the filter can be edited.", + "example": true, + "type": "boolean" + }, + "enabled": { + "description": "The status of the retention filter (Enabled/Disabled).", + "example": true, + "type": "boolean" + }, + "execution_order": { + "description": "The execution order of the retention filter.", + "format": "int64", + "type": "integer" + }, + "filter": { + "description": "The spans filter used to index spans.", + "properties": { + "query": { + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "example": "@http.status_code:200 service:my-service", + "type": "string" + } + }, + "type": "object" + }, + "filter_type": { + "default": "spans-sampling-processor", + "description": "The type of retention filter.", + "enum": [ + "spans-sampling-processor", + "spans-errors-sampling-processor", + "spans-appsec-sampling-processor" + ], + "example": "spans-sampling-processor", + "type": "string", + "x-enum-varnames": [ + "SPANS_SAMPLING_PROCESSOR", + "SPANS_ERRORS_SAMPLING_PROCESSOR", + "SPANS_APPSEC_SAMPLING_PROCESSOR" + ] + }, + "modified_at": { + "description": "The modification timestamp of the retention filter.", + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "The modifier of the retention filter.", + "type": "string" + }, + "name": { + "description": "The name of the retention filter.", + "example": "my retention filter", + "type": "string" + }, + "rate": { + "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", + "example": 1, + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the retention filter.", + "example": "7RBOb7dLSYWI01yc3pIH8w", + "type": "string" + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": [ + "apm_retention_filter" + ], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": [ + "apm_retention_filter" + ] + } }, - "type": "array" + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "API not found error" + "description": "OK" }, - "429": { + "400": { "content": { "application/json": { "schema": { @@ -203678,133 +218178,7 @@ } } }, - "description": "Too many requests" - } - }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_api_catalog_write" - ] - } - ], - "summary": "Delete an API", - "tags": [ - "API Management" - ], - "x-menu-order": 5, - "x-permission": { - "operator": "OR", - "permissions": [ - "apm_api_catalog_write" - ] - }, - "x-undo": { - "type": "idempotent" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - } - }, - "/api/v2/apicatalog/api/{id}/openapi": { - "get": { - "description": "Retrieve information about a specific API in [OpenAPI](https://spec.openapis.org/oas/latest.html) format file.", - "operationId": "GetOpenAPI", - "parameters": [ - { - "description": "ID of the API to retrieve", - "in": "path", - "name": "id", - "required": true, - "schema": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "multipart/form-data": { - "schema": { - "format": "binary", - "type": "string" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad request" + "description": "Bad Request" }, "403": { "content": { @@ -203814,52 +218188,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -203871,7 +218206,7 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" }, "404": { "content": { @@ -203881,52 +218216,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -203938,7 +218234,7 @@ } } }, - "description": "API not found error" + "description": "Not Found" }, "429": { "content": { @@ -203969,60 +218265,81 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_api_catalog_read" - ] - } - ], - "summary": "Get an API", + "summary": "Update a retention filter", "tags": [ - "API Management" + "APM Retention Filters" ], - "x-menu-order": 3, + "x-codegen-request-body-name": "body", + "x-menu-order": 4, "x-permission": { "operator": "OR", "permissions": [ - "apm_api_catalog_read" + "apm_retention_filter_write", + "apm_pipelines_write" ] }, "x-undo": { - "type": "safe" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - }, - "put": { - "description": "Update information about a specific API. The given content will replace all API content of the given ID.\nThe ID is returned by the create API, or can be found in the URL in the API catalog UI.\n", - "operationId": "UpdateOpenAPI", - "parameters": [ - { - "description": "ID of the API to modify", - "in": "path", - "name": "id", - "required": true, - "schema": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" - } - } - ], + "type": "idempotent" + } + } + }, + "/api/v2/app-builder/apps": { + "delete": { + "description": "Delete multiple apps in a single request from a list of app IDs.", + "operationId": "DeleteApps", "requestBody": { "content": { - "multipart/form-data": { + "application/json": { "schema": { - "description": "Object for API data in an `OpenAPI` format as a file.", + "description": "A request object for deleting multiple apps by ID.", + "example": { + "data": [ + { + "id": "aea2ed17-b45f-40d0-ba59-c86b7972c901", + "type": "appDefinitions" + }, + { + "id": "f69bb8be-6168-4fe7-a30d-370256b6504a", + "type": "appDefinitions" + }, + { + "id": "ab1ed73e-13ad-4426-b0df-a0ff8876a088", + "type": "appDefinitions" + } + ] + }, "properties": { - "openapi_spec_file": { - "description": "Binary `OpenAPI` spec file", - "format": "binary", - "type": "string" + "data": { + "description": "An array of objects containing the IDs of the apps to delete.", + "items": { + "description": "An object containing the ID of an app to delete.", + "properties": { + "id": { + "description": "The ID of the app to delete.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "type": "array" } }, "type": "object" @@ -204036,50 +218353,46 @@ "content": { "application/json": { "schema": { - "description": "Response for `UpdateOpenAPI`.", + "description": "The response object after multiple apps are successfully deleted.", "properties": { "data": { - "description": "Data envelope for `UpdateOpenAPIResponse`.", - "properties": { - "attributes": { - "description": "Attributes for `UpdateOpenAPI`.", - "properties": { - "failed_endpoints": { - "description": "List of endpoints which couldn't be parsed.", - "items": { - "description": "Endpoint info extracted from an `OpenAPI` specification.", - "properties": { - "method": { - "description": "The endpoint method.", - "type": "string" - }, - "path": { - "description": "The endpoint path.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } + "description": "An array of objects containing the IDs of the deleted apps.", + "items": { + "description": "An object containing the ID of a deleted app.", + "properties": { + "id": { + "description": "The ID of the deleted app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" }, - "type": "object" + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } }, - "id": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" - } + "required": [ + "id", + "type" + ], + "type": "object" }, - "type": "object" + "type": "array" } }, "type": "object" } } }, - "description": "API updated successfully" + "description": "OK" }, "400": { "content": { @@ -204146,7 +218459,7 @@ } } }, - "description": "Bad request" + "description": "Bad Request" }, "403": { "content": { @@ -204280,7 +218593,7 @@ } } }, - "description": "API not found error" + "description": "Not Found" }, "429": { "content": { @@ -204311,95 +218624,427 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_api_catalog_write" - ] - } - ], - "summary": "Update an API", + "summary": "Delete Multiple Apps", "tags": [ - "API Management" + "App Builder" ], - "x-menu-order": 2, + "x-menu-order": 3, "x-permission": { "operator": "OR", "permissions": [ - "apm_api_catalog_write" + "apps_write" ] }, "x-undo": { "type": "idempotent" }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - } - }, - "/api/v2/apicatalog/openapi": { - "post": { - "description": "Create a new API from the [OpenAPI](https://spec.openapis.org/oas/latest.html) specification given.\nSee the [API Catalog documentation](https://docs.datadoghq.com/api_catalog/add_metadata/) for additional\ninformation about the possible metadata.\nIt returns the created API ID.\n", - "operationId": "CreateOpenAPI", - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "description": "Object for API data in an `OpenAPI` format as a file.", - "properties": { - "openapi_spec_file": { - "description": "Binary `OpenAPI` spec file", - "format": "binary", - "type": "string" - } - }, - "type": "object" - } + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." + }, + "get": { + "description": "List all apps, with optional filters and sorting. This endpoint is paginated. Only basic app information such as the app ID, name, and description is returned by this endpoint.", + "operationId": "ListApps", + "parameters": [ + { + "description": "The number of apps to return per page.", + "in": "query", + "name": "limit", + "required": false, + "schema": { + "format": "int64", + "type": "integer" } }, - "required": true - }, + { + "description": "The page number to return.", + "in": "query", + "name": "page", + "required": false, + "schema": { + "format": "int64", + "type": "integer" + } + }, + { + "description": "Filter apps by the app creator. Usually the user's email.", + "in": "query", + "name": "filter[user_name]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter apps by the app creator's UUID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "in": "query", + "name": "filter[user_uuid]", + "required": false, + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "description": "Filter by app name.", + "in": "query", + "name": "filter[name]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter apps by the app name or the app creator.", + "in": "query", + "name": "filter[query]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter apps by whether they are published.", + "in": "query", + "name": "filter[deployed]", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter apps by tags.", + "in": "query", + "name": "filter[tags]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter apps by whether you have added them to your favorites.", + "in": "query", + "name": "filter[favorite]", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter apps by whether they are enabled for self-service.", + "in": "query", + "name": "filter[self_service]", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "The fields and direction to sort apps by.", + "explode": false, + "in": "query", + "name": "sort", + "required": false, + "schema": { + "items": { + "description": "The field and direction to sort apps by", + "enum": [ + "name", + "created_at", + "updated_at", + "user_name", + "-name", + "-created_at", + "-updated_at", + "-user_name" + ], + "example": "-created_at", + "type": "string", + "x-enum-varnames": [ + "NAME", + "CREATED_AT", + "UPDATED_AT", + "USER_NAME", + "NAME_DESC", + "CREATED_AT_DESC", + "UPDATED_AT_DESC", + "USER_NAME_DESC" + ] + }, + "type": "array" + }, + "style": "form" + } + ], "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { - "description": "Response for `CreateOpenAPI` operation.", + "description": "A paginated list of apps matching the specified filters and sorting.", "properties": { "data": { - "description": "Data envelope for `CreateOpenAPIResponse`.", - "properties": { - "attributes": { - "description": "Attributes for `CreateOpenAPI`.", - "properties": { - "failed_endpoints": { - "description": "List of endpoints which couldn't be parsed.", - "items": { - "description": "Endpoint info extracted from an `OpenAPI` specification.", + "description": "An array of app definitions.", + "items": { + "description": "An app definition object. This contains only basic information about the app such as ID, name, and tags.", + "properties": { + "attributes": { + "description": "Basic information about the app such as name, description, and tags.", + "properties": { + "description": { + "description": "A human-readable description for the app.", + "type": "string" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "selfService": { + "description": "Whether the app is enabled for use in the Datadog self-service hub.", + "type": "boolean" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata of an app.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "relationships": { + "description": "The app's publication information.", + "properties": { + "deployment": { + "description": "Information pointing to the app's publication status.", "properties": { - "method": { - "description": "The endpoint method.", - "type": "string" + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" }, - "path": { - "description": "The endpoint path.", - "type": "string" + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" } }, "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type", + "attributes" + ], + "type": "object" + }, + "type": "array" + }, + "included": { + "description": "Data on the version of the app that was published.", + "items": { + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" }, - "type": "array" + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Pagination metadata.", + "properties": { + "page": { + "description": "Information on the total number of apps, to be used for pagination.", + "properties": { + "totalCount": { + "description": "The total number of apps under the Datadog organization, disregarding any filters applied.", + "format": "int64", + "type": "integer" + }, + "totalFilteredCount": { + "description": "The total number of apps that match the specified filters.", + "format": "int64", + "type": "integer" } }, "type": "object" - }, - "id": { - "description": "API identifier.", - "example": "90646597-5fdb-4a17-a240-647003f8c028", - "format": "uuid", - "type": "string" } }, "type": "object" @@ -204409,7 +219054,7 @@ } } }, - "description": "API created successfully" + "description": "OK" }, "400": { "content": { @@ -204476,7 +219121,7 @@ } } }, - "description": "Bad request" + "description": "Bad Request" }, "403": { "content": { @@ -204574,453 +219219,574 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_api_catalog_write" - ] - } - ], - "summary": "Create a new API", - "tags": [ - "API Management" - ], - "x-given": { - "managed_api": { - "parameters": [ - { - "name": "openapi_spec_file", - "value": "\"openapi-spec.yaml\"" - } - ], - "step": "there is a valid \"managed_api\" in the system" - } - }, - "x-menu-order": 1, - "x-permission": { - "operator": "OR", - "permissions": [ - "apm_api_catalog_write" - ] - }, - "x-undo": { - "operationId": "DeleteOpenAPI", - "parameters": [ - { - "name": "id", - "source": "data.id" - } - ], - "type": "unsafe" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - } - }, - "/api/v2/apm/config/metrics": { - "get": { - "description": "Get the list of configured span-based metrics with their definitions.", - "operationId": "ListSpansMetrics", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "All the available span-based metric objects.", - "properties": { - "data": { - "description": "A list of span-based metric objects.", - "items": { - "description": "The span-based metric properties.", - "properties": { - "attributes": { - "description": "The object describing a Datadog span-based metric.", - "properties": { - "compute": { - "description": "The compute rule to compute the span-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", - "example": false, - "type": "boolean" - }, - "path": { - "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", - "example": "@duration", - "type": "string" - } - }, - "type": "object" - }, - "filter": { - "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the span search syntax.", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the span-based metric will be aggregated over.", - "example": "resource_name", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", - "example": "resource_name", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "description": "The name of the span-based metric.", - "example": "my.metric", - "type": "string" - }, - "type": { - "default": "spans_metrics", - "description": "The type of resource. The value should always be spans_metrics.", - "enum": [ - "spans_metrics" - ], - "example": "spans_metrics", - "type": "string", - "x-enum-varnames": [ - "SPANS_METRICS" - ] - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Authorized" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "summary": "Get all span-based metrics", + "summary": "List Apps", "tags": [ - "Spans Metrics" + "App Builder" ], "x-menu-order": 1, "x-permission": { "operator": "OR", "permissions": [ - "apm_read" + "apps_run" ] }, "x-undo": { "type": "safe" - } + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." }, "post": { - "description": "Create a metric based on your ingested spans in your organization.\nReturns the span-based metric object from the request body when the request is successful.", - "operationId": "CreateSpansMetric", + "description": "Create a new app, returning the app ID.", + "operationId": "CreateApp", "requestBody": { "content": { "application/json": { "schema": { - "description": "The new span-based metric body.", + "description": "A request object for creating a new app.", + "example": { + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isDisabled": false, + "isLoading": false, + "isVisible": true, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42" + }, + "type": "calloutValue" + } + ], + "isVisible": "true", + "layout": { + "default": { + "height": 8, + "width": 2, + "x": 0, + "y": 0 + } + } + }, + "type": "gridCell" + } + ] + }, + "type": "grid" + } + ], + "description": "This is a simple example app", + "embeddedQueries": [], + "name": "Example App", + "rootInstanceName": "grid0" + }, + "type": "appDefinitions" + } + }, "properties": { "data": { - "description": "The new span-based metric properties.", + "description": "The data object containing the app definition.", "properties": { "attributes": { - "description": "The object describing the Datadog span-based metric to create.", + "description": "App definition attributes such as name, description, and components.", "properties": { - "compute": { - "description": "The compute rule to compute the span-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", - "example": false, - "type": "boolean" + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } }, - "path": { - "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", - "example": "@duration", - "type": "string" - } + "required": [ + "name", + "type", + "properties" + ], + "type": "object" }, - "required": [ - "aggregation_type" - ], - "type": "object" + "type": "array" }, - "filter": { - "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "default": "*", - "description": "The search query - following the span search syntax.", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" + "description": { + "description": "A human-readable description for the app.", + "type": "string" }, - "group_by": { - "description": "The rules for the group by.", + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", "items": { - "description": "A group by rule.", + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", "properties": { - "path": { - "description": "The path to the value the span-based metric will be aggregated over.", - "example": "resource_name", + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", - "example": "resource_name", + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] } }, "required": [ - "path" + "id", + "name", + "type" ], "type": "object" }, "type": "array" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, - "required": [ - "compute" - ], "type": "object" }, - "id": { - "description": "The name of the span-based metric.", - "example": "my.metric", - "type": "string" - }, "type": { - "default": "spans_metrics", - "description": "The type of resource. The value should always be spans_metrics.", + "default": "appDefinitions", + "description": "The app definition type.", "enum": [ - "spans_metrics" + "appDefinitions" ], - "example": "spans_metrics", + "example": "appDefinitions", "type": "string", "x-enum-varnames": [ - "SPANS_METRICS" + "APPDEFINITIONS" ] } }, "required": [ - "id", - "type", - "attributes" + "type" ], "type": "object" } }, - "required": [ - "data" - ], "type": "object" } } }, - "description": "The definition of the new span-based metric.", "required": true }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "description": "The span-based metric object.", + "description": "The response object after a new app is successfully created, with the app ID.", "properties": { "data": { - "description": "The span-based metric properties.", + "description": "The data object containing the app ID.", "properties": { - "attributes": { - "description": "The object describing a Datadog span-based metric.", - "properties": { - "compute": { - "description": "The compute rule to compute the span-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", - "example": false, - "type": "boolean" - }, - "path": { - "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", - "example": "@duration", - "type": "string" - } - }, - "type": "object" - }, - "filter": { - "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the span search syntax.", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the span-based metric will be aggregated over.", - "example": "resource_name", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", - "example": "resource_name", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, "id": { - "description": "The name of the span-based metric.", - "example": "my.metric", + "description": "The ID of the created app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" }, "type": { - "default": "spans_metrics", - "description": "The type of resource. The value should always be spans_metrics.", + "default": "appDefinitions", + "description": "The app definition type.", "enum": [ - "spans_metrics" + "appDefinitions" ], - "example": "spans_metrics", + "example": "appDefinitions", "type": "string", "x-enum-varnames": [ - "SPANS_METRICS" + "APPDEFINITIONS" ] } }, + "required": [ + "id", + "type" + ], "type": "object" } }, @@ -205028,7 +219794,7 @@ } } }, - "description": "OK" + "description": "Created" }, "400": { "content": { @@ -205038,13 +219804,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -205066,41 +219871,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Authorized" - }, - "409": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -205112,7 +219928,7 @@ } } }, - "description": "Conflict" + "description": "Forbidden" }, "429": { "content": { @@ -205143,60 +219959,169 @@ "description": "Too many requests" } }, - "summary": "Create a span-based metric", + "summary": "Create App", "tags": [ - "Spans Metrics" + "App Builder" ], - "x-codegen-request-body-name": "body", "x-given": { - "spans_metric": { + "app": { "parameters": [ { "name": "body", - "value": "{\n \"data\": {\n \"id\": \"{{ unique }}\",\n \"attributes\": {\n \"filter\": {\n \"query\": \"source:{{ unique }}\"\n },\n \"compute\": {\n \"aggregation_type\": \"distribution\",\n \"path\": \"@duration\",\n \"include_percentiles\": false\n },\n \"group_by\": [\n {\n \"path\": \"resource_name\",\n \"tag_name\": \"resource_name\"\n }\n ]\n },\n \"type\": \"spans_metrics\"\n }\n}" + "value": "{\"data\": {\"attributes\": {\"components\": [{\"events\": [], \"name\": \"grid0\", \"properties\": {\"children\": [{\"events\": [], \"name\": \"gridCell0\", \"properties\": {\"children\": [{\"events\": [], \"name\": \"calloutValue0\", \"properties\": {\"isDisabled\": false, \"isLoading\": false, \"isVisible\": true, \"label\": \"CPU Usage\", \"size\": \"sm\", \"style\": \"vivid_yellow\", \"unit\": \"kB\", \"value\": \"42\"}, \"type\": \"calloutValue\"}], \"isVisible\": \"true\", \"layout\": {\"default\": {\"height\": 8, \"width\": 2, \"x\": 0, \"y\": 0}}}, \"type\": \"gridCell\"}]}, \"type\": \"grid\"}], \"description\": \"This is a simple example app\", \"embeddedQueries\": [], \"name\": \"Example App\", \"rootInstanceName\": \"grid0\"}, \"type\": \"appDefinitions\"}}" } ], - "step": "there is a valid \"spans_metric\" in the system" + "step": "there is a valid \"app\" in the system" } }, "x-menu-order": 2, "x-permission": { - "operator": "OR", + "operator": "AND", "permissions": [ - "apm_generate_metrics" + "apps_write", + "connections_resolve", + "workflows_run" ] }, "x-undo": { - "operationId": "DeleteSpansMetric", + "operationId": "DeleteApp", "parameters": [ { - "name": "metric_id", + "name": "app_id", "source": "data.id" } ], "type": "unsafe" - } + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." } }, - "/api/v2/apm/config/metrics/{metric_id}": { + "/api/v2/app-builder/apps/{app_id}": { "delete": { - "description": "Delete a specific span-based metric from your organization.", - "operationId": "DeleteSpansMetric", + "description": "Delete a single app.", + "operationId": "DeleteApp", "parameters": [ { - "description": "The name of the span-based metric.", + "description": "The ID of the app to delete.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", "in": "path", - "name": "metric_id", + "name": "app_id", "required": true, "schema": { + "format": "uuid", "type": "string" } } ], "responses": { - "204": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The response object after an app is successfully deleted.", + "properties": { + "data": { + "description": "The definition of `DeleteAppResponseData` object.", + "properties": { + "id": { + "description": "The ID of the deleted app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, "description": "OK" }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, "403": { "content": { "application/json": { @@ -205205,13 +220130,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -205223,7 +220187,7 @@ } } }, - "description": "Not Authorized" + "description": "Forbidden" }, "404": { "content": { @@ -205233,13 +220197,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -205253,6 +220256,73 @@ }, "description": "Not Found" }, + "410": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Gone" + }, "429": { "content": { "application/json": { @@ -205282,30 +220352,42 @@ "description": "Too many requests" } }, - "summary": "Delete a span-based metric", + "summary": "Delete App", "tags": [ - "Spans Metrics" + "App Builder" ], - "x-menu-order": 5, + "x-menu-order": 6, "x-permission": { "operator": "OR", "permissions": [ - "apm_generate_metrics" + "apps_write" ] }, "x-undo": { "type": "idempotent" - } + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." }, "get": { - "description": "Get a specific span-based metric from your organization.", - "operationId": "GetSpansMetric", + "description": "Get the full definition of an app.", + "operationId": "GetApp", "parameters": [ { - "description": "The name of the span-based metric.", + "description": "The ID of the app to retrieve.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", "in": "path", - "name": "metric_id", + "name": "app_id", "required": true, + "schema": { + "format": "uuid", + "type": "string" + } + }, + { + "description": "The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively.", + "in": "query", + "name": "version", + "required": false, "schema": { "type": "string" } @@ -205316,401 +220398,694 @@ "content": { "application/json": { "schema": { - "description": "The span-based metric object.", + "description": "The full app definition response object.", "properties": { "data": { - "description": "The span-based metric properties.", + "description": "The data object containing the app definition.", "properties": { "attributes": { - "description": "The object describing a Datadog span-based metric.", + "description": "The app definition attributes, such as name, description, and components.", "properties": { - "compute": { - "description": "The compute rule to compute the span-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", - "example": false, - "type": "boolean" + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } }, - "path": { - "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", - "example": "@duration", - "type": "string" - } + "required": [ + "name", + "type", + "properties" + ], + "type": "object" }, - "type": "object" + "type": "array" }, - "filter": { - "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the span search syntax.", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" + "description": { + "description": "A human-readable description for the app.", + "type": "string" }, - "group_by": { - "description": "The rules for the group by.", + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", "items": { - "description": "A group by rule.", + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", "properties": { - "path": { - "description": "The path to the value the span-based metric will be aggregated over.", - "example": "resource_name", + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", - "example": "resource_name", + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] } }, + "required": [ + "id", + "name", + "type" + ], "type": "object" }, "type": "array" + }, + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" + }, + "name": { + "description": "The name of the app.", + "type": "string" + }, + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, "type": "object" }, "id": { - "description": "The name of the span-based metric.", - "example": "my.metric", + "description": "The ID of the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" }, - "type": { - "default": "spans_metrics", - "description": "The type of resource. The value should always be spans_metrics.", - "enum": [ - "spans_metrics" - ], - "example": "spans_metrics", - "type": "string", - "x-enum-varnames": [ - "SPANS_METRICS" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Authorized" - }, - "404": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": [ + "appDefinitions" + ], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": [ + "APPDEFINITIONS" + ] + } }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" + "required": [ + "id", + "type", + "attributes" ], + "type": "object" + }, + "included": { + "description": "Data on the version of the app that was published.", "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "summary": "Get a span-based metric", - "tags": [ - "Spans Metrics" - ], - "x-menu-order": 3, - "x-permission": { - "operator": "OR", - "permissions": [ - "apm_read" - ] - }, - "x-undo": { - "type": "safe" - } - }, - "patch": { - "description": "Update a specific span-based metric from your organization.\nReturns the span-based metric object from the request body when the request is successful.", - "operationId": "UpdateSpansMetric", - "parameters": [ - { - "description": "The name of the span-based metric.", - "in": "path", - "name": "metric_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "The new span-based metric body.", - "properties": { - "data": { - "description": "The new span-based metric properties.", - "properties": { - "attributes": { - "description": "The span-based metric properties that will be updated.", + "description": "The version of the app that was published.", "properties": { - "compute": { - "description": "The compute rule to compute the span-based metric.", + "attributes": { + "description": "The attributes object containing the version ID of the published app.", "properties": { - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", - "example": false, - "type": "boolean" + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" } }, "type": "object" }, - "filter": { - "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", "properties": { - "query": { - "default": "*", - "description": "The search query - following the span search syntax.", - "example": "@http.status_code:200 service:my-service", + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" } }, "type": "object" }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the span-based metric will be aggregated over.", - "example": "resource_name", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", - "example": "resource_name", - "type": "string" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "type": "array" + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] } }, "type": "object" }, - "type": { - "default": "spans_metrics", - "description": "The type of resource. The value should always be spans_metrics.", - "enum": [ - "spans_metrics" - ], - "example": "spans_metrics", - "type": "string", - "x-enum-varnames": [ - "SPANS_METRICS" - ] - } + "type": "array" }, - "required": [ - "type", - "attributes" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "New definition of the span-based metric.", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "The span-based metric object.", - "properties": { - "data": { - "description": "The span-based metric properties.", + "meta": { + "description": "Metadata of an app.", "properties": { - "attributes": { - "description": "The object describing a Datadog span-based metric.", + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", + "type": "string" + }, + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "relationship": { + "description": "The app's publication relationship and custom connections.", + "properties": { + "connections": { + "description": "Array of custom connections used by the app.", + "items": { + "description": "A custom connection used by an app.", + "properties": { + "attributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" + }, + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the custom connection.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "deployment": { + "description": "Information pointing to the app's publication status.", "properties": { - "compute": { - "description": "The compute rule to compute the span-based metric.", + "data": { + "description": "Data object containing the deployment ID.", "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", "enum": [ - "count", - "distribution" + "deployment" ], - "example": "distribution", + "example": "deployment", "type": "string", "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" + "DEPLOYMENT" ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`.", - "example": false, - "type": "boolean" - }, - "path": { - "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\").", - "example": "@duration", - "type": "string" } }, "type": "object" }, - "filter": { - "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric.", + "meta": { + "description": "Metadata object containing the publication creation information.", "properties": { - "query": { - "description": "The search query - following the span search syntax.", - "example": "@http.status_code:200 service:my-service", + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" } }, "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the span-based metric will be aggregated over.", - "example": "resource_name", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.", - "example": "resource_name", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" } }, "type": "object" - }, - "id": { - "description": "The name of the span-based metric.", - "example": "my.metric", - "type": "string" - }, - "type": { - "default": "spans_metrics", - "description": "The type of resource. The value should always be spans_metrics.", - "enum": [ - "spans_metrics" - ], - "example": "spans_metrics", - "type": "string", - "x-enum-varnames": [ - "SPANS_METRICS" - ] } }, "type": "object" @@ -205730,13 +221105,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -205758,13 +221172,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -205776,7 +221229,7 @@ } } }, - "description": "Not Authorized" + "description": "Forbidden" }, "404": { "content": { @@ -205786,221 +221239,56 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "summary": "Update a span-based metric", - "tags": [ - "Spans Metrics" - ], - "x-codegen-request-body-name": "body", - "x-menu-order": 4, - "x-permission": { - "operator": "OR", - "permissions": [ - "apm_generate_metrics" - ] - }, - "x-undo": { - "type": "idempotent" - } - } - }, - "/api/v2/apm/config/retention-filters": { - "get": { - "description": "Get the list of APM retention filters.", - "operationId": "ListApmRetentionFilters", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "An ordered list of retention filters.", - "properties": { - "data": { - "description": "A list of retention filters objects.", "items": { - "description": "The definition of the retention filter.", + "description": "API error response body", "properties": { - "attributes": { - "description": "The attributes of the retention filter.", + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", "properties": { - "created_at": { - "description": "The creation timestamp of the retention filter.", - "format": "int64", - "type": "integer" - }, - "created_by": { - "description": "The creator of the retention filter.", + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", "type": "string" }, - "editable": { - "description": "Shows whether the filter can be edited.", - "example": true, - "type": "boolean" - }, - "enabled": { - "description": "The status of the retention filter (Enabled/Disabled).", - "example": true, - "type": "boolean" - }, - "execution_order": { - "description": "The execution order of the retention filter.", - "format": "int64", - "type": "integer" - }, - "filter": { - "description": "The spans filter used to index spans.", - "properties": { - "query": { - "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" - }, - "filter_type": { - "default": "spans-sampling-processor", - "description": "The type of retention filter.", - "enum": [ - "spans-sampling-processor", - "spans-errors-sampling-processor", - "spans-appsec-sampling-processor" - ], - "example": "spans-sampling-processor", - "type": "string", - "x-enum-varnames": [ - "SPANS_SAMPLING_PROCESSOR", - "SPANS_ERRORS_SAMPLING_PROCESSOR", - "SPANS_APPSEC_SAMPLING_PROCESSOR" - ] - }, - "modified_at": { - "description": "The modification timestamp of the retention filter.", - "format": "int64", - "type": "integer" - }, - "modified_by": { - "description": "The modifier of the retention filter.", + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", "type": "string" }, - "name": { - "description": "The name of the retention filter.", - "example": "my retention filter", + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", "type": "string" - }, - "rate": { - "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", - "example": 1, - "format": "double", - "type": "number" } }, "type": "object" }, - "id": { - "description": "The ID of the retention filter.", - "example": "7RBOb7dLSYWI01yc3pIH8w", + "status": { + "description": "Status code of the response.", + "example": "400", "type": "string" }, - "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", - "enum": [ - "apm_retention_filter" - ], - "example": "apm_retention_filter", - "type": "string", - "x-enum-varnames": [ - "apm_retention_filter" - ] + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" } }, - "required": [ - "id", - "type", - "attributes" - ], "type": "object" }, "type": "array" } }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "OK" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, "required": [ "errors" ], @@ -206008,7 +221296,7 @@ } } }, - "description": "Not Authorized" + "description": "Not Found" }, "429": { "content": { @@ -206039,117 +221327,560 @@ "description": "Too many requests" } }, - "summary": "List all APM retention filters", + "summary": "Get App", "tags": [ - "APM Retention Filters" + "App Builder" ], - "x-menu-order": 1, + "x-menu-order": 4, "x-permission": { - "operator": "OR", + "operator": "AND", "permissions": [ - "apm_retention_filter_read", - "apm_pipelines_read" + "apps_run", + "connections_read" ] }, "x-undo": { "type": "safe" - } + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." }, - "post": { - "description": "Create a retention filter to index spans in your organization.\nReturns the retention filter definition when the request is successful.\n\nDefault filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be created.", - "operationId": "CreateApmRetentionFilter", + "patch": { + "description": "Update an existing app. This creates a new version of the app.", + "operationId": "UpdateApp", + "parameters": [ + { + "description": "The ID of the app to update.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "in": "path", + "name": "app_id", + "required": true, + "schema": { + "format": "uuid", + "type": "string" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "description": "The body of the retention filter to be created.", + "description": "A request object for updating an existing app.", + "example": { + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isDisabled": false, + "isLoading": false, + "isVisible": true, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42" + }, + "type": "calloutValue" + } + ], + "isVisible": "true", + "layout": { + "default": { + "height": 8, + "width": 2, + "x": 0, + "y": 0 + } + } + }, + "type": "gridCell" + } + ] + }, + "type": "grid" + } + ], + "description": "This is a simple example app", + "embeddedQueries": [], + "name": "Example App", + "rootInstanceName": "grid0" + }, + "id": "9e20cbaf-68da-45a6-9ccf-54193ac29fa5", + "type": "appDefinitions" + } + }, "properties": { "data": { - "description": "The body of the retention filter to be created.", + "description": "The data object containing the new app definition. Any fields not included in the request remain unchanged.", "properties": { "attributes": { - "description": "The object describing the configuration of the retention filter to create/update.", + "description": "App definition attributes to be updated, such as name, description, and components.", "properties": { - "enabled": { - "description": "Enable/Disable the retention filter.", - "example": true, - "type": "boolean" - }, - "filter": { - "description": "The spans filter. Spans matching this filter will be indexed and stored.", - "properties": { - "query": { - "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } + "components": { + "description": "The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" }, - "required": [ - "query" - ], - "type": "object" + "type": "array" }, - "filter_type": { - "default": "spans-sampling-processor", - "description": "The type of retention filter. The value should always be spans-sampling-processor.", - "enum": [ - "spans-sampling-processor" - ], - "example": "spans-sampling-processor", - "type": "string", - "x-enum-varnames": [ - "SPANS_SAMPLING_PROCESSOR" - ] + "description": { + "description": "The new human-readable description for the app.", + "type": "string" + }, + "embeddedQueries": { + "description": "The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" + }, + "type": "array" }, "name": { - "description": "The name of the retention filter.", - "example": "my retention filter", + "description": "The new name of the app.", "type": "string" }, - "rate": { - "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", - "example": 1, - "format": "double", - "type": "number" + "rootInstanceName": { + "description": "The new name of the root component of the app. This must be a `grid` component that contains all other components.", + "type": "string" + }, + "tags": { + "description": "The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, - "required": [ - "name", - "filter", - "enabled", - "filter_type", - "rate" - ], "type": "object" }, + "id": { + "description": "The ID of the app to update. The app ID must match the ID in the URL path.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", + "default": "appDefinitions", + "description": "The app definition type.", "enum": [ - "apm_retention_filter" + "appDefinitions" ], - "example": "apm_retention_filter", + "example": "appDefinitions", "type": "string", "x-enum-varnames": [ - "apm_retention_filter" + "APPDEFINITIONS" ] } }, "required": [ - "attributes", "type" ], "type": "object" } }, - "required": [ - "data" - ], "type": "object" } } }, - "description": "The definition of the new retention filter.", "required": true }, "responses": { @@ -206157,99 +221888,458 @@ "content": { "application/json": { "schema": { - "description": "The retention filters definition.", + "description": "The response object after an app is successfully updated.", "properties": { "data": { - "description": "The definition of the retention filter.", + "description": "The data object containing the updated app definition.", "properties": { "attributes": { - "description": "The attributes of the retention filter.", + "description": "The updated app definition attributes, such as name, description, and components.", "properties": { - "created_at": { - "description": "The creation timestamp of the retention filter.", - "format": "int64", - "type": "integer" + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A grid component. The grid component is the root canvas for an app and contains all other components.", + "properties": { + "events": { + "description": "Events to listen for on the grid component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.", + "type": "string" + }, + "name": { + "description": "A unique identifier for this grid component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The background color of the grid.", + "type": "string" + }, + "children": { + "description": "The child components of the grid.", + "items": { + "description": "[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events to listen for on the UI component.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.", + "nullable": true, + "type": "string" + }, + "name": { + "description": "A unique identifier for this UI component. This name is also visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "additionalProperties": {}, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.", + "properties": { + "children": { + "description": "The child components of the UI component.", + "items": "[Circular]", + "type": "array" + }, + "isVisible": { + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "boolean" + }, + { + "description": "If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "example": "${true}", + "type": "string" + } + ] + } + }, + "type": "object" + }, + "type": { + "description": "The UI component type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" + }, + "isVisible": { + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.", + "oneOf": [ + { + "type": "string" + }, + { + "default": true, + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": [ + "grid" + ], + "example": "grid", + "type": "string", + "x-enum-varnames": [ + "GRID" + ] + } + }, + "required": [ + "name", + "type", + "properties" + ], + "type": "object" + }, + "type": "array" }, - "created_by": { - "description": "The creator of the retention filter.", + "description": { + "description": "The human-readable description for the app.", "type": "string" }, - "editable": { - "description": "Shows whether the filter can be edited.", - "example": true, - "type": "boolean" - }, - "enabled": { - "description": "The status of the retention filter (Enabled/Disabled).", - "example": true, - "type": "boolean" - }, - "execution_order": { - "description": "The execution order of the retention filter.", - "format": "int64", - "type": "integer" - }, - "filter": { - "description": "The spans filter used to index spans.", - "properties": { - "query": { - "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } + "embeddedQueries": { + "description": "An array of queries, such as external actions and state variables, that the app uses.", + "items": { + "description": "A query used by an app. This can take the form of an external action, a data transformation, or a state variable change.", + "properties": { + "events": { + "description": "Events to listen for downstream of the query.", + "items": { + "additionalProperties": {}, + "description": "An event on a UI component that triggers a response or action in an app.", + "properties": { + "name": { + "description": "The triggering action for the event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED" + ] + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "id": { + "description": "The ID of the query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "name": { + "description": "The name of the query. The name must be unique within the app and is visible in the app editor.", + "example": "", + "type": "string" + }, + "properties": { + "description": "The properties of the query. The properties vary depending on the query type." + }, + "type": { + "description": "The query type.", + "enum": [ + "action", + "stateVariable", + "dataTransform" + ], + "example": "action", + "type": "string", + "x-enum-varnames": [ + "ACTION", + "STATEVARIABLE", + "DATATRANSFORM" + ] + } + }, + "required": [ + "id", + "name", + "type" + ], + "type": "object" }, - "type": "object" - }, - "filter_type": { - "default": "spans-sampling-processor", - "description": "The type of retention filter. The value should always be spans-sampling-processor.", - "enum": [ - "spans-sampling-processor" - ], - "example": "spans-sampling-processor", - "type": "string", - "x-enum-varnames": [ - "SPANS_SAMPLING_PROCESSOR" - ] + "type": "array" }, - "modified_at": { - "description": "The modification timestamp of the retention filter.", - "format": "int64", - "type": "integer" + "favorite": { + "description": "Whether the app is marked as a favorite by the current user.", + "type": "boolean" }, - "modified_by": { - "description": "The modifier of the retention filter.", + "name": { + "description": "The name of the app.", "type": "string" }, - "name": { - "description": "The name of the retention filter.", - "example": "my retention filter", + "rootInstanceName": { + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components.", "type": "string" }, - "rate": { - "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", - "example": 1, - "format": "double", - "type": "number" + "tags": { + "description": "A list of tags for the app, which can be used to filter apps.", + "example": [ + "service:webshop-backend", + "team:webshop" + ], + "items": { + "description": "An individual tag for the app.", + "type": "string" + }, + "type": "array" } }, "type": "object" }, "id": { - "description": "The ID of the retention filter.", - "example": "7RBOb7dLSYWI01yc3pIH8w", + "description": "The ID of the updated app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" }, "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", + "default": "appDefinitions", + "description": "The app definition type.", "enum": [ - "apm_retention_filter" + "appDefinitions" ], - "example": "apm_retention_filter", + "example": "appDefinitions", "type": "string", "x-enum-varnames": [ - "apm_retention_filter" + "APPDEFINITIONS" ] } }, @@ -206259,342 +222349,245 @@ "attributes" ], "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Authorized" - }, - "409": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Conflict" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], + }, + "included": { + "description": "Data on the version of the app that was published.", "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "The version of the app that was published.", + "properties": { + "attributes": { + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" }, "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "summary": "Create a retention filter", - "tags": [ - "APM Retention Filters" - ], - "x-codegen-request-body-name": "body", - "x-given": { - "retention_filter": { - "parameters": [ - { - "name": "body", - "value": "{\n \"data\": {\n \"attributes\": {\n \"name\": \"demo retention filter\",\n \"rate\": 0.90,\n \"filter\": {\n \"query\": \"@_top_level:1 test:service-demo\"\n },\n \"enabled\": true,\n \"filter_type\": \"spans-sampling-processor\"\n },\n \"type\": \"apm_retention_filter\"\n }\n}" - } - ], - "step": "there is a valid \"retention_filter\" in the system" - } - }, - "x-menu-order": 2, - "x-permission": { - "operator": "OR", - "permissions": [ - "apm_retention_filter_write", - "apm_pipelines_write" - ] - }, - "x-undo": { - "operationId": "DeleteApmRetentionFilter", - "parameters": [ - { - "name": "filter_id", - "source": "data.id" - } - ], - "type": "unsafe" - } - } - }, - "/api/v2/apm/config/retention-filters-execution-order": { - "put": { - "description": "Re-order the execution order of retention filters.", - "operationId": "ReorderApmRetentionFilters", - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "A list of retention filters to reorder.", - "properties": { - "data": { - "description": "A list of retention filters objects.", - "items": { - "description": "The retention filter object .", + }, + "meta": { + "description": "Metadata of an app.", "properties": { - "id": { - "description": "The ID of the retention filter.", - "example": "7RBOb7dLSYWI01yc3pIH8w", + "created_at": { + "description": "Timestamp of when the app was created.", + "format": "date-time", "type": "string" }, - "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", - "enum": [ - "apm_retention_filter" - ], - "example": "apm_retention_filter", - "type": "string", - "x-enum-varnames": [ - "apm_retention_filter" - ] + "deleted_at": { + "description": "Timestamp of when the app was deleted.", + "format": "date-time", + "type": "string" + }, + "org_id": { + "description": "The Datadog organization ID that owns the app.", + "format": "int64", + "type": "integer" + }, + "updated_at": { + "description": "Timestamp of when the app was last updated.", + "format": "date-time", + "type": "string" + }, + "updated_since_deployment": { + "description": "Whether the app was updated since it was last published. Published apps are pinned to a specific version and do not automatically update when the app is updated.", + "type": "boolean" + }, + "user_id": { + "description": "The ID of the user who created the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who created the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who created the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "version": { + "description": "The version number of the app. This starts at 1 and increments with each update.", + "format": "int64", + "type": "integer" } }, - "required": [ - "id", - "type" - ], "type": "object" }, - "type": "array" - } - }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "The list of retention filters in the new order.", - "required": true - }, - "responses": { - "200": { - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Authorized" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "relationship": { + "description": "The app's publication relationship and custom connections.", + "properties": { + "connections": { + "description": "Array of custom connections used by the app.", + "items": { + "description": "A custom connection used by an app.", + "properties": { + "attributes": { + "description": "The custom connection attributes.", + "properties": { + "name": { + "description": "The name of the custom connection.", + "type": "string" + }, + "onPremRunner": { + "description": "Information about the Private Action Runner used by the custom connection, if the custom connection is associated with a Private Action Runner.", + "properties": { + "id": { + "description": "The Private Action Runner ID.", + "type": "string" + }, + "url": { + "description": "The URL of the Private Action Runner.", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of the custom connection.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "custom_connections", + "description": "The custom connection type.", + "enum": [ + "custom_connections" + ], + "example": "custom_connections", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_CONNECTIONS" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "deployment": { + "description": "Information pointing to the app's publication status.", + "properties": { + "data": { + "description": "Data object containing the deployment ID.", + "properties": { + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "type": { + "default": "deployment", + "description": "The deployment type.", + "enum": [ + "deployment" + ], + "example": "deployment", + "type": "string", + "x-enum-varnames": [ + "DEPLOYMENT" + ] + } + }, + "type": "object" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", + "properties": { + "created_at": { + "description": "Timestamp of when the app was published.", + "format": "date-time", + "type": "string" + }, + "user_id": { + "description": "The ID of the user who published the app.", + "format": "int64", + "type": "integer" + }, + "user_name": { + "description": "The name (or email address) of the user who published the app.", + "type": "string" + }, + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } }, - "type": "array" + "type": "object" } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "Too many requests" - } - }, - "summary": "Re-order retention filters", - "tags": [ - "APM Retention Filters" - ], - "x-codegen-request-body-name": "body", - "x-menu-order": 6, - "x-permission": { - "operator": "OR", - "permissions": [ - "apm_retention_filter_write", - "apm_pipelines_write" - ] - }, - "x-undo": { - "type": "idempotent" - } - } - }, - "/api/v2/apm/config/retention-filters/{filter_id}": { - "delete": { - "description": "Delete a specific retention filter from your organization.\n\nDefault filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be deleted.", - "operationId": "DeleteApmRetentionFilter", - "parameters": [ - { - "description": "The ID of the retention filter.", - "in": "path", - "name": "filter_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { "description": "OK" }, - "403": { + "400": { "content": { "application/json": { "schema": { @@ -206602,13 +222595,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -206620,9 +222652,9 @@ } } }, - "description": "Not Authorized" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -206630,13 +222662,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -206648,7 +222719,7 @@ } } }, - "description": "Not Found" + "description": "Forbidden" }, "429": { "content": { @@ -206679,32 +222750,38 @@ "description": "Too many requests" } }, - "summary": "Delete a retention filter", + "summary": "Update App", "tags": [ - "APM Retention Filters" + "App Builder" ], "x-menu-order": 5, "x-permission": { - "operator": "OR", + "operator": "AND", "permissions": [ - "apm_retention_filter_write", - "apm_pipelines_write" + "apps_write", + "connections_resolve", + "workflows_run" ] }, "x-undo": { "type": "idempotent" - } - }, - "get": { - "description": "Get an APM retention filter.", - "operationId": "GetApmRetentionFilter", + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." + } + }, + "/api/v2/app-builder/apps/{app_id}/deployment": { + "delete": { + "description": "Unpublish an app, removing the live version of the app. Unpublishing creates a new instance of a `deployment` object on the app, with a nil `app_version_id` (`00000000-0000-0000-0000-000000000000`). The app can still be updated and published again in the future.", + "operationId": "UnpublishApp", "parameters": [ { - "description": "The ID of the retention filter.", + "description": "The ID of the app to unpublish.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", "in": "path", - "name": "filter_id", + "name": "app_id", "required": true, "schema": { + "format": "uuid", "type": "string" } } @@ -206714,111 +222791,68 @@ "content": { "application/json": { "schema": { - "description": "The retention filters definition.", + "description": "The response object after an app is successfully unpublished.", "properties": { "data": { - "description": "The definition of the retention filter.", + "description": "The version of the app that was published.", "properties": { "attributes": { - "description": "The attributes of the retention filter.", + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", "properties": { "created_at": { - "description": "The creation timestamp of the retention filter.", - "format": "int64", - "type": "integer" - }, - "created_by": { - "description": "The creator of the retention filter.", + "description": "Timestamp of when the app was published.", + "format": "date-time", "type": "string" }, - "editable": { - "description": "Shows whether the filter can be edited.", - "example": true, - "type": "boolean" - }, - "enabled": { - "description": "The status of the retention filter (Enabled/Disabled).", - "example": true, - "type": "boolean" - }, - "execution_order": { - "description": "The execution order of the retention filter.", - "format": "int64", - "type": "integer" - }, - "filter": { - "description": "The spans filter used to index spans.", - "properties": { - "query": { - "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" - }, - "filter_type": { - "default": "spans-sampling-processor", - "description": "The type of retention filter.", - "enum": [ - "spans-sampling-processor", - "spans-errors-sampling-processor", - "spans-appsec-sampling-processor" - ], - "example": "spans-sampling-processor", - "type": "string", - "x-enum-varnames": [ - "SPANS_SAMPLING_PROCESSOR", - "SPANS_ERRORS_SAMPLING_PROCESSOR", - "SPANS_APPSEC_SAMPLING_PROCESSOR" - ] - }, - "modified_at": { - "description": "The modification timestamp of the retention filter.", + "user_id": { + "description": "The ID of the user who published the app.", "format": "int64", "type": "integer" }, - "modified_by": { - "description": "The modifier of the retention filter.", + "user_name": { + "description": "The name (or email address) of the user who published the app.", "type": "string" }, - "name": { - "description": "The name of the retention filter.", - "example": "my retention filter", + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" - }, - "rate": { - "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", - "example": 1, - "format": "double", - "type": "number" } }, "type": "object" }, - "id": { - "description": "The ID of the retention filter.", - "example": "7RBOb7dLSYWI01yc3pIH8w", - "type": "string" - }, "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", + "default": "deployment", + "description": "The deployment type.", "enum": [ - "apm_retention_filter" + "deployment" ], - "example": "apm_retention_filter", + "example": "deployment", "type": "string", "x-enum-varnames": [ - "apm_retention_filter" + "DEPLOYMENT" ] } }, - "required": [ - "id", - "type", - "attributes" - ], "type": "object" } }, @@ -206828,6 +222862,73 @@ }, "description": "OK" }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, "403": { "content": { "application/json": { @@ -206836,13 +222937,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -206854,7 +222994,7 @@ } } }, - "description": "Not Authorized" + "description": "Forbidden" }, "404": { "content": { @@ -206864,13 +223004,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -206913,250 +223092,105 @@ "description": "Too many requests" } }, - "summary": "Get a given APM retention filter", + "summary": "Unpublish App", "tags": [ - "APM Retention Filters" + "App Builder" ], - "x-menu-order": 3, + "x-menu-order": 8, "x-permission": { "operator": "OR", "permissions": [ - "apm_retention_filter_read", - "apm_pipelines_read" + "apps_write" ] }, "x-undo": { - "type": "safe" - } + "type": "idempotent" + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." }, - "put": { - "description": "Update a retention filter from your organization.\n\nDefault filters (filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor) cannot be renamed or removed.", - "operationId": "UpdateApmRetentionFilter", + "post": { + "description": "Publish an app for use by 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.", + "operationId": "PublishApp", "parameters": [ { - "description": "The ID of the retention filter.", + "description": "The ID of the app to publish.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", "in": "path", - "name": "filter_id", + "name": "app_id", "required": true, "schema": { + "format": "uuid", "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "The body of the retention filter to be updated.", - "properties": { - "data": { - "description": "The body of the retention filter to be updated.", - "properties": { - "attributes": { - "description": "The object describing the configuration of the retention filter to create/update.", - "properties": { - "enabled": { - "description": "Enable/Disable the retention filter.", - "example": true, - "type": "boolean" - }, - "filter": { - "description": "The spans filter. Spans matching this filter will be indexed and stored.", - "properties": { - "query": { - "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "required": [ - "query" - ], - "type": "object" - }, - "filter_type": { - "default": "spans-sampling-processor", - "description": "The type of retention filter.", - "enum": [ - "spans-sampling-processor", - "spans-errors-sampling-processor", - "spans-appsec-sampling-processor" - ], - "example": "spans-sampling-processor", - "type": "string", - "x-enum-varnames": [ - "SPANS_SAMPLING_PROCESSOR", - "SPANS_ERRORS_SAMPLING_PROCESSOR", - "SPANS_APPSEC_SAMPLING_PROCESSOR" - ] - }, - "name": { - "description": "The name of the retention filter.", - "example": "my retention filter", - "type": "string" - }, - "rate": { - "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", - "example": 1, - "format": "double", - "type": "number" - } - }, - "required": [ - "name", - "filter", - "enabled", - "filter_type", - "rate" - ], - "type": "object" - }, - "id": { - "description": "The ID of the retention filter.", - "example": "retention-filter-id", - "type": "string" - }, - "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", - "enum": [ - "apm_retention_filter" - ], - "example": "apm_retention_filter", - "type": "string", - "x-enum-varnames": [ - "apm_retention_filter" - ] - } - }, - "required": [ - "id", - "attributes", - "type" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "The updated definition of the retention filter.", - "required": true - }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "description": "The retention filters definition.", + "description": "The response object after an app is successfully published.", "properties": { "data": { - "description": "The definition of the retention filter.", + "description": "The version of the app that was published.", "properties": { "attributes": { - "description": "The attributes of the retention filter.", + "description": "The attributes object containing the version ID of the published app.", + "properties": { + "app_version_id": { + "description": "The version ID of the app that was published. For an unpublished app, this is always the nil UUID (`00000000-0000-0000-0000-000000000000`).", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The deployment ID.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string" + }, + "meta": { + "description": "Metadata object containing the publication creation information.", "properties": { "created_at": { - "description": "The creation timestamp of the retention filter.", - "format": "int64", - "type": "integer" - }, - "created_by": { - "description": "The creator of the retention filter.", + "description": "Timestamp of when the app was published.", + "format": "date-time", "type": "string" }, - "editable": { - "description": "Shows whether the filter can be edited.", - "example": true, - "type": "boolean" - }, - "enabled": { - "description": "The status of the retention filter (Enabled/Disabled).", - "example": true, - "type": "boolean" - }, - "execution_order": { - "description": "The execution order of the retention filter.", - "format": "int64", - "type": "integer" - }, - "filter": { - "description": "The spans filter used to index spans.", - "properties": { - "query": { - "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", - "example": "@http.status_code:200 service:my-service", - "type": "string" - } - }, - "type": "object" - }, - "filter_type": { - "default": "spans-sampling-processor", - "description": "The type of retention filter.", - "enum": [ - "spans-sampling-processor", - "spans-errors-sampling-processor", - "spans-appsec-sampling-processor" - ], - "example": "spans-sampling-processor", - "type": "string", - "x-enum-varnames": [ - "SPANS_SAMPLING_PROCESSOR", - "SPANS_ERRORS_SAMPLING_PROCESSOR", - "SPANS_APPSEC_SAMPLING_PROCESSOR" - ] - }, - "modified_at": { - "description": "The modification timestamp of the retention filter.", + "user_id": { + "description": "The ID of the user who published the app.", "format": "int64", "type": "integer" }, - "modified_by": { - "description": "The modifier of the retention filter.", + "user_name": { + "description": "The name (or email address) of the user who published the app.", "type": "string" }, - "name": { - "description": "The name of the retention filter.", - "example": "my retention filter", + "user_uuid": { + "description": "The UUID of the user who published the app.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", "type": "string" - }, - "rate": { - "description": "Sample rate to apply to spans going through this retention filter,\na value of 1.0 keeps all spans matching the query.", - "example": 1, - "format": "double", - "type": "number" } }, "type": "object" }, - "id": { - "description": "The ID of the retention filter.", - "example": "7RBOb7dLSYWI01yc3pIH8w", - "type": "string" - }, "type": { - "default": "apm_retention_filter", - "description": "The type of the resource.", + "default": "deployment", + "description": "The deployment type.", "enum": [ - "apm_retention_filter" + "deployment" ], - "example": "apm_retention_filter", + "example": "deployment", "type": "string", "x-enum-varnames": [ - "apm_retention_filter" + "DEPLOYMENT" ] } }, - "required": [ - "id", - "type", - "attributes" - ], "type": "object" } }, @@ -207164,7 +223198,7 @@ } } }, - "description": "OK" + "description": "Created" }, "400": { "content": { @@ -207174,13 +223208,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -207202,13 +223275,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -207220,7 +223332,7 @@ } } }, - "description": "Not Authorized" + "description": "Forbidden" }, "404": { "content": { @@ -207230,13 +223342,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -207279,22 +223430,21 @@ "description": "Too many requests" } }, - "summary": "Update a retention filter", + "summary": "Publish App", "tags": [ - "APM Retention Filters" + "App Builder" ], - "x-codegen-request-body-name": "body", - "x-menu-order": 4, + "x-menu-order": 7, "x-permission": { "operator": "OR", "permissions": [ - "apm_retention_filter_write", - "apm_pipelines_write" + "apps_write" ] }, "x-undo": { "type": "idempotent" - } + }, + "x-unstable": "**Note**: App Builder API endpoints are still under active development and might change at any time." } }, "/api/v2/application_keys": { @@ -280018,8 +296168,10 @@ ], "x-menu-order": 9, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -280418,6 +296570,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -280764,6 +296945,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -281011,6 +297221,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -281552,6 +297791,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -281963,6 +298231,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -282210,6 +298507,35 @@ "example": "bucket-name", "type": "string" }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An Amazon Resource Name (ARN) used to identify an AWS KMS key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string" + }, + "type": { + "description": "Type of S3 encryption for a destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS" + ] + } + }, + "required": [ + "type" + ], + "type": "object" + }, "integration": { "description": "The S3 Archive's integration destination.", "properties": { @@ -282647,302 +298973,304 @@ "description": "Too many requests" } }, - "summary": "Revoke role from an archive", + "summary": "Revoke role from an archive", + "tags": [ + "Logs Archives" + ], + "x-codegen-request-body-name": "body", + "x-menu-order": 8, + "x-permission": { + "operator": "OR", + "permissions": [ + "logs_write_archives" + ] + }, + "x-undo": { + "type": "idempotent" + } + }, + "get": { + "description": "Returns all read roles a given archive is restricted to.", + "operationId": "ListArchiveReadRoles", + "parameters": [ + { + "description": "The ID of the archive.", + "in": "path", + "name": "archive_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response containing information about multiple roles.", + "properties": { + "data": { + "description": "Array of returned roles.", + "items": { + "description": "Role object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of the role.", + "properties": { + "created_at": { + "description": "Creation time of the role.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last role modification.", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "name": { + "description": "The name of the role. The name is neither unique nor a stable identifier of the role.", + "type": "string" + }, + "user_count": { + "description": "Number of users with that role.", + "format": "int64", + "readOnly": true, + "type": "integer" + } + }, + "type": "object" + }, + "id": { + "description": "The unique identifier of the role.", + "type": "string" + }, + "relationships": { + "description": "Relationships of the role object returned by the API.", + "properties": { + "permissions": { + "description": "Relationship to multiple permissions objects.", + "properties": { + "data": { + "description": "Relationships to permission objects.", + "items": { + "description": "Relationship to permission object.", + "properties": { + "id": { + "description": "ID of the permission.", + "type": "string" + }, + "type": { + "default": "permissions", + "description": "Permissions resource type.", + "enum": [ + "permissions" + ], + "example": "permissions", + "type": "string", + "x-enum-varnames": [ + "PERMISSIONS" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "type": "object" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "required": [ + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + }, + "meta": { + "description": "Object describing meta attributes of response.", + "properties": { + "page": { + "description": "Pagination object.", + "properties": { + "total_count": { + "description": "Total count.", + "format": "int64", + "type": "integer" + }, + "total_filtered_count": { + "description": "Total count of elements matched by the filter.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object", + "x-merge-override": { + "properties": false + } + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "List read roles for an archive", "tags": [ "Logs Archives" ], "x-codegen-request-body-name": "body", - "x-menu-order": 8, + "x-menu-order": 6, "x-permission": { "operator": "OR", "permissions": [ - "logs_write_archives" + "logs_read_config" ] }, - "x-undo": { - "type": "idempotent" - } - }, - "get": { - "description": "Returns all read roles a given archive is restricted to.", - "operationId": "ListArchiveReadRoles", - "parameters": [ - { - "description": "The ID of the archive.", - "in": "path", - "name": "archive_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "Response containing information about multiple roles.", - "properties": { - "data": { - "description": "Array of returned roles.", - "items": { - "description": "Role object returned by the API.", - "properties": { - "attributes": { - "description": "Attributes of the role.", - "properties": { - "created_at": { - "description": "Creation time of the role.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last role modification.", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "name": { - "description": "The name of the role. The name is neither unique nor a stable identifier of the role.", - "type": "string" - }, - "user_count": { - "description": "Number of users with that role.", - "format": "int64", - "readOnly": true, - "type": "integer" - } - }, - "type": "object" - }, - "id": { - "description": "The unique identifier of the role.", - "type": "string" - }, - "relationships": { - "description": "Relationships of the role object returned by the API.", - "properties": { - "permissions": { - "description": "Relationship to multiple permissions objects.", - "properties": { - "data": { - "description": "Relationships to permission objects.", - "items": { - "description": "Relationship to permission object.", - "properties": { - "id": { - "description": "ID of the permission.", - "type": "string" - }, - "type": { - "default": "permissions", - "description": "Permissions resource type.", - "enum": [ - "permissions" - ], - "example": "permissions", - "type": "string", - "x-enum-varnames": [ - "PERMISSIONS" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "type": "object" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "required": [ - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - }, - "meta": { - "description": "Object describing meta attributes of response.", - "properties": { - "page": { - "description": "Pagination object.", - "properties": { - "total_count": { - "description": "Total count.", - "format": "int64", - "type": "integer" - }, - "total_filtered_count": { - "description": "Total count of elements matched by the filter.", - "format": "int64", - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object", - "x-merge-override": { - "properties": false - } - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Forbidden" - }, - "404": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "summary": "List read roles for an archive", - "tags": [ - "Logs Archives" - ], - "x-codegen-request-body-name": "body", - "x-menu-order": 6, - "x-permission": { - "operator": "OPEN", - "permissions": [] - }, "x-undo": { "type": "safe" } @@ -283465,7 +299793,8 @@ "x-permission": { "operator": "OR", "permissions": [ - "logs_read_data" + "logs_read_data", + "logs_read_config" ] }, "x-undo": { @@ -284715,7 +301044,8 @@ "x-permission": { "operator": "OR", "permissions": [ - "logs_read_data" + "logs_read_data", + "logs_read_config" ] }, "x-undo": { @@ -285624,8 +301954,10 @@ ], "x-menu-order": 1, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -286342,8 +302674,10 @@ ], "x-menu-order": 3, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -286841,8 +303175,10 @@ ], "x-menu-order": 1, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -287228,8 +303564,10 @@ ], "x-menu-order": 10, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -287404,8 +303742,10 @@ ], "x-menu-order": 9, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -287545,311 +303885,313 @@ "description": "Too many requests" } }, - "summary": "Delete a restriction query", + "summary": "Delete a restriction query", + "tags": [ + "Logs Restriction Queries" + ], + "x-codegen-request-body-name": "body", + "x-menu-order": 5, + "x-permission": { + "operator": "OR", + "permissions": [ + "user_access_manage" + ] + }, + "x-undo": { + "type": "idempotent" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + }, + "get": { + "description": "Get a restriction query in the organization specified by the restriction query's `restriction_query_id`.", + "operationId": "GetRestrictionQuery", + "parameters": [ + { + "description": "The ID of the restriction query.", + "in": "path", + "name": "restriction_query_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response containing information about a single restriction query.", + "properties": { + "data": { + "description": "Restriction query object returned by the API.", + "properties": { + "attributes": { + "description": "Attributes of the restriction query.", + "properties": { + "created_at": { + "description": "Creation time of the restriction query.", + "example": "2020-03-17T21:06:44.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "modified_at": { + "description": "Time of last restriction query modification.", + "example": "2020-03-17T21:15:15.000Z", + "format": "date-time", + "readOnly": true, + "type": "string" + }, + "restriction_query": { + "description": "The query that defines the restriction. Only the content matching the query can be returned.", + "example": "env:sandbox", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the restriction query.", + "example": "79a0e60a-644a-11ea-ad29-43329f7f58b5", + "type": "string" + }, + "relationships": { + "description": "Relationships of the restriction query object.", + "properties": { + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An array containing type and the unique identifier of a role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The unique identifier of the role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": [ + "roles" + ], + "example": "roles", + "type": "string", + "x-enum-varnames": [ + "ROLES" + ] + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "type": "object" + }, + "type": { + "default": "logs_restriction_queries", + "description": "Restriction query resource type.", + "enum": [ + "logs_restriction_queries" + ], + "example": "logs_restriction_queries", + "type": "string", + "x-enum-varnames": [ + "LOGS_RESTRICTION_QUERIES" + ] + } + }, + "type": "object" + }, + "included": { + "description": "Array of objects related to the restriction query.", + "items": { + "description": "An object related to a restriction query.", + "discriminator": { + "mapping": { + "roles": "#/components/schemas/RestrictionQueryRole" + }, + "propertyName": "type" + }, + "oneOf": [ + { + "description": "Partial role object.", + "properties": { + "attributes": { + "description": "Attributes of the role for a restriction query.", + "properties": { + "name": { + "description": "The role name.", + "example": "Datadog Admin Role", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "ID of the role.", + "example": "", + "type": "string" + }, + "type": { + "default": "roles", + "description": "Role resource type.", + "example": "roles", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + } + ] + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Authentication error" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get a restriction query", "tags": [ "Logs Restriction Queries" ], "x-codegen-request-body-name": "body", - "x-menu-order": 5, + "x-menu-order": 3, "x-permission": { "operator": "OR", "permissions": [ - "user_access_manage" + "logs_read_config" ] }, - "x-undo": { - "type": "idempotent" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - }, - "get": { - "description": "Get a restriction query in the organization specified by the restriction query's `restriction_query_id`.", - "operationId": "GetRestrictionQuery", - "parameters": [ - { - "description": "The ID of the restriction query.", - "in": "path", - "name": "restriction_query_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "Response containing information about a single restriction query.", - "properties": { - "data": { - "description": "Restriction query object returned by the API.", - "properties": { - "attributes": { - "description": "Attributes of the restriction query.", - "properties": { - "created_at": { - "description": "Creation time of the restriction query.", - "example": "2020-03-17T21:06:44.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "modified_at": { - "description": "Time of last restriction query modification.", - "example": "2020-03-17T21:15:15.000Z", - "format": "date-time", - "readOnly": true, - "type": "string" - }, - "restriction_query": { - "description": "The query that defines the restriction. Only the content matching the query can be returned.", - "example": "env:sandbox", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the restriction query.", - "example": "79a0e60a-644a-11ea-ad29-43329f7f58b5", - "type": "string" - }, - "relationships": { - "description": "Relationships of the restriction query object.", - "properties": { - "roles": { - "description": "Relationship to roles.", - "properties": { - "data": { - "description": "An array containing type and the unique identifier of a role.", - "items": { - "description": "Relationship to role object.", - "properties": { - "id": { - "description": "The unique identifier of the role.", - "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Roles type.", - "enum": [ - "roles" - ], - "example": "roles", - "type": "string", - "x-enum-varnames": [ - "ROLES" - ] - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - }, - "type": "array" - } - }, - "type": "object", - "x-merge-override": { - "required": false - } - } - }, - "type": "object" - }, - "type": { - "default": "logs_restriction_queries", - "description": "Restriction query resource type.", - "enum": [ - "logs_restriction_queries" - ], - "example": "logs_restriction_queries", - "type": "string", - "x-enum-varnames": [ - "LOGS_RESTRICTION_QUERIES" - ] - } - }, - "type": "object" - }, - "included": { - "description": "Array of objects related to the restriction query.", - "items": { - "description": "An object related to a restriction query.", - "discriminator": { - "mapping": { - "roles": "#/components/schemas/RestrictionQueryRole" - }, - "propertyName": "type" - }, - "oneOf": [ - { - "description": "Partial role object.", - "properties": { - "attributes": { - "description": "Attributes of the role for a restriction query.", - "properties": { - "name": { - "description": "The role name.", - "example": "Datadog Admin Role", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "ID of the role.", - "example": "", - "type": "string" - }, - "type": { - "default": "roles", - "description": "Role resource type.", - "example": "roles", - "readOnly": true, - "type": "string" - } - }, - "type": "object" - } - ] - }, - "type": "array" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Authentication error" - }, - "404": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "summary": "Get a restriction query", - "tags": [ - "Logs Restriction Queries" - ], - "x-codegen-request-body-name": "body", - "x-menu-order": 3, - "x-permission": { - "operator": "OPEN", - "permissions": [] - }, "x-undo": { "type": "safe" }, @@ -288495,8 +304837,10 @@ "x-codegen-request-body-name": "body", "x-menu-order": 6, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "logs_read_config" + ] }, "x-undo": { "type": "safe" @@ -310911,33 +327255,1149 @@ }, "type": "array" }, - "meta": { - "description": "Object describing meta attributes of response.", + "meta": { + "description": "Object describing meta attributes of response.", + "properties": { + "page": { + "description": "Pagination object.", + "properties": { + "total_count": { + "description": "Total count.", + "format": "int64", + "type": "integer" + }, + "total_filtered_count": { + "description": "Total count of elements matched by the filter.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object", + "x-merge-override": { + "properties": false + } + } + }, + "readOnly": true, + "type": "object" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Authentication error" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "user_access_manage" + ] + } + ], + "summary": "Add a user to a role", + "tags": [ + "Roles" + ], + "x-codegen-request-body-name": "body", + "x-given": { + "permission_role": { + "parameters": [ + { + "name": "role_id", + "source": "role.data.id" + }, + { + "name": "body", + "value": "{\n \"data\": {\n \"id\": \"{{ user.data.id }}\",\n \"type\": \"{{ user.data.type }}\"\n }\n}" + } + ], + "step": "the \"user\" has the \"role\"" + } + }, + "x-menu-order": 10, + "x-permission": { + "operator": "OR", + "permissions": [ + "user_access_manage" + ] + }, + "x-undo": { + "type": "safe" + } + } + }, + "/api/v2/rum/analytics/aggregate": { + "post": { + "description": "The API endpoint to aggregate RUM events into buckets of computed metrics and timeseries.", + "operationId": "AggregateRUMEvents", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "The object sent with the request to retrieve aggregation buckets of RUM events from your organization.", + "properties": { + "compute": { + "description": "The list of metrics or timeseries to compute for the retrieved buckets.", + "items": { + "description": "A compute rule to compute metrics or timeseries.", + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN" + ] + }, + "interval": { + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points.", + "example": "5m", + "type": "string" + }, + "metric": { + "description": "The metric to use.", + "example": "@duration", + "type": "string" + }, + "type": { + "default": "total", + "description": "The type of compute.", + "enum": [ + "timeseries", + "total" + ], + "type": "string", + "x-enum-varnames": [ + "TIMESERIES", + "TOTAL" + ] + } + }, + "required": [ + "aggregation" + ], + "type": "object" + }, + "type": "array" + }, + "filter": { + "description": "The search and filter query settings.", + "properties": { + "from": { + "default": "now-15m", + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", + "example": "now-15m", + "type": "string" + }, + "query": { + "default": "*", + "description": "The search query following the RUM search syntax.", + "example": "@type:session AND @session.type:user", + "type": "string" + }, + "to": { + "default": "now", + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", + "example": "now", + "type": "string" + } + }, + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group-by rule.", + "properties": { + "facet": { + "description": "The name of the facet to use (required).", + "example": "@view.time_spent", + "type": "string" + }, + "histogram": { + "description": "Used to perform a histogram computation (only for measure facets).\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval.", + "properties": { + "interval": { + "description": "The bin size of the histogram buckets.", + "example": 10, + "format": "double", + "type": "number" + }, + "max": { + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out).", + "example": 100, + "format": "double", + "type": "number" + }, + "min": { + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out).", + "example": 50, + "format": "double", + "type": "number" + } + }, + "required": [ + "interval", + "min", + "max" + ], + "type": "object" + }, + "limit": { + "default": 10, + "description": "The maximum buckets to return for this group-by.", + "format": "int64", + "type": "integer" + }, + "missing": { + "description": "The value to use for logs that don't have the facet used to group by.", + "oneOf": [ + { + "description": "The missing value to use if there is string valued facet.", + "type": "string" + }, + { + "description": "The missing value to use if there is a number valued facet.", + "format": "double", + "type": "number" + } + ] + }, + "sort": { + "description": "A sort rule.", + "example": { + "aggregation": "count", + "order": "asc" + }, + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN" + ] + }, + "metric": { + "description": "The metric to sort by (only used for `type=measure`).", + "example": "@duration", + "type": "string" + }, + "order": { + "description": "The order to use, ascending or descending.", + "enum": [ + "asc", + "desc" + ], + "example": "asc", + "type": "string", + "x-enum-varnames": [ + "ASCENDING", + "DESCENDING" + ] + }, + "type": { + "default": "alphabetical", + "description": "The type of sorting algorithm.", + "enum": [ + "alphabetical", + "measure" + ], + "type": "string", + "x-enum-varnames": [ + "ALPHABETICAL", + "MEASURE" + ] + } + }, + "type": "object" + }, + "total": { + "default": false, + "description": "A resulting object to put the given computes in over all the matching records.", + "oneOf": [ + { + "description": "If set to true, creates an additional bucket labeled \"$facet_total\".", + "type": "boolean" + }, + { + "description": "A string to use as the key value for the total bucket.", + "type": "string" + }, + { + "description": "A number to use as the key value for the total bucket.", + "format": "double", + "type": "number" + } + ] + } + }, + "required": [ + "facet" + ], + "type": "object" + }, + "type": "array" + }, + "options": { + "description": "Global query options that are used during the query.\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails.", + "properties": { + "time_offset": { + "description": "The time offset (in seconds) to apply to the query.", + "format": "int64", + "type": "integer" + }, + "timezone": { + "default": "UTC", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "example": "GMT", + "type": "string" + } + }, + "type": "object" + }, + "page": { + "description": "Paging attributes for listing events.", + "properties": { + "cursor": { + "description": "List following results with a cursor provided in the previous query.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + }, + "limit": { + "default": 10, + "description": "Maximum number of events in the response.", + "example": 25, + "format": "int32", + "maximum": 1000, + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The response object for the RUM events aggregate API endpoint.", + "properties": { + "data": { + "description": "The query results.", + "properties": { + "buckets": { + "description": "The list of matching buckets, one item per bucket.", + "items": { + "description": "Bucket values.", + "properties": { + "by": { + "additionalProperties": { + "description": "The values for each group-by.", + "type": "string" + }, + "description": "The key-value pairs for each group-by.", + "example": { + "@session.type": "user", + "@type": "view" + }, + "type": "object" + }, + "computes": { + "additionalProperties": { + "description": "A bucket value, can be either a timeseries or a single value.", + "oneOf": [ + { + "description": "A single string value.", + "type": "string" + }, + { + "description": "A single number value.", + "format": "double", + "type": "number" + }, + { + "description": "A timeseries array.", + "items": { + "description": "A timeseries point.", + "properties": { + "time": { + "description": "The time value for this point.", + "example": "2020-06-08T11:55:00.123Z", + "format": "date-time", + "type": "string" + }, + "value": { + "description": "The value for this point.", + "example": 19, + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "type": "array", + "x-generate-alias-as-model": true + } + ] + }, + "description": "A map of the metric name to value for regular compute, or a list of values for a timeseries.", + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "links": { + "description": "Links attributes.", + "properties": { + "next": { + "description": "Link for the next set of results. Note that the request can also be made using the\nPOST endpoint.", + "example": "https://app.datadoghq.com/api/v2/rum/event?filter[query]=foo&page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + } + }, + "type": "object" + }, + "meta": { + "description": "The metadata associated with a request.", + "properties": { + "elapsed": { + "description": "The time elapsed in milliseconds.", + "example": 132, + "format": "int64", + "type": "integer" + }, + "page": { + "description": "Paging attributes.", + "properties": { + "after": { + "description": "The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of `page[cursor]`.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + } + }, + "type": "object" + }, + "request_id": { + "description": "The identifier of the request.", + "example": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR", + "type": "string" + }, + "status": { + "description": "The status of the response.", + "enum": [ + "done", + "timeout" + ], + "example": "done", + "type": "string", + "x-enum-varnames": [ + "DONE", + "TIMEOUT" + ] + }, + "warnings": { + "description": "A list of warnings (non-fatal errors) encountered. Partial results may return if\nwarnings are present in the response.", + "items": { + "description": "A warning message indicating something that went wrong with the query.", + "properties": { + "code": { + "description": "A unique code for this type of warning.", + "example": "unknown_index", + "type": "string" + }, + "detail": { + "description": "A detailed explanation of this specific warning.", + "example": "indexes: foo, bar", + "type": "string" + }, + "title": { + "description": "A short human-readable summary of the warning.", + "example": "One or several indexes are missing or invalid, results hold data from the other indexes", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [] + } + ], + "summary": "Aggregate RUM events", + "tags": [ + "RUM" + ], + "x-codegen-request-body-name": "body", + "x-menu-order": 3, + "x-permission": { + "operator": "OPEN", + "permissions": [] + }, + "x-undo": { + "type": "safe" + } + } + }, + "/api/v2/rum/applications": { + "get": { + "description": "List all the RUM applications in your organization.", + "operationId": "GetRUMApplications", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "RUM applications response.", + "properties": { + "data": { + "description": "RUM applications array response.", + "items": { + "description": "RUM application list.", + "properties": { + "attributes": { + "description": "RUM application list attributes.", + "properties": { + "application_id": { + "description": "ID of the RUM application.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } + }, + "created_at": { + "description": "Timestamp in ms of the creation date.", + "example": 1659479836169, + "format": "int64", + "type": "integer" + }, + "created_by_handle": { + "description": "Handle of the creator user.", + "example": "john.doe", + "type": "string" + }, + "hash": { + "description": "Hash of the RUM application. Optional.", + "type": "string" + }, + "is_active": { + "description": "Indicates if the RUM application is active.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the RUM application.", + "example": "my_rum_application", + "type": "string" + }, + "org_id": { + "description": "Org ID of the RUM application.", + "example": 999, + "format": "int32", + "maximum": 2147483647, + "type": "integer" + }, + "type": { + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "example": "browser", + "type": "string" + }, + "updated_at": { + "description": "Timestamp in ms of the last update date.", + "example": 1659479836169, + "format": "int64", + "type": "integer" + }, + "updated_by_handle": { + "description": "Handle of the updater user.", + "example": "jane.doe", + "type": "string" + } + }, + "required": [ + "application_id", + "created_at", + "created_by_handle", + "name", + "org_id", + "type", + "updated_at", + "updated_by_handle" + ], + "type": "object" + }, + "id": { + "description": "RUM application ID.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } + }, + "type": { + "default": "rum_application", + "description": "RUM application list type.", + "enum": [ + "rum_application" + ], + "example": "rum_application", + "type": "string", + "x-enum-varnames": [ + "RUM_APPLICATION" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "OK" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "List all the RUM applications", + "tags": [ + "RUM" + ], + "x-menu-order": 8, + "x-permission": { + "operator": "OR", + "permissions": [ + "rum_apps_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "post": { + "description": "Create a new RUM application in your organization.", + "operationId": "CreateRUMApplication", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "RUM application creation request attributes.", + "properties": { + "data": { + "description": "RUM application creation.", + "properties": { + "attributes": { + "description": "RUM application creation attributes.", + "properties": { + "name": { + "description": "Name of the RUM application.", + "example": "my_new_rum_application", + "type": "string" + }, + "type": { + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "example": "browser", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": { + "default": "rum_application_create", + "description": "RUM application creation type.", + "enum": [ + "rum_application_create" + ], + "example": "rum_application_create", + "type": "string", + "x-enum-varnames": [ + "RUM_APPLICATION_CREATE" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object", + "x-merge-override": { + "required": false + } + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "RUM application response.", + "properties": { + "data": { + "description": "RUM application.", "properties": { - "page": { - "description": "Pagination object.", + "attributes": { + "description": "RUM application attributes.", "properties": { - "total_count": { - "description": "Total count.", + "application_id": { + "description": "ID of the RUM application.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } + }, + "client_token": { + "description": "Client token of the RUM application.", + "example": "abcd1234efgh5678ijkl90abcd1234efgh0", + "type": "string" + }, + "created_at": { + "description": "Timestamp in ms of the creation date.", + "example": 1659479836169, "format": "int64", "type": "integer" }, - "total_filtered_count": { - "description": "Total count of elements matched by the filter.", + "created_by_handle": { + "description": "Handle of the creator user.", + "example": "john.doe", + "type": "string" + }, + "hash": { + "description": "Hash of the RUM application. Optional.", + "type": "string" + }, + "is_active": { + "description": "Indicates if the RUM application is active.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the RUM application.", + "example": "my_rum_application", + "type": "string" + }, + "org_id": { + "description": "Org ID of the RUM application.", + "example": 999, + "format": "int32", + "maximum": 2147483647, + "type": "integer" + }, + "type": { + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "example": "browser", + "type": "string" + }, + "updated_at": { + "description": "Timestamp in ms of the last update date.", + "example": 1659479836169, "format": "int64", "type": "integer" + }, + "updated_by_handle": { + "description": "Handle of the updater user.", + "example": "jane.doe", + "type": "string" } }, + "required": [ + "application_id", + "client_token", + "created_at", + "created_by_handle", + "name", + "org_id", + "type", + "updated_at", + "updated_by_handle" + ], "type": "object" + }, + "id": { + "description": "RUM application ID.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } + }, + "type": { + "default": "rum_application", + "description": "RUM application response type.", + "enum": [ + "rum_application" + ], + "example": "rum_application", + "type": "string", + "x-enum-varnames": [ + "RUM_APPLICATION" + ] } }, - "type": "object", - "x-merge-override": { - "properties": false - } + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" } }, - "readOnly": true, "type": "object" } } @@ -310972,7 +328432,7 @@ }, "description": "Bad Request" }, - "403": { + "429": { "content": { "application/json": { "schema": { @@ -310998,7 +328458,66 @@ } } }, - "description": "Authentication error" + "description": "Too many requests" + } + }, + "summary": "Create a new RUM application", + "tags": [ + "RUM" + ], + "x-codegen-request-body-name": "body", + "x-given": { + "rum_application": { + "parameters": [ + { + "name": "body", + "value": "{ \"data\": {\n \"type\": \"rum_application_create\",\n \"attributes\": {\n \"name\": \"test-rum-{{ unique_hash }}\",\n \"type\": \"ios\"\n }\n }\n}" + } + ], + "step": "there is a valid \"rum_application\" in the system" + } + }, + "x-menu-order": 7, + "x-permission": { + "operator": "OR", + "permissions": [ + "rum_apps_write" + ] + }, + "x-undo": { + "operationId": "DeleteRUMApplication", + "parameters": [ + { + "name": "id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "x-merge-override": { + "get": false, + "post": false + } + }, + "/api/v2/rum/applications/{id}": { + "delete": { + "description": "Delete an existing RUM application in your organization.", + "operationId": "DeleteRUMApplication", + "parameters": [ + { + "description": "RUM application ID.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" }, "404": { "content": { @@ -311026,7 +328545,7 @@ } } }, - "description": "Not found" + "description": "Not Found" }, "429": { "content": { @@ -311057,349 +328576,300 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "user_access_manage" - ] - } - ], - "summary": "Add a user to a role", + "summary": "Delete a RUM application", "tags": [ - "Roles" + "RUM" ], - "x-codegen-request-body-name": "body", - "x-given": { - "permission_role": { - "parameters": [ - { - "name": "role_id", - "source": "role.data.id" - }, - { - "name": "body", - "value": "{\n \"data\": {\n \"id\": \"{{ user.data.id }}\",\n \"type\": \"{{ user.data.type }}\"\n }\n}" - } - ], - "step": "the \"user\" has the \"role\"" - } - }, - "x-menu-order": 10, + "x-menu-order": 6, "x-permission": { "operator": "OR", "permissions": [ - "user_access_manage" + "rum_apps_write" ] }, "x-undo": { - "type": "safe" + "type": "idempotent" } - } - }, - "/api/v2/rum/analytics/aggregate": { - "post": { - "description": "The API endpoint to aggregate RUM events into buckets of computed metrics and timeseries.", - "operationId": "AggregateRUMEvents", - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "The object sent with the request to retrieve aggregation buckets of RUM events from your organization.", - "properties": { - "compute": { - "description": "The list of metrics or timeseries to compute for the retrieved buckets.", - "items": { - "description": "A compute rule to compute metrics or timeseries.", - "properties": { - "aggregation": { - "description": "An aggregation function.", - "enum": [ - "count", - "cardinality", - "pc75", - "pc90", - "pc95", - "pc98", - "pc99", - "sum", - "min", - "max", - "avg", - "median" - ], - "example": "pc90", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "PERCENTILE_75", - "PERCENTILE_90", - "PERCENTILE_95", - "PERCENTILE_98", - "PERCENTILE_99", - "SUM", - "MIN", - "MAX", - "AVG", - "MEDIAN" - ] - }, - "interval": { - "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points.", - "example": "5m", - "type": "string" - }, - "metric": { - "description": "The metric to use.", - "example": "@duration", - "type": "string" - }, - "type": { - "default": "total", - "description": "The type of compute.", - "enum": [ - "timeseries", - "total" - ], - "type": "string", - "x-enum-varnames": [ - "TIMESERIES", - "TOTAL" - ] - } - }, - "required": [ - "aggregation" - ], - "type": "object" - }, - "type": "array" - }, - "filter": { - "description": "The search and filter query settings.", - "properties": { - "from": { - "default": "now-15m", - "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", - "example": "now-15m", - "type": "string" - }, - "query": { - "default": "*", - "description": "The search query following the RUM search syntax.", - "example": "@type:session AND @session.type:user", - "type": "string" - }, - "to": { - "default": "now", - "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", - "example": "now", - "type": "string" - } - }, - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group-by rule.", + }, + "get": { + "description": "Get the RUM application with given ID in your organization.", + "operationId": "GetRUMApplication", + "parameters": [ + { + "description": "RUM application ID.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "RUM application response.", + "properties": { + "data": { + "description": "RUM application.", "properties": { - "facet": { - "description": "The name of the facet to use (required).", - "example": "@view.time_spent", - "type": "string" - }, - "histogram": { - "description": "Used to perform a histogram computation (only for measure facets).\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval.", + "attributes": { + "description": "RUM application attributes.", "properties": { - "interval": { - "description": "The bin size of the histogram buckets.", - "example": 10, - "format": "double", - "type": "number" + "application_id": { + "description": "ID of the RUM application.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } }, - "max": { - "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out).", - "example": 100, - "format": "double", - "type": "number" + "client_token": { + "description": "Client token of the RUM application.", + "example": "abcd1234efgh5678ijkl90abcd1234efgh0", + "type": "string" }, - "min": { - "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out).", - "example": 50, - "format": "double", - "type": "number" - } - }, - "required": [ - "interval", - "min", - "max" - ], - "type": "object" - }, - "limit": { - "default": 10, - "description": "The maximum buckets to return for this group-by.", - "format": "int64", - "type": "integer" - }, - "missing": { - "description": "The value to use for logs that don't have the facet used to group by.", - "oneOf": [ - { - "description": "The missing value to use if there is string valued facet.", + "created_at": { + "description": "Timestamp in ms of the creation date.", + "example": 1659479836169, + "format": "int64", + "type": "integer" + }, + "created_by_handle": { + "description": "Handle of the creator user.", + "example": "john.doe", "type": "string" }, - { - "description": "The missing value to use if there is a number valued facet.", - "format": "double", - "type": "number" - } - ] - }, - "sort": { - "description": "A sort rule.", - "example": { - "aggregation": "count", - "order": "asc" - }, - "properties": { - "aggregation": { - "description": "An aggregation function.", - "enum": [ - "count", - "cardinality", - "pc75", - "pc90", - "pc95", - "pc98", - "pc99", - "sum", - "min", - "max", - "avg", - "median" - ], - "example": "pc90", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "CARDINALITY", - "PERCENTILE_75", - "PERCENTILE_90", - "PERCENTILE_95", - "PERCENTILE_98", - "PERCENTILE_99", - "SUM", - "MIN", - "MAX", - "AVG", - "MEDIAN" - ] + "hash": { + "description": "Hash of the RUM application. Optional.", + "type": "string" }, - "metric": { - "description": "The metric to sort by (only used for `type=measure`).", - "example": "@duration", + "is_active": { + "description": "Indicates if the RUM application is active.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the RUM application.", + "example": "my_rum_application", "type": "string" }, - "order": { - "description": "The order to use, ascending or descending.", - "enum": [ - "asc", - "desc" - ], - "example": "asc", - "type": "string", - "x-enum-varnames": [ - "ASCENDING", - "DESCENDING" - ] + "org_id": { + "description": "Org ID of the RUM application.", + "example": 999, + "format": "int32", + "maximum": 2147483647, + "type": "integer" }, "type": { - "default": "alphabetical", - "description": "The type of sorting algorithm.", - "enum": [ - "alphabetical", - "measure" - ], - "type": "string", - "x-enum-varnames": [ - "ALPHABETICAL", - "MEASURE" - ] + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "example": "browser", + "type": "string" + }, + "updated_at": { + "description": "Timestamp in ms of the last update date.", + "example": 1659479836169, + "format": "int64", + "type": "integer" + }, + "updated_by_handle": { + "description": "Handle of the updater user.", + "example": "jane.doe", + "type": "string" } }, + "required": [ + "application_id", + "client_token", + "created_at", + "created_by_handle", + "name", + "org_id", + "type", + "updated_at", + "updated_by_handle" + ], "type": "object" }, - "total": { - "default": false, - "description": "A resulting object to put the given computes in over all the matching records.", - "oneOf": [ - { - "description": "If set to true, creates an additional bucket labeled \"$facet_total\".", - "type": "boolean" - }, - { - "description": "A string to use as the key value for the total bucket.", - "type": "string" - }, - { - "description": "A number to use as the key value for the total bucket.", - "format": "double", - "type": "number" - } + "id": { + "description": "RUM application ID.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } + }, + "type": { + "default": "rum_application", + "description": "RUM application response type.", + "enum": [ + "rum_application" + ], + "example": "rum_application", + "type": "string", + "x-enum-varnames": [ + "RUM_APPLICATION" ] } }, "required": [ - "facet" + "attributes", + "id", + "type" ], "type": "object" - }, - "type": "array" + } }, - "options": { - "description": "Global query options that are used during the query.\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails.", - "properties": { - "time_offset": { - "description": "The time offset (in seconds) to apply to the query.", - "format": "int64", - "type": "integer" + "type": "object" + } + } + }, + "description": "OK" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, - "timezone": { - "default": "UTC", - "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", - "example": "GMT", + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", "type": "string" - } - }, - "type": "object" + }, + "type": "array" + } }, - "page": { - "description": "Paging attributes for listing events.", + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "summary": "Get a RUM application", + "tags": [ + "RUM" + ], + "x-menu-order": 5, + "x-permission": { + "operator": "OR", + "permissions": [ + "rum_apps_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "patch": { + "description": "Update the RUM application with given ID in your organization.", + "operationId": "UpdateRUMApplication", + "parameters": [ + { + "description": "RUM application ID.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "RUM application update request.", + "properties": { + "data": { + "description": "RUM application update.", "properties": { - "cursor": { - "description": "List following results with a cursor provided in the previous query.", - "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "type": "string" + "attributes": { + "description": "RUM application update attributes.", + "properties": { + "name": { + "description": "Name of the RUM application.", + "example": "updated_name_for_my_existing_rum_application", + "type": "string" + }, + "type": { + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "example": "browser", + "type": "string" + } + }, + "type": "object" }, - "limit": { - "default": 10, - "description": "Maximum number of events in the response.", - "example": 25, - "format": "int32", - "maximum": 1000, - "type": "integer" + "id": { + "description": "RUM application ID.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } + }, + "type": { + "default": "rum_application_update", + "description": "RUM application update type.", + "enum": [ + "rum_application_update" + ], + "example": "rum_application_update", + "type": "string", + "x-enum-varnames": [ + "RUM_APPLICATION_UPDATE" + ] } }, + "required": [ + "id", + "type" + ], "type": "object" } }, + "required": [ + "data" + ], "type": "object" } } @@ -311411,152 +328881,115 @@ "content": { "application/json": { "schema": { - "description": "The response object for the RUM events aggregate API endpoint.", + "description": "RUM application response.", "properties": { "data": { - "description": "The query results.", + "description": "RUM application.", "properties": { - "buckets": { - "description": "The list of matching buckets, one item per bucket.", - "items": { - "description": "Bucket values.", - "properties": { - "by": { - "additionalProperties": { - "description": "The values for each group-by.", - "type": "string" - }, - "description": "The key-value pairs for each group-by.", - "example": { - "@session.type": "user", - "@type": "view" - }, - "type": "object" - }, - "computes": { - "additionalProperties": { - "description": "A bucket value, can be either a timeseries or a single value.", - "oneOf": [ - { - "description": "A single string value.", - "type": "string" - }, - { - "description": "A single number value.", - "format": "double", - "type": "number" - }, - { - "description": "A timeseries array.", - "items": { - "description": "A timeseries point.", - "properties": { - "time": { - "description": "The time value for this point.", - "example": "2020-06-08T11:55:00.123Z", - "format": "date-time", - "type": "string" - }, - "value": { - "description": "The value for this point.", - "example": 19, - "format": "double", - "type": "number" - } - }, - "type": "object" - }, - "type": "array", - "x-generate-alias-as-model": true - } - ] - }, - "description": "A map of the metric name to value for regular compute, or a list of values for a timeseries.", - "type": "object" + "attributes": { + "description": "RUM application attributes.", + "properties": { + "application_id": { + "description": "ID of the RUM application.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false } }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "links": { - "description": "Links attributes.", - "properties": { - "next": { - "description": "Link for the next set of results. Note that the request can also be made using the\nPOST endpoint.", - "example": "https://app.datadoghq.com/api/v2/rum/event?filter[query]=foo&page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "type": "string" - } - }, - "type": "object" - }, - "meta": { - "description": "The metadata associated with a request.", - "properties": { - "elapsed": { - "description": "The time elapsed in milliseconds.", - "example": 132, - "format": "int64", - "type": "integer" - }, - "page": { - "description": "Paging attributes.", - "properties": { - "after": { - "description": "The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of `page[cursor]`.", - "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "client_token": { + "description": "Client token of the RUM application.", + "example": "abcd1234efgh5678ijkl90abcd1234efgh0", + "type": "string" + }, + "created_at": { + "description": "Timestamp in ms of the creation date.", + "example": 1659479836169, + "format": "int64", + "type": "integer" + }, + "created_by_handle": { + "description": "Handle of the creator user.", + "example": "john.doe", + "type": "string" + }, + "hash": { + "description": "Hash of the RUM application. Optional.", + "type": "string" + }, + "is_active": { + "description": "Indicates if the RUM application is active.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the RUM application.", + "example": "my_rum_application", + "type": "string" + }, + "org_id": { + "description": "Org ID of the RUM application.", + "example": 999, + "format": "int32", + "maximum": 2147483647, + "type": "integer" + }, + "type": { + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "example": "browser", + "type": "string" + }, + "updated_at": { + "description": "Timestamp in ms of the last update date.", + "example": 1659479836169, + "format": "int64", + "type": "integer" + }, + "updated_by_handle": { + "description": "Handle of the updater user.", + "example": "jane.doe", "type": "string" } }, + "required": [ + "application_id", + "client_token", + "created_at", + "created_by_handle", + "name", + "org_id", + "type", + "updated_at", + "updated_by_handle" + ], "type": "object" }, - "request_id": { - "description": "The identifier of the request.", - "example": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR", - "type": "string" + "id": { + "description": "RUM application ID.", + "example": "abcd1234-0000-0000-abcd-1234abcd5678", + "type": "string", + "x-merge-override": { + "format": false + } }, - "status": { - "description": "The status of the response.", - "enum": [ - "done", - "timeout" + "type": { + "default": "rum_application", + "description": "RUM application response type.", + "enum": [ + "rum_application" ], - "example": "done", + "example": "rum_application", "type": "string", "x-enum-varnames": [ - "DONE", - "TIMEOUT" + "RUM_APPLICATION" ] - }, - "warnings": { - "description": "A list of warnings (non-fatal errors) encountered. Partial results may return if\nwarnings are present in the response.", - "items": { - "description": "A warning message indicating something that went wrong with the query.", - "properties": { - "code": { - "description": "A unique code for this type of warning.", - "example": "unknown_index", - "type": "string" - }, - "detail": { - "description": "A detailed explanation of this specific warning.", - "example": "indexes: foo, bar", - "type": "string" - }, - "title": { - "description": "A short human-readable summary of the warning.", - "example": "One or several indexes are missing or invalid, results hold data from the other indexes", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" } }, + "required": [ + "attributes", + "id", + "type" + ], "type": "object" } }, @@ -311594,7 +329027,7 @@ }, "description": "Bad Request" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -311620,7 +329053,35 @@ } } }, - "description": "Not Authorized" + "description": "Not Found" + }, + "422": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Unprocessable Entity." }, "429": { "content": { @@ -311651,147 +329112,171 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [] - } - ], - "summary": "Aggregate RUM events", + "summary": "Update a RUM application", "tags": [ "RUM" ], "x-codegen-request-body-name": "body", - "x-menu-order": 3, + "x-menu-order": 4, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "OR", + "permissions": [ + "rum_apps_write" + ] }, "x-undo": { - "type": "safe" + "type": "idempotent" } + }, + "x-merge-override": { + "delete": true, + "get": false, + "patch": false } }, - "/api/v2/rum/applications": { + "/api/v2/rum/config/metrics": { "get": { - "description": "List all the RUM applications in your organization.", - "operationId": "GetRUMApplications", + "description": "Get the list of configured rum-based metrics with their definitions.", + "operationId": "ListRumMetrics", "responses": { "200": { "content": { "application/json": { "schema": { - "description": "RUM applications response.", + "description": "All the available rum-based metric objects.", "properties": { "data": { - "description": "RUM applications array response.", + "description": "A list of rum-based metric objects.", "items": { - "description": "RUM application list.", + "description": "The rum-based metric properties.", "properties": { "attributes": { - "description": "RUM application list attributes.", + "description": "The object describing a Datadog rum-based metric.", "properties": { - "application_id": { - "description": "ID of the RUM application.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } - }, - "created_at": { - "description": "Timestamp in ms of the creation date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" - }, - "created_by_handle": { - "description": "Handle of the creator user.", - "example": "john.doe", - "type": "string" - }, - "hash": { - "description": "Hash of the RUM application. Optional.", - "type": "string" - }, - "is_active": { - "description": "Indicates if the RUM application is active.", - "example": true, - "type": "boolean" - }, - "name": { - "description": "Name of the RUM application.", - "example": "my_rum_application", - "type": "string" + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", + "example": true, + "type": "boolean" + }, + "path": { + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", + "example": "@duration", + "type": "string" + } + }, + "type": "object" }, - "org_id": { - "description": "Org ID of the RUM application.", - "example": 999, - "format": "int32", - "maximum": 2147483647, - "type": "integer" + "event_type": { + "description": "The type of RUM events to filter on.", + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "example": "session", + "type": "string", + "x-enum-varnames": [ + "SESSION", + "VIEW", + "ACTION", + "ERROR", + "RESOURCE", + "LONG_TASK", + "VITAL" + ] }, - "type": { - "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", - "example": "browser", - "type": "string" + "filter": { + "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "description": "The search query - following the RUM search syntax.", + "example": "service:web* AND @http.status_code:[200 TO 299]", + "type": "string" + } + }, + "type": "object" }, - "updated_at": { - "description": "Timestamp in ms of the last update date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the rum-based metric will be aggregated over.", + "example": "@http.status_code", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", + "example": "status_code", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" }, - "updated_by_handle": { - "description": "Handle of the updater user.", - "example": "jane.doe", - "type": "string" + "uniqueness": { + "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", + "properties": { + "when": { + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", + "enum": [ + "match", + "end" + ], + "example": "match", + "type": "string", + "x-enum-varnames": [ + "WHEN_MATCH", + "WHEN_END" + ] + } + }, + "type": "object" } }, - "required": [ - "application_id", - "created_at", - "created_by_handle", - "name", - "org_id", - "type", - "updated_at", - "updated_by_handle" - ], "type": "object" }, "id": { - "description": "RUM application ID.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string" }, "type": { - "default": "rum_application", - "description": "RUM application list type.", + "default": "rum_metrics", + "description": "The type of the resource. The value should always be rum_metrics.", "enum": [ - "rum_application" + "rum_metrics" ], - "example": "rum_application", + "example": "rum_metrics", "type": "string", "x-enum-varnames": [ - "RUM_APPLICATION" + "RUM_METRICS" ] } }, - "required": [ - "attributes", - "type" - ], - "type": "object", - "x-merge-override": { - "required": false - } + "type": "object" }, "type": "array" } @@ -311802,7 +329287,7 @@ }, "description": "OK" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -311828,7 +329313,7 @@ } } }, - "description": "Not Found" + "description": "Not Authorized" }, "429": { "content": { @@ -311859,73 +329344,176 @@ "description": "Too many requests" } }, - "summary": "List all the RUM applications", + "summary": "Get all rum-based metrics", "tags": [ - "RUM" + "Rum Metrics" ], - "x-menu-order": 8, - "x-permission": { - "operator": "OR", - "permissions": [ - "rum_apps_read" - ] - }, + "x-menu-order": 1, "x-undo": { "type": "safe" } }, "post": { - "description": "Create a new RUM application in your organization.", - "operationId": "CreateRUMApplication", + "description": "Create a metric based on your organization's RUM data.\nReturns the rum-based metric object from the request body when the request is successful.", + "operationId": "CreateRumMetric", "requestBody": { "content": { "application/json": { "schema": { - "description": "RUM application creation request attributes.", + "description": "The new rum-based metric body.", "properties": { "data": { - "description": "RUM application creation.", + "description": "The new rum-based metric properties.", "properties": { "attributes": { - "description": "RUM application creation attributes.", + "description": "The object describing the Datadog rum-based metric to create.", "properties": { - "name": { - "description": "Name of the RUM application.", - "example": "my_new_rum_application", - "type": "string" + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", + "example": true, + "type": "boolean" + }, + "path": { + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", + "example": "@duration", + "type": "string" + } + }, + "required": [ + "aggregation_type" + ], + "type": "object" }, - "type": { - "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", - "example": "browser", - "type": "string" + "event_type": { + "description": "The type of RUM events to filter on.", + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "example": "session", + "type": "string", + "x-enum-varnames": [ + "SESSION", + "VIEW", + "ACTION", + "ERROR", + "RESOURCE", + "LONG_TASK", + "VITAL" + ] + }, + "filter": { + "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "default": "*", + "description": "The search query - following the RUM search syntax.", + "example": "@service:web-ui: ", + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the rum-based metric will be aggregated over.", + "example": "@browser.name", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", + "example": "browser_name", + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "type": "array" + }, + "uniqueness": { + "description": "The rule to count updatable events. Is only set if `event_type` is `sessions` or `views`.", + "properties": { + "when": { + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", + "enum": [ + "match", + "end" + ], + "example": "match", + "type": "string", + "x-enum-varnames": [ + "WHEN_MATCH", + "WHEN_END" + ] + } + }, + "required": [ + "when" + ], + "type": "object" } }, "required": [ - "name" + "event_type", + "compute" ], "type": "object" }, + "id": { + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string" + }, "type": { - "default": "rum_application_create", - "description": "RUM application creation type.", + "default": "rum_metrics", + "description": "The type of the resource. The value should always be rum_metrics.", "enum": [ - "rum_application_create" + "rum_metrics" ], - "example": "rum_application_create", + "example": "rum_metrics", "type": "string", "x-enum-varnames": [ - "RUM_APPLICATION_CREATE" + "RUM_METRICS" ] } }, "required": [ - "attributes", - "type" + "id", + "type", + "attributes" ], - "type": "object", - "x-merge-override": { - "required": false - } + "type": "object" } }, "required": [ @@ -311935,122 +329523,145 @@ } } }, + "description": "The definition of the new rum-based metric.", "required": true }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "description": "RUM application response.", + "description": "The rum-based metric object.", "properties": { "data": { - "description": "RUM application.", + "description": "The rum-based metric properties.", "properties": { "attributes": { - "description": "RUM application attributes.", + "description": "The object describing a Datadog rum-based metric.", "properties": { - "application_id": { - "description": "ID of the RUM application.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } - }, - "client_token": { - "description": "Client token of the RUM application.", - "example": "abcd1234efgh5678ijkl90abcd1234efgh0", - "type": "string" - }, - "created_at": { - "description": "Timestamp in ms of the creation date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" - }, - "created_by_handle": { - "description": "Handle of the creator user.", - "example": "john.doe", - "type": "string" - }, - "hash": { - "description": "Hash of the RUM application. Optional.", - "type": "string" - }, - "is_active": { - "description": "Indicates if the RUM application is active.", - "example": true, - "type": "boolean" - }, - "name": { - "description": "Name of the RUM application.", - "example": "my_rum_application", - "type": "string" + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", + "example": true, + "type": "boolean" + }, + "path": { + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", + "example": "@duration", + "type": "string" + } + }, + "type": "object" }, - "org_id": { - "description": "Org ID of the RUM application.", - "example": 999, - "format": "int32", - "maximum": 2147483647, - "type": "integer" + "event_type": { + "description": "The type of RUM events to filter on.", + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "example": "session", + "type": "string", + "x-enum-varnames": [ + "SESSION", + "VIEW", + "ACTION", + "ERROR", + "RESOURCE", + "LONG_TASK", + "VITAL" + ] }, - "type": { - "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", - "example": "browser", - "type": "string" + "filter": { + "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "description": "The search query - following the RUM search syntax.", + "example": "service:web* AND @http.status_code:[200 TO 299]", + "type": "string" + } + }, + "type": "object" }, - "updated_at": { - "description": "Timestamp in ms of the last update date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the rum-based metric will be aggregated over.", + "example": "@http.status_code", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", + "example": "status_code", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" }, - "updated_by_handle": { - "description": "Handle of the updater user.", - "example": "jane.doe", - "type": "string" + "uniqueness": { + "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", + "properties": { + "when": { + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", + "enum": [ + "match", + "end" + ], + "example": "match", + "type": "string", + "x-enum-varnames": [ + "WHEN_MATCH", + "WHEN_END" + ] + } + }, + "type": "object" } }, - "required": [ - "application_id", - "client_token", - "created_at", - "created_by_handle", - "name", - "org_id", - "type", - "updated_at", - "updated_by_handle" - ], "type": "object" }, "id": { - "description": "RUM application ID.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string" }, "type": { - "default": "rum_application", - "description": "RUM application response type.", + "default": "rum_metrics", + "description": "The type of the resource. The value should always be rum_metrics.", "enum": [ - "rum_application" + "rum_metrics" ], - "example": "rum_application", + "example": "rum_metrics", "type": "string", "x-enum-varnames": [ - "RUM_APPLICATION" + "RUM_METRICS" ] } }, - "required": [ - "attributes", - "id", - "type" - ], "type": "object" } }, @@ -312058,7 +329669,7 @@ } } }, - "description": "OK" + "description": "Created" }, "400": { "content": { @@ -312088,6 +329699,62 @@ }, "description": "Bad Request" }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, + "409": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Conflict" + }, "429": { "content": { "application/json": { @@ -312117,54 +329784,44 @@ "description": "Too many requests" } }, - "summary": "Create a new RUM application", + "summary": "Create a rum-based metric", "tags": [ - "RUM" + "Rum Metrics" ], "x-codegen-request-body-name": "body", "x-given": { - "rum_application": { + "rum_metric": { "parameters": [ { "name": "body", - "value": "{ \"data\": {\n \"type\": \"rum_application_create\",\n \"attributes\": {\n \"name\": \"test-rum-{{ unique_hash }}\",\n \"type\": \"ios\"\n }\n }\n}" + "value": "{\n \"data\": {\n \"id\": \"{{ unique_lower_alnum }}\",\n \"type\": \"rum_metrics\",\n \"attributes\": {\n \"event_type\": \"session\",\n \"compute\": {\n \"aggregation_type\": \"distribution\",\n \"include_percentiles\": true,\n \"path\": \"@duration\"\n },\n \"filter\": {\n \"query\": \"source:{{ unique }}\"\n },\n \"group_by\": [{\n \"path\": \"@browser.name\",\n \"tag_name\": \"browser_name\"\n }],\n \"uniqueness\": {\n \"when\": \"match\"\n }\n }\n }\n}" } ], - "step": "there is a valid \"rum_application\" in the system" + "step": "there is a valid \"rum_metric\" in the system" } }, - "x-menu-order": 7, - "x-permission": { - "operator": "OR", - "permissions": [ - "rum_apps_write" - ] - }, + "x-menu-order": 2, "x-undo": { - "operationId": "DeleteRUMApplication", + "operationId": "DeleteRumMetric", "parameters": [ { - "name": "id", + "name": "metric_id", "source": "data.id" } ], "type": "unsafe" } - }, - "x-merge-override": { - "get": false, - "post": false } }, - "/api/v2/rum/applications/{id}": { + "/api/v2/rum/config/metrics/{metric_id}": { "delete": { - "description": "Delete an existing RUM application in your organization.", - "operationId": "DeleteRUMApplication", + "description": "Delete a specific rum-based metric from your organization.", + "operationId": "DeleteRumMetric", "parameters": [ { - "description": "RUM application ID.", + "description": "The name of the rum-based metric.", "in": "path", - "name": "id", + "name": "metric_id", "required": true, "schema": { "type": "string" @@ -312175,6 +329832,34 @@ "204": { "description": "No Content" }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, "404": { "content": { "application/json": { @@ -312232,29 +329917,23 @@ "description": "Too many requests" } }, - "summary": "Delete a RUM application", + "summary": "Delete a rum-based metric", "tags": [ - "RUM" + "Rum Metrics" ], - "x-menu-order": 6, - "x-permission": { - "operator": "OR", - "permissions": [ - "rum_apps_write" - ] - }, + "x-menu-order": 5, "x-undo": { "type": "idempotent" } }, "get": { - "description": "Get the RUM application with given ID in your organization.", - "operationId": "GetRUMApplication", + "description": "Get a specific rum-based metric from your organization.", + "operationId": "GetRumMetric", "parameters": [ { - "description": "RUM application ID.", + "description": "The name of the rum-based metric.", "in": "path", - "name": "id", + "name": "metric_id", "required": true, "schema": { "type": "string" @@ -312266,115 +329945,137 @@ "content": { "application/json": { "schema": { - "description": "RUM application response.", + "description": "The rum-based metric object.", "properties": { "data": { - "description": "RUM application.", + "description": "The rum-based metric properties.", "properties": { "attributes": { - "description": "RUM application attributes.", + "description": "The object describing a Datadog rum-based metric.", "properties": { - "application_id": { - "description": "ID of the RUM application.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } - }, - "client_token": { - "description": "Client token of the RUM application.", - "example": "abcd1234efgh5678ijkl90abcd1234efgh0", - "type": "string" - }, - "created_at": { - "description": "Timestamp in ms of the creation date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" - }, - "created_by_handle": { - "description": "Handle of the creator user.", - "example": "john.doe", - "type": "string" - }, - "hash": { - "description": "Hash of the RUM application. Optional.", - "type": "string" - }, - "is_active": { - "description": "Indicates if the RUM application is active.", - "example": true, - "type": "boolean" - }, - "name": { - "description": "Name of the RUM application.", - "example": "my_rum_application", - "type": "string" + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", + "example": true, + "type": "boolean" + }, + "path": { + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", + "example": "@duration", + "type": "string" + } + }, + "type": "object" }, - "org_id": { - "description": "Org ID of the RUM application.", - "example": 999, - "format": "int32", - "maximum": 2147483647, - "type": "integer" + "event_type": { + "description": "The type of RUM events to filter on.", + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "example": "session", + "type": "string", + "x-enum-varnames": [ + "SESSION", + "VIEW", + "ACTION", + "ERROR", + "RESOURCE", + "LONG_TASK", + "VITAL" + ] }, - "type": { - "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", - "example": "browser", - "type": "string" + "filter": { + "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "description": "The search query - following the RUM search syntax.", + "example": "service:web* AND @http.status_code:[200 TO 299]", + "type": "string" + } + }, + "type": "object" }, - "updated_at": { - "description": "Timestamp in ms of the last update date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the rum-based metric will be aggregated over.", + "example": "@http.status_code", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", + "example": "status_code", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" }, - "updated_by_handle": { - "description": "Handle of the updater user.", - "example": "jane.doe", - "type": "string" + "uniqueness": { + "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", + "properties": { + "when": { + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", + "enum": [ + "match", + "end" + ], + "example": "match", + "type": "string", + "x-enum-varnames": [ + "WHEN_MATCH", + "WHEN_END" + ] + } + }, + "type": "object" } }, - "required": [ - "application_id", - "client_token", - "created_at", - "created_by_handle", - "name", - "org_id", - "type", - "updated_at", - "updated_by_handle" - ], "type": "object" }, "id": { - "description": "RUM application ID.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string" }, "type": { - "default": "rum_application", - "description": "RUM application response type.", + "default": "rum_metrics", + "description": "The type of the resource. The value should always be rum_metrics.", "enum": [ - "rum_application" + "rum_metrics" ], - "example": "rum_application", + "example": "rum_metrics", "type": "string", "x-enum-varnames": [ - "RUM_APPLICATION" + "RUM_METRICS" ] } }, - "required": [ - "attributes", - "id", - "type" - ], "type": "object" } }, @@ -312382,7 +330083,35 @@ } } }, - "description": "OK" + "description": "OK" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" }, "404": { "content": { @@ -312441,29 +330170,23 @@ "description": "Too many requests" } }, - "summary": "Get a RUM application", + "summary": "Get a rum-based metric", "tags": [ - "RUM" + "Rum Metrics" ], - "x-menu-order": 5, - "x-permission": { - "operator": "OR", - "permissions": [ - "rum_apps_read" - ] - }, + "x-menu-order": 3, "x-undo": { "type": "safe" } }, "patch": { - "description": "Update the RUM application with given ID in your organization.", - "operationId": "UpdateRUMApplication", + "description": "Update a specific rum-based metric from your organization.\nReturns the rum-based metric object from the request body when the request is successful.", + "operationId": "UpdateRumMetric", "parameters": [ { - "description": "RUM application ID.", + "description": "The name of the rum-based metric.", "in": "path", - "name": "id", + "name": "metric_id", "required": true, "schema": { "type": "string" @@ -312474,51 +330197,87 @@ "content": { "application/json": { "schema": { - "description": "RUM application update request.", + "description": "The new rum-based metric body.", "properties": { "data": { - "description": "RUM application update.", + "description": "The new rum-based metric properties.", "properties": { "attributes": { - "description": "RUM application update attributes.", + "description": "The rum-based metric properties that will be updated.", "properties": { - "name": { - "description": "Name of the RUM application.", - "example": "updated_name_for_my_existing_rum_application", - "type": "string" + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", + "example": true, + "type": "boolean" + } + }, + "type": "object" }, - "type": { - "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", - "example": "browser", - "type": "string" + "filter": { + "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "default": "*", + "description": "The search query - following the RUM search syntax.", + "example": "@service:web-ui: ", + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the rum-based metric will be aggregated over.", + "example": "@browser.name", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", + "example": "browser_name", + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "type": "array" } }, "type": "object" }, "id": { - "description": "RUM application ID.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string" }, "type": { - "default": "rum_application_update", - "description": "RUM application update type.", + "default": "rum_metrics", + "description": "The type of the resource. The value should always be rum_metrics.", "enum": [ - "rum_application_update" + "rum_metrics" ], - "example": "rum_application_update", + "example": "rum_metrics", "type": "string", "x-enum-varnames": [ - "RUM_APPLICATION_UPDATE" + "RUM_METRICS" ] } }, "required": [ - "id", - "type" + "type", + "attributes" ], "type": "object" } @@ -312530,6 +330289,7 @@ } } }, + "description": "New definition of the rum-based metric.", "required": true }, "responses": { @@ -312537,115 +330297,137 @@ "content": { "application/json": { "schema": { - "description": "RUM application response.", + "description": "The rum-based metric object.", "properties": { "data": { - "description": "RUM application.", + "description": "The rum-based metric properties.", "properties": { "attributes": { - "description": "RUM application attributes.", + "description": "The object describing a Datadog rum-based metric.", "properties": { - "application_id": { - "description": "ID of the RUM application.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } - }, - "client_token": { - "description": "Client token of the RUM application.", - "example": "abcd1234efgh5678ijkl90abcd1234efgh0", - "type": "string" - }, - "created_at": { - "description": "Timestamp in ms of the creation date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" - }, - "created_by_handle": { - "description": "Handle of the creator user.", - "example": "john.doe", - "type": "string" - }, - "hash": { - "description": "Hash of the RUM application. Optional.", - "type": "string" - }, - "is_active": { - "description": "Indicates if the RUM application is active.", - "example": true, - "type": "boolean" - }, - "name": { - "description": "Name of the RUM application.", - "example": "my_rum_application", - "type": "string" + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": [ + "count", + "distribution" + ], + "example": "distribution", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "DISTRIBUTION" + ] + }, + "include_percentiles": { + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", + "example": true, + "type": "boolean" + }, + "path": { + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", + "example": "@duration", + "type": "string" + } + }, + "type": "object" }, - "org_id": { - "description": "Org ID of the RUM application.", - "example": 999, - "format": "int32", - "maximum": 2147483647, - "type": "integer" + "event_type": { + "description": "The type of RUM events to filter on.", + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "example": "session", + "type": "string", + "x-enum-varnames": [ + "SESSION", + "VIEW", + "ACTION", + "ERROR", + "RESOURCE", + "LONG_TASK", + "VITAL" + ] }, - "type": { - "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", - "example": "browser", - "type": "string" + "filter": { + "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", + "properties": { + "query": { + "description": "The search query - following the RUM search syntax.", + "example": "service:web* AND @http.status_code:[200 TO 299]", + "type": "string" + } + }, + "type": "object" }, - "updated_at": { - "description": "Timestamp in ms of the last update date.", - "example": 1659479836169, - "format": "int64", - "type": "integer" + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The path to the value the rum-based metric will be aggregated over.", + "example": "@http.status_code", + "type": "string" + }, + "tag_name": { + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", + "example": "status_code", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" }, - "updated_by_handle": { - "description": "Handle of the updater user.", - "example": "jane.doe", - "type": "string" + "uniqueness": { + "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", + "properties": { + "when": { + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", + "enum": [ + "match", + "end" + ], + "example": "match", + "type": "string", + "x-enum-varnames": [ + "WHEN_MATCH", + "WHEN_END" + ] + } + }, + "type": "object" } }, - "required": [ - "application_id", - "client_token", - "created_at", - "created_by_handle", - "name", - "org_id", - "type", - "updated_at", - "updated_by_handle" - ], "type": "object" }, "id": { - "description": "RUM application ID.", - "example": "abcd1234-0000-0000-abcd-1234abcd5678", - "type": "string", - "x-merge-override": { - "format": false - } + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string" }, "type": { - "default": "rum_application", - "description": "RUM application response type.", + "default": "rum_metrics", + "description": "The type of the resource. The value should always be rum_metrics.", "enum": [ - "rum_application" + "rum_metrics" ], - "example": "rum_application", + "example": "rum_metrics", "type": "string", "x-enum-varnames": [ - "RUM_APPLICATION" + "RUM_METRICS" ] } }, - "required": [ - "attributes", - "id", - "type" - ], "type": "object" } }, @@ -312683,6 +330465,34 @@ }, "description": "Bad Request" }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Authorized" + }, "404": { "content": { "application/json": { @@ -312711,7 +330521,7 @@ }, "description": "Not Found" }, - "422": { + "409": { "content": { "application/json": { "schema": { @@ -312737,7 +330547,7 @@ } } }, - "description": "Unprocessable Entity." + "description": "Conflict" }, "429": { "content": { @@ -312768,173 +330578,243 @@ "description": "Too many requests" } }, - "summary": "Update a RUM application", + "summary": "Update a rum-based metric", "tags": [ - "RUM" + "Rum Metrics" ], "x-codegen-request-body-name": "body", "x-menu-order": 4, - "x-permission": { - "operator": "OR", - "permissions": [ - "rum_apps_write" - ] - }, "x-undo": { "type": "idempotent" } - }, - "x-merge-override": { - "delete": true, - "get": false, - "patch": false } }, - "/api/v2/rum/config/metrics": { + "/api/v2/rum/events": { "get": { - "description": "Get the list of configured rum-based metrics with their definitions.", - "operationId": "ListRumMetrics", + "description": "List endpoint returns events that match a RUM search query.\n[Results are paginated][1].\n\nUse this endpoint to see your latest RUM events.\n\n[1]: https://docs.datadoghq.com/logs/guide/collect-multiple-logs-with-pagination", + "operationId": "ListRUMEvents", + "parameters": [ + { + "description": "Search query following RUM syntax.", + "example": "@type:session @application_id:xxxx", + "in": "query", + "name": "filter[query]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Minimum timestamp for requested events.", + "example": "2019-01-02T09:42:36.320Z", + "in": "query", + "name": "filter[from]", + "required": false, + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "description": "Maximum timestamp for requested events.", + "example": "2019-01-03T09:42:36.320Z", + "in": "query", + "name": "filter[to]", + "required": false, + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "description": "Order of events in results.", + "in": "query", + "name": "sort", + "required": false, + "schema": { + "description": "Sort parameters when querying events.", + "enum": [ + "timestamp", + "-timestamp" + ], + "type": "string", + "x-enum-varnames": [ + "TIMESTAMP_ASCENDING", + "TIMESTAMP_DESCENDING" + ] + } + }, + { + "description": "List following results with a cursor provided in the previous query.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "in": "query", + "name": "page[cursor]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Maximum number of events in the response.", + "example": 25, + "in": "query", + "name": "page[limit]", + "required": false, + "schema": { + "default": 10, + "format": "int32", + "maximum": 1000, + "type": "integer" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "description": "All the available rum-based metric objects.", + "description": "Response object with all events matching the request and pagination information.", "properties": { "data": { - "description": "A list of rum-based metric objects.", + "description": "Array of events matching the request.", "items": { - "description": "The rum-based metric properties.", + "description": "Object description of a RUM event after being processed and stored by Datadog.", "properties": { "attributes": { - "description": "The object describing a Datadog rum-based metric.", + "description": "JSON object containing all event attributes and their associated values.", "properties": { - "compute": { - "description": "The compute rule to compute the rum-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", - "example": true, - "type": "boolean" - }, - "path": { - "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", - "example": "@duration", - "type": "string" - } + "attributes": { + "additionalProperties": {}, + "description": "JSON object of attributes from RUM events.", + "example": { + "customAttribute": 123, + "duration": 2345 }, "type": "object" }, - "event_type": { - "description": "The type of RUM events to filter on.", - "enum": [ - "session", - "view", - "action", - "error", - "resource", - "long_task", - "vital" - ], - "example": "session", - "type": "string", - "x-enum-varnames": [ - "SESSION", - "VIEW", - "ACTION", - "ERROR", - "RESOURCE", - "LONG_TASK", - "VITAL" - ] - }, - "filter": { - "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the RUM search syntax.", - "example": "service:web* AND @http.status_code:[200 TO 299]", - "type": "string" - } - }, - "type": "object" + "service": { + "description": "The name of the application or service generating RUM events.\nIt is used to switch from RUM to APM, so make sure you define the same\nvalue when you use both products.", + "example": "web-app", + "type": "string" }, - "group_by": { - "description": "The rules for the group by.", + "tags": { + "description": "Array of tags associated with your event.", + "example": [ + "team:A" + ], "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the rum-based metric will be aggregated over.", - "example": "@http.status_code", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", - "example": "status_code", - "type": "string" - } - }, - "type": "object" + "description": "Tag associated with your event.", + "type": "string" }, "type": "array" }, - "uniqueness": { - "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", - "properties": { - "when": { - "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", - "enum": [ - "match", - "end" - ], - "example": "match", - "type": "string", - "x-enum-varnames": [ - "WHEN_MATCH", - "WHEN_END" - ] - } - }, - "type": "object" + "timestamp": { + "description": "Timestamp of your event.", + "example": "2019-01-02T09:42:36.320Z", + "format": "date-time", + "type": "string" } }, "type": "object" }, "id": { - "description": "The name of the rum-based metric.", - "example": "rum.sessions.webui.count", + "description": "Unique ID of the event.", + "example": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", "type": "string" }, "type": { - "default": "rum_metrics", - "description": "The type of the resource. The value should always be rum_metrics.", + "default": "rum", + "description": "Type of the event.", "enum": [ - "rum_metrics" + "rum" ], - "example": "rum_metrics", + "example": "rum", "type": "string", "x-enum-varnames": [ - "RUM_METRICS" + "RUM" ] } }, "type": "object" }, "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "next": { + "description": "Link for the next set of results. Note that the request can also be made using the\nPOST endpoint.", + "example": "https://app.datadoghq.com/api/v2/rum/event?filter[query]=foo&page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + } + }, + "type": "object" + }, + "meta": { + "description": "The metadata associated with a request.", + "properties": { + "elapsed": { + "description": "The time elapsed in milliseconds.", + "example": 132, + "format": "int64", + "type": "integer" + }, + "page": { + "description": "Paging attributes.", + "properties": { + "after": { + "description": "The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of `page[cursor]`.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + } + }, + "type": "object" + }, + "request_id": { + "description": "The identifier of the request.", + "example": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR", + "type": "string" + }, + "status": { + "description": "The status of the response.", + "enum": [ + "done", + "timeout" + ], + "example": "done", + "type": "string", + "x-enum-varnames": [ + "DONE", + "TIMEOUT" + ] + }, + "warnings": { + "description": "A list of warnings (non-fatal errors) encountered. Partial results may return if\nwarnings are present in the response.", + "items": { + "description": "A warning message indicating something that went wrong with the query.", + "properties": { + "code": { + "description": "A unique code for this type of warning.", + "example": "unknown_index", + "type": "string" + }, + "detail": { + "description": "A detailed explanation of this specific warning.", + "example": "indexes: foo, bar", + "type": "string" + }, + "title": { + "description": "A short human-readable summary of the warning.", + "example": "One or several indexes are missing or invalid, results hold data from the other indexes", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" } }, "type": "object" @@ -312943,6 +330823,34 @@ }, "description": "OK" }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, "403": { "content": { "application/json": { @@ -313000,322 +330908,268 @@ "description": "Too many requests" } }, - "summary": "Get all rum-based metrics", + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [] + } + ], + "summary": "Get a list of RUM events", "tags": [ - "Rum Metrics" + "RUM" ], - "x-menu-order": 1, + "x-menu-order": 2, + "x-pagination": { + "cursorParam": "page[cursor]", + "cursorPath": "meta.page.after", + "limitParam": "page[limit]", + "resultsPath": "data" + }, + "x-permission": { + "operator": "OPEN", + "permissions": [] + }, "x-undo": { "type": "safe" } - }, + } + }, + "/api/v2/rum/events/search": { "post": { - "description": "Create a metric based on your organization's RUM data.\nReturns the rum-based metric object from the request body when the request is successful.", - "operationId": "CreateRumMetric", + "description": "List endpoint returns RUM events that match a RUM search query.\n[Results are paginated][1].\n\nUse this endpoint to build complex RUM events filtering and search.\n\n[1]: https://docs.datadoghq.com/logs/guide/collect-multiple-logs-with-pagination", + "operationId": "SearchRUMEvents", "requestBody": { "content": { "application/json": { "schema": { - "description": "The new rum-based metric body.", + "description": "The request for a RUM events list.", "properties": { - "data": { - "description": "The new rum-based metric properties.", + "filter": { + "description": "The search and filter query settings.", "properties": { - "attributes": { - "description": "The object describing the Datadog rum-based metric to create.", - "properties": { - "compute": { - "description": "The compute rule to compute the rum-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", - "example": true, - "type": "boolean" - }, - "path": { - "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", - "example": "@duration", - "type": "string" - } - }, - "required": [ - "aggregation_type" - ], - "type": "object" - }, - "event_type": { - "description": "The type of RUM events to filter on.", - "enum": [ - "session", - "view", - "action", - "error", - "resource", - "long_task", - "vital" - ], - "example": "session", - "type": "string", - "x-enum-varnames": [ - "SESSION", - "VIEW", - "ACTION", - "ERROR", - "RESOURCE", - "LONG_TASK", - "VITAL" - ] - }, - "filter": { - "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "default": "*", - "description": "The search query - following the RUM search syntax.", - "example": "@service:web-ui: ", - "type": "string" - } - }, - "required": [ - "query" - ], - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the rum-based metric will be aggregated over.", - "example": "@browser.name", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", - "example": "browser_name", - "type": "string" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "type": "array" - }, - "uniqueness": { - "description": "The rule to count updatable events. Is only set if `event_type` is `sessions` or `views`.", - "properties": { - "when": { - "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", - "enum": [ - "match", - "end" - ], - "example": "match", - "type": "string", - "x-enum-varnames": [ - "WHEN_MATCH", - "WHEN_END" - ] - } - }, - "required": [ - "when" - ], - "type": "object" - } - }, - "required": [ - "event_type", - "compute" - ], - "type": "object" + "from": { + "default": "now-15m", + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", + "example": "now-15m", + "type": "string" }, - "id": { - "description": "The name of the rum-based metric.", - "example": "rum.sessions.webui.count", + "query": { + "default": "*", + "description": "The search query following the RUM search syntax.", + "example": "@type:session AND @session.type:user", "type": "string" }, - "type": { - "default": "rum_metrics", - "description": "The type of the resource. The value should always be rum_metrics.", - "enum": [ - "rum_metrics" - ], - "example": "rum_metrics", - "type": "string", - "x-enum-varnames": [ - "RUM_METRICS" - ] + "to": { + "default": "now", + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", + "example": "now", + "type": "string" } }, - "required": [ - "id", - "type", - "attributes" - ], "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "The definition of the new rum-based metric.", - "required": true - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "description": "The rum-based metric object.", - "properties": { - "data": { - "description": "The rum-based metric properties.", - "properties": { - "attributes": { - "description": "The object describing a Datadog rum-based metric.", - "properties": { - "compute": { - "description": "The compute rule to compute the rum-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", - "example": true, - "type": "boolean" - }, - "path": { - "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", - "example": "@duration", - "type": "string" - } - }, - "type": "object" - }, - "event_type": { - "description": "The type of RUM events to filter on.", - "enum": [ - "session", - "view", - "action", - "error", - "resource", - "long_task", - "vital" - ], - "example": "session", - "type": "string", - "x-enum-varnames": [ - "SESSION", - "VIEW", - "ACTION", - "ERROR", - "RESOURCE", - "LONG_TASK", - "VITAL" - ] - }, - "filter": { - "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the RUM search syntax.", - "example": "service:web* AND @http.status_code:[200 TO 299]", - "type": "string" - } - }, - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the rum-based metric will be aggregated over.", - "example": "@http.status_code", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", - "example": "status_code", - "type": "string" - } + }, + "options": { + "description": "Global query options that are used during the query.\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails.", + "properties": { + "time_offset": { + "description": "The time offset (in seconds) to apply to the query.", + "format": "int64", + "type": "integer" + }, + "timezone": { + "default": "UTC", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "example": "GMT", + "type": "string" + } + }, + "type": "object" + }, + "page": { + "description": "Paging attributes for listing events.", + "properties": { + "cursor": { + "description": "List following results with a cursor provided in the previous query.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + }, + "limit": { + "default": 10, + "description": "Maximum number of events in the response.", + "example": 25, + "format": "int32", + "maximum": 1000, + "type": "integer" + } + }, + "type": "object" + }, + "sort": { + "description": "Sort parameters when querying events.", + "enum": [ + "timestamp", + "-timestamp" + ], + "type": "string", + "x-enum-varnames": [ + "TIMESTAMP_ASCENDING", + "TIMESTAMP_DESCENDING" + ] + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response object with all events matching the request and pagination information.", + "properties": { + "data": { + "description": "Array of events matching the request.", + "items": { + "description": "Object description of a RUM event after being processed and stored by Datadog.", + "properties": { + "attributes": { + "description": "JSON object containing all event attributes and their associated values.", + "properties": { + "attributes": { + "additionalProperties": {}, + "description": "JSON object of attributes from RUM events.", + "example": { + "customAttribute": 123, + "duration": 2345 }, "type": "object" }, - "type": "array" - }, - "uniqueness": { - "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", - "properties": { - "when": { - "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", - "enum": [ - "match", - "end" - ], - "example": "match", - "type": "string", - "x-enum-varnames": [ - "WHEN_MATCH", - "WHEN_END" - ] - } + "service": { + "description": "The name of the application or service generating RUM events.\nIt is used to switch from RUM to APM, so make sure you define the same\nvalue when you use both products.", + "example": "web-app", + "type": "string" }, - "type": "object" + "tags": { + "description": "Array of tags associated with your event.", + "example": [ + "team:A" + ], + "items": { + "description": "Tag associated with your event.", + "type": "string" + }, + "type": "array" + }, + "timestamp": { + "description": "Timestamp of your event.", + "example": "2019-01-02T09:42:36.320Z", + "format": "date-time", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "Unique ID of the event.", + "example": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", + "type": "string" + }, + "type": { + "default": "rum", + "description": "Type of the event.", + "enum": [ + "rum" + ], + "example": "rum", + "type": "string", + "x-enum-varnames": [ + "RUM" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "next": { + "description": "Link for the next set of results. Note that the request can also be made using the\nPOST endpoint.", + "example": "https://app.datadoghq.com/api/v2/rum/event?filter[query]=foo&page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" + } + }, + "type": "object" + }, + "meta": { + "description": "The metadata associated with a request.", + "properties": { + "elapsed": { + "description": "The time elapsed in milliseconds.", + "example": 132, + "format": "int64", + "type": "integer" + }, + "page": { + "description": "Paging attributes.", + "properties": { + "after": { + "description": "The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of `page[cursor]`.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string" } }, "type": "object" }, - "id": { - "description": "The name of the rum-based metric.", - "example": "rum.sessions.webui.count", + "request_id": { + "description": "The identifier of the request.", + "example": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR", "type": "string" }, - "type": { - "default": "rum_metrics", - "description": "The type of the resource. The value should always be rum_metrics.", + "status": { + "description": "The status of the response.", "enum": [ - "rum_metrics" + "done", + "timeout" ], - "example": "rum_metrics", + "example": "done", "type": "string", "x-enum-varnames": [ - "RUM_METRICS" + "DONE", + "TIMEOUT" ] + }, + "warnings": { + "description": "A list of warnings (non-fatal errors) encountered. Partial results may return if\nwarnings are present in the response.", + "items": { + "description": "A warning message indicating something that went wrong with the query.", + "properties": { + "code": { + "description": "A unique code for this type of warning.", + "example": "unknown_index", + "type": "string" + }, + "detail": { + "description": "A detailed explanation of this specific warning.", + "example": "indexes: foo, bar", + "type": "string" + }, + "title": { + "description": "A short human-readable summary of the warning.", + "example": "One or several indexes are missing or invalid, results hold data from the other indexes", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" } }, "type": "object" @@ -313325,7 +331179,7 @@ } } }, - "description": "Created" + "description": "OK" }, "400": { "content": { @@ -313383,7 +331237,7 @@ }, "description": "Not Authorized" }, - "409": { + "429": { "content": { "application/json": { "schema": { @@ -313409,7 +331263,121 @@ } } }, - "description": "Conflict" + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [] + } + ], + "summary": "Search RUM events", + "tags": [ + "RUM" + ], + "x-codegen-request-body-name": "body", + "x-menu-order": 1, + "x-pagination": { + "cursorParam": "body.page.cursor", + "cursorPath": "meta.page.after", + "limitParam": "body.page.limit", + "resultsPath": "data" + }, + "x-permission": { + "operator": "OPEN", + "permissions": [] + }, + "x-undo": { + "type": "safe" + } + } + }, + "/api/v2/saml_configurations/idp_metadata": { + "post": { + "description": "Endpoint for uploading IdP metadata for SAML setup.\n\nUse this endpoint to upload or replace IdP metadata for SAML login configuration.", + "operationId": "UploadIdPMetadata", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "description": "The form data submitted to upload IdP metadata", + "properties": { + "idp_file": { + "description": "The IdP metadata XML file", + "format": "binary", + "type": "string", + "x-mimetype": "application/xml" + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" }, "429": { "content": { @@ -313440,83 +331408,267 @@ "description": "Too many requests" } }, - "summary": "Create a rum-based metric", + "summary": "Upload IdP metadata", "tags": [ - "Rum Metrics" + "Organizations" ], "x-codegen-request-body-name": "body", - "x-given": { - "rum_metric": { - "parameters": [ - { - "name": "body", - "value": "{\n \"data\": {\n \"id\": \"{{ unique_lower_alnum }}\",\n \"type\": \"rum_metrics\",\n \"attributes\": {\n \"event_type\": \"session\",\n \"compute\": {\n \"aggregation_type\": \"distribution\",\n \"include_percentiles\": true,\n \"path\": \"@duration\"\n },\n \"filter\": {\n \"query\": \"source:{{ unique }}\"\n },\n \"group_by\": [{\n \"path\": \"@browser.name\",\n \"tag_name\": \"browser_name\"\n }],\n \"uniqueness\": {\n \"when\": \"match\"\n }\n }\n }\n}" - } - ], - "step": "there is a valid \"rum_metric\" in the system" - } + "x-menu-order": 1, + "x-permission": { + "operator": "OR", + "permissions": [ + "org_management" + ] }, - "x-menu-order": 2, "x-undo": { - "operationId": "DeleteRumMetric", - "parameters": [ - { - "name": "metric_id", - "source": "data.id" - } - ], - "type": "unsafe" + "type": "idempotent" } } }, - "/api/v2/rum/config/metrics/{metric_id}": { - "delete": { - "description": "Delete a specific rum-based metric from your organization.", - "operationId": "DeleteRumMetric", + "/api/v2/scim/Groups": { + "get": { + "description": "List groups in the organization.\nResults are paginated by `startIndex` and `count` parameters.\nResults can be narrowed down by the `filter` parameter.", + "operationId": "ListSCIMGroups", "parameters": [ { - "description": "The name of the rum-based metric.", - "in": "path", - "name": "metric_id", - "required": true, + "description": "Specifies the start index to fetch the results (1-indexed).", + "in": "query", + "name": "startIndex", + "required": false, + "schema": { + "default": 1, + "example": 1, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Specifies the number of groups to be returned.", + "in": "query", + "name": "count", + "required": false, + "schema": { + "default": 20, + "example": 20, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Specifies the url encoded filter to use to narrow down the results.\nFilters can be in the form of `displayName eq ` or `externalId eq `\nor `id eq and members eq ` or `members eq and id eq `.", + "in": "query", + "name": "filter", + "required": false, "schema": { "type": "string" } } ], "responses": { - "204": { - "description": "No Content" - }, - "403": { + "200": { "content": { "application/json": { "schema": { - "description": "API error response.", + "description": "List groups response object.", + "example": { + "Resources": [ + { + "displayName": "Group 1", + "externalId": "group1", + "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", + "members": [ + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/d34a5f93-5690-4d3f-a293-f2ad5c7a82a4", + "display": "John Doe", + "type": "User", + "value": "d34a5f93-5690-4d3f-a293-f2ad5c7a82a4" + }, + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "display": "Jane Doe", + "type": "User", + "value": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6" + } + ], + "meta": { + "created": "2024-11-22T15:05:52.055138963Z", + "lastModified": "2024-11-22T15:05:52.055139017Z", + "location": "https://app.datadoghq.com/api/scim/v2/Groups/e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", + "resourceType": "Group" + }, + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ] + }, + { + "displayName": "Group 2", + "externalId": "group2", + "id": "79ef0d28-f257-4829-97e6-d23d2a26cb1a", + "members": [ + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/29da9fb7-8fca-4e87-bf58-86652253deae", + "display": "Alice Smith", + "type": "User", + "value": "29da9fb7-8fca-4e87-bf58-86652253deae" + }, + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9", + "display": "Bob Smith", + "type": "User", + "value": "f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9" + } + ], + "meta": { + "created": "2024-11-22T15:05:52.055139748Z", + "lastModified": "2024-11-22T15:05:52.055139813Z", + "location": "https://app.datadoghq.com/api/scim/v2/Groups/79ef0d28-f257-4829-97e6-d23d2a26cb1a", + "resourceType": "Group" + }, + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ] + } + ], + "itemsPerPage": 2, + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:ListResponse" + ], + "startIndex": 1, + "totalResults": 2 + }, "properties": { - "errors": { - "description": "A list of errors.", + "Resources": { + "description": "List of groups matching the request criteria.", + "items": { + "description": "Resources returned in response to a List groups request.", + "properties": { + "displayName": { + "description": "A human-readable name for the group.", + "example": "My test group", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "example": "346af543-e5ab-4855-937d-133231cd59ed", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "example": "0e80d350-9519-4771-9aa8-ce849fc36c20", + "type": "string" + }, + "members": { + "description": "A list of members belonging to the team.", + "items": { + "description": "The definition of a member belonging to a group in the List groups response.", + "properties": { + "$ref": { + "description": "The URI corresponding to a resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "display": { + "description": "Full name of the user.", + "example": "John Doe", + "type": "string" + }, + "type": { + "description": "A label indicating the type of resource. Only supported value is \"User\".", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata associated with a group.", + "properties": { + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", + "type": "string" + }, + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", + "type": "string" + }, + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" + } + }, + "type": "object" + }, + "schemas": { + "description": "Group JSON Schemas.", + "example": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "itemsPerPage": { + "description": "Number of groups returned per page.", + "format": "int64", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "schemas": { + "description": "List response JSON Schemas.", "example": [ - "Bad Request" + "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "items": { - "description": "A list of items.", - "example": "Bad Request", "type": "string" }, "type": "array" + }, + "startIndex": { + "description": "Starting index of the groups for this page (1-indexed).", + "format": "int64", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "totalResults": { + "description": "Total number of groups matching the request criteria.", + "format": "int64", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "Not Authorized" + "description": "OK" }, - "404": { + "400": { "content": { "application/json": { "schema": { @@ -313542,7 +331694,7 @@ } } }, - "description": "Not Found" + "description": "Bad Request" }, "429": { "content": { @@ -313573,175 +331725,360 @@ "description": "Too many requests" } }, - "summary": "Delete a rum-based metric", + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] + }, + { + "bearerAuth": [] + } + ], + "summary": "List groups", "tags": [ - "Rum Metrics" + "SCIM" ], - "x-menu-order": 5, + "x-menu-order": 7, + "x-permission": { + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] + }, "x-undo": { - "type": "idempotent" + "type": "safe" } }, - "get": { - "description": "Get a specific rum-based metric from your organization.", - "operationId": "GetRumMetric", - "parameters": [ - { - "description": "The name of the rum-based metric.", - "in": "path", - "name": "metric_id", - "required": true, - "schema": { - "type": "string" + "post": { + "description": "Create a new group.\nThe group may contain members.", + "operationId": "CreateSCIMGroup", + "requestBody": { + "content": { + "application/json": { + "examples": { + "json-request-body": { + "value": { + "displayName": "Group 1", + "externalId": "group1", + "members": [ + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/d34a5f93-5690-4d3f-a293-f2ad5c7a82a4", + "display": "John Doe", + "type": "User", + "value": "d34a5f93-5690-4d3f-a293-f2ad5c7a82a4" + }, + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "display": "Jane Doe", + "type": "User", + "value": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6" + } + ], + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ] + } + } + }, + "schema": { + "description": "Definition of a group.", + "properties": { + "displayName": { + "description": "A human-readable name for the group.", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "type": "string" + }, + "members": { + "description": "Members of the group.", + "items": { + "description": "The definition of a member belonging to a group.", + "properties": { + "$ref": { + "description": "The URI corresponding to a SCIM resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "display": { + "description": "A human-readable name for the group member.", + "example": "John Doe", + "type": "string" + }, + "type": { + "description": "A label indicating the type of resource.", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata associated with a group.", + "properties": { + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", + "type": "string" + }, + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", + "type": "string" + }, + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" + } + }, + "type": "object" + }, + "schemas": { + "description": "Input JSON Schemas.", + "example": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } } - } - ], + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "description": "The rum-based metric object.", + "description": "Definition of a group.", "properties": { - "data": { - "description": "The rum-based metric properties.", - "properties": { - "attributes": { - "description": "The object describing a Datadog rum-based metric.", - "properties": { - "compute": { - "description": "The compute rule to compute the rum-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", - "example": true, - "type": "boolean" - }, - "path": { - "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", - "example": "@duration", - "type": "string" - } - }, - "type": "object" - }, - "event_type": { - "description": "The type of RUM events to filter on.", - "enum": [ - "session", - "view", - "action", - "error", - "resource", - "long_task", - "vital" - ], - "example": "session", - "type": "string", - "x-enum-varnames": [ - "SESSION", - "VIEW", - "ACTION", - "ERROR", - "RESOURCE", - "LONG_TASK", - "VITAL" - ] - }, - "filter": { - "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the RUM search syntax.", - "example": "service:web* AND @http.status_code:[200 TO 299]", - "type": "string" - } - }, - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the rum-based metric will be aggregated over.", - "example": "@http.status_code", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", - "example": "status_code", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "uniqueness": { - "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", - "properties": { - "when": { - "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", - "enum": [ - "match", - "end" - ], - "example": "match", - "type": "string", - "x-enum-varnames": [ - "WHEN_MATCH", - "WHEN_END" - ] - } - }, - "type": "object" - } + "displayName": { + "description": "A human-readable name for the group.", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "type": "string" + }, + "members": { + "description": "Members of the group.", + "items": { + "description": "The definition of a member belonging to a group.", + "properties": { + "$ref": { + "description": "The URI corresponding to a SCIM resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" }, - "type": "object" + "display": { + "description": "A human-readable name for the group member.", + "example": "John Doe", + "type": "string" + }, + "type": { + "description": "A label indicating the type of resource.", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + } }, - "id": { - "description": "The name of the rum-based metric.", - "example": "rum.sessions.webui.count", + "type": "object" + }, + "type": "array" + }, + "meta": { + "description": "Metadata associated with a group.", + "properties": { + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", "type": "string" }, - "type": { - "default": "rum_metrics", - "description": "The type of the resource. The value should always be rum_metrics.", - "enum": [ - "rum_metrics" - ], - "example": "rum_metrics", - "type": "string", - "x-enum-varnames": [ - "RUM_METRICS" - ] + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", + "type": "string" + }, + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" } }, "type": "object" + }, + "schemas": { + "description": "Input JSON Schemas.", + "example": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" } } }, - "description": "OK" + "description": "Created" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] + }, + { + "bearerAuth": [] + } + ], + "summary": "Create group", + "tags": [ + "SCIM" + ], + "x-menu-order": 8, + "x-permission": { + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] + }, + "x-undo": { + "operationId": "DeleteSCIMGroup", + "parameters": [ + { + "name": "group_id", + "source": "" + } + ], + "type": "unsafe" + } + } + }, + "/api/v2/scim/Groups/{group_id}": { + "delete": { + "description": "Delete the group with the given `group_id`.", + "operationId": "DeleteSCIMGroup", + "parameters": [ + { + "description": "None", + "in": "path", + "name": "group_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" }, - "403": { + "400": { "content": { "application/json": { "schema": { @@ -313767,7 +332104,7 @@ } } }, - "description": "Not Authorized" + "description": "Bad Request" }, "404": { "content": { @@ -313826,302 +332163,142 @@ "description": "Too many requests" } }, - "summary": "Get a rum-based metric", + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] + }, + { + "bearerAuth": [] + } + ], + "summary": "Delete group", "tags": [ - "Rum Metrics" + "SCIM" ], - "x-menu-order": 3, + "x-menu-order": 12, + "x-permission": { + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] + }, "x-undo": { - "type": "safe" + "type": "idempotent" } }, - "patch": { - "description": "Update a specific rum-based metric from your organization.\nReturns the rum-based metric object from the request body when the request is successful.", - "operationId": "UpdateRumMetric", + "get": { + "description": "Get a single group using the `group_id`.", + "operationId": "GetSCIMGroup", "parameters": [ { - "description": "The name of the rum-based metric.", + "description": "None", "in": "path", - "name": "metric_id", + "name": "group_id", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "The new rum-based metric body.", - "properties": { - "data": { - "description": "The new rum-based metric properties.", - "properties": { - "attributes": { - "description": "The rum-based metric properties that will be updated.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Definition of a group.", + "properties": { + "displayName": { + "description": "A human-readable name for the group.", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "type": "string" + }, + "members": { + "description": "Members of the group.", + "items": { + "description": "The definition of a member belonging to a group.", "properties": { - "compute": { - "description": "The compute rule to compute the rum-based metric.", - "properties": { - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", - "example": true, - "type": "boolean" - } - }, - "type": "object" + "$ref": { + "description": "The URI corresponding to a SCIM resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" }, - "filter": { - "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "default": "*", - "description": "The search query - following the RUM search syntax.", - "example": "@service:web-ui: ", - "type": "string" - } - }, - "required": [ - "query" - ], - "type": "object" + "display": { + "description": "A human-readable name for the group member.", + "example": "John Doe", + "type": "string" }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the rum-based metric will be aggregated over.", - "example": "@browser.name", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", - "example": "browser_name", - "type": "string" - } - }, - "required": [ - "path" - ], - "type": "object" - }, - "type": "array" + "type": { + "description": "A label indicating the type of resource.", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" } }, "type": "object" }, - "id": { - "description": "The name of the rum-based metric.", - "example": "rum.sessions.webui.count", - "type": "string" - }, - "type": { - "default": "rum_metrics", - "description": "The type of the resource. The value should always be rum_metrics.", - "enum": [ - "rum_metrics" - ], - "example": "rum_metrics", - "type": "string", - "x-enum-varnames": [ - "RUM_METRICS" - ] - } + "type": "array" }, - "required": [ - "type", - "attributes" - ], - "type": "object" - } - }, - "required": [ - "data" - ], - "type": "object" - } - } - }, - "description": "New definition of the rum-based metric.", - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "The rum-based metric object.", - "properties": { - "data": { - "description": "The rum-based metric properties.", + "meta": { + "description": "Metadata associated with a group.", "properties": { - "attributes": { - "description": "The object describing a Datadog rum-based metric.", - "properties": { - "compute": { - "description": "The compute rule to compute the rum-based metric.", - "properties": { - "aggregation_type": { - "description": "The type of aggregation to use.", - "enum": [ - "count", - "distribution" - ], - "example": "distribution", - "type": "string", - "x-enum-varnames": [ - "COUNT", - "DISTRIBUTION" - ] - }, - "include_percentiles": { - "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`.", - "example": true, - "type": "boolean" - }, - "path": { - "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`.", - "example": "@duration", - "type": "string" - } - }, - "type": "object" - }, - "event_type": { - "description": "The type of RUM events to filter on.", - "enum": [ - "session", - "view", - "action", - "error", - "resource", - "long_task", - "vital" - ], - "example": "session", - "type": "string", - "x-enum-varnames": [ - "SESSION", - "VIEW", - "ACTION", - "ERROR", - "RESOURCE", - "LONG_TASK", - "VITAL" - ] - }, - "filter": { - "description": "The rum-based metric filter. RUM events matching this filter will be aggregated in this metric.", - "properties": { - "query": { - "description": "The search query - following the RUM search syntax.", - "example": "service:web* AND @http.status_code:[200 TO 299]", - "type": "string" - } - }, - "type": "object" - }, - "group_by": { - "description": "The rules for the group by.", - "items": { - "description": "A group by rule.", - "properties": { - "path": { - "description": "The path to the value the rum-based metric will be aggregated over.", - "example": "@http.status_code", - "type": "string" - }, - "tag_name": { - "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name.", - "example": "status_code", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "uniqueness": { - "description": "The rule to count updatable events. Is only set if `event_type` is `session` or `view`.", - "properties": { - "when": { - "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.", - "enum": [ - "match", - "end" - ], - "example": "match", - "type": "string", - "x-enum-varnames": [ - "WHEN_MATCH", - "WHEN_END" - ] - } - }, - "type": "object" - } - }, - "type": "object" + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", + "type": "string" }, - "id": { - "description": "The name of the rum-based metric.", - "example": "rum.sessions.webui.count", + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", "type": "string" }, - "type": { - "default": "rum_metrics", - "description": "The type of the resource. The value should always be rum_metrics.", - "enum": [ - "rum_metrics" - ], - "example": "rum_metrics", - "type": "string", - "x-enum-varnames": [ - "RUM_METRICS" - ] + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" } }, "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", + }, + "schemas": { + "description": "Input JSON Schemas.", "example": [ - "Bad Request" + "urn:ietf:params:scim:schemas:core:2.0:Group" ], "items": { - "description": "A list of items.", - "example": "Bad Request", "type": "string" }, "type": "array" } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "Bad Request" + "description": "OK" }, - "403": { + "400": { "content": { "application/json": { "schema": { @@ -314147,7 +332324,7 @@ } } }, - "description": "Not Authorized" + "description": "Bad Request" }, "404": { "content": { @@ -314177,34 +332354,6 @@ }, "description": "Not Found" }, - "409": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Conflict" - }, "429": { "content": { "application/json": { @@ -314234,243 +332383,226 @@ "description": "Too many requests" } }, - "summary": "Update a rum-based metric", + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] + }, + { + "bearerAuth": [] + } + ], + "summary": "Get group", "tags": [ - "Rum Metrics" + "SCIM" ], - "x-codegen-request-body-name": "body", - "x-menu-order": 4, + "x-menu-order": 9, + "x-permission": { + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] + }, "x-undo": { - "type": "idempotent" + "type": "safe" } - } - }, - "/api/v2/rum/events": { - "get": { - "description": "List endpoint returns events that match a RUM search query.\n[Results are paginated][1].\n\nUse this endpoint to see your latest RUM events.\n\n[1]: https://docs.datadoghq.com/logs/guide/collect-multiple-logs-with-pagination", - "operationId": "ListRUMEvents", + }, + "patch": { + "description": "Patch the group with the given `group_id`.", + "operationId": "PatchSCIMGroup", "parameters": [ { - "description": "Search query following RUM syntax.", - "example": "@type:session @application_id:xxxx", - "in": "query", - "name": "filter[query]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Minimum timestamp for requested events.", - "example": "2019-01-02T09:42:36.320Z", - "in": "query", - "name": "filter[from]", - "required": false, - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "description": "Maximum timestamp for requested events.", - "example": "2019-01-03T09:42:36.320Z", - "in": "query", - "name": "filter[to]", - "required": false, - "schema": { - "format": "date-time", - "type": "string" - } - }, - { - "description": "Order of events in results.", - "in": "query", - "name": "sort", - "required": false, - "schema": { - "description": "Sort parameters when querying events.", - "enum": [ - "timestamp", - "-timestamp" - ], - "type": "string", - "x-enum-varnames": [ - "TIMESTAMP_ASCENDING", - "TIMESTAMP_DESCENDING" - ] - } - }, - { - "description": "List following results with a cursor provided in the previous query.", - "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "in": "query", - "name": "page[cursor]", - "required": false, + "description": "None", + "in": "path", + "name": "group_id", + "required": true, "schema": { "type": "string" } - }, - { - "description": "Maximum number of events in the response.", - "example": 25, - "in": "query", - "name": "page[limit]", - "required": false, - "schema": { - "default": 10, - "format": "int32", - "maximum": 1000, - "type": "integer" - } } ], + "requestBody": { + "content": { + "application/json": { + "examples": { + "json-request-body": { + "value": { + "Operations": [ + { + "op": "replace", + "path": "None", + "value": { + "displayName": "Real new group", + "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad" + } + }, + { + "op": "add", + "path": "None", + "value": { + "members": [ + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9", + "displayName": "Bob Smith", + "value": "f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9" + } + ] + } + }, + { + "op": "remove", + "path": "members[value eq \"fddf0cf2-9b60-11ef-ad4b-d6754a54a839\"]", + "value": null + } + ], + "schemas": [ + "urn:ietf:params:scim:api:messages:2.0:PatchOp" + ] + } + } + }, + "schema": { + "description": "Request object for patching a group.", + "properties": { + "Operations": { + "description": "A list of update operations to be performed on a group.", + "items": { + "description": "The definition of an individual patch operation in a patch request.", + "properties": { + "op": { + "description": "The operation to be performed.", + "enum": [ + "add", + "replace", + "remove" + ], + "type": "string", + "x-enum-varnames": [ + "ADD", + "REPLACE", + "REMOVE" + ] + }, + "path": { + "description": "An attribute path describing the target of the operation.", + "example": "members", + "type": "string" + }, + "value": { + "description": "JSON element containing the target values required to apply the patch operation.", + "example": "{\n \"displayName\": \"Real new group\",\n \"id\": \"80df3a9b-24f5-4ebf-9ba0-714455453621\"\n}" + } + }, + "type": "object" + }, + "type": "array" + }, + "schemas": { + "description": "Input JSON Schemas", + "example": [ + "urn:ietf:params:scim:api:messages:2.0:PatchOp" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "description": "Response object with all events matching the request and pagination information.", + "description": "Definition of a group.", "properties": { - "data": { - "description": "Array of events matching the request.", + "displayName": { + "description": "A human-readable name for the group.", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "type": "string" + }, + "members": { + "description": "Members of the group.", "items": { - "description": "Object description of a RUM event after being processed and stored by Datadog.", + "description": "The definition of a member belonging to a group.", "properties": { - "attributes": { - "description": "JSON object containing all event attributes and their associated values.", - "properties": { - "attributes": { - "additionalProperties": {}, - "description": "JSON object of attributes from RUM events.", - "example": { - "customAttribute": 123, - "duration": 2345 - }, - "type": "object" - }, - "service": { - "description": "The name of the application or service generating RUM events.\nIt is used to switch from RUM to APM, so make sure you define the same\nvalue when you use both products.", - "example": "web-app", - "type": "string" - }, - "tags": { - "description": "Array of tags associated with your event.", - "example": [ - "team:A" - ], - "items": { - "description": "Tag associated with your event.", - "type": "string" - }, - "type": "array" - }, - "timestamp": { - "description": "Timestamp of your event.", - "example": "2019-01-02T09:42:36.320Z", - "format": "date-time", - "type": "string" - } - }, - "type": "object" + "$ref": { + "description": "The URI corresponding to a SCIM resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" }, - "id": { - "description": "Unique ID of the event.", - "example": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", + "display": { + "description": "A human-readable name for the group member.", + "example": "John Doe", "type": "string" }, "type": { - "default": "rum", - "description": "Type of the event.", - "enum": [ - "rum" - ], - "example": "rum", - "type": "string", - "x-enum-varnames": [ - "RUM" - ] + "description": "A label indicating the type of resource.", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" } }, "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "next": { - "description": "Link for the next set of results. Note that the request can also be made using the\nPOST endpoint.", - "example": "https://app.datadoghq.com/api/v2/rum/event?filter[query]=foo&page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "type": "string" - } - }, - "type": "object" - }, "meta": { - "description": "The metadata associated with a request.", + "description": "Metadata associated with a group.", "properties": { - "elapsed": { - "description": "The time elapsed in milliseconds.", - "example": 132, - "format": "int64", - "type": "integer" - }, - "page": { - "description": "Paging attributes.", - "properties": { - "after": { - "description": "The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of `page[cursor]`.", - "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "type": "string" - } - }, - "type": "object" + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", + "type": "string" }, - "request_id": { - "description": "The identifier of the request.", - "example": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR", + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", "type": "string" }, - "status": { - "description": "The status of the response.", - "enum": [ - "done", - "timeout" - ], - "example": "done", - "type": "string", - "x-enum-varnames": [ - "DONE", - "TIMEOUT" - ] + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" }, - "warnings": { - "description": "A list of warnings (non-fatal errors) encountered. Partial results may return if\nwarnings are present in the response.", - "items": { - "description": "A warning message indicating something that went wrong with the query.", - "properties": { - "code": { - "description": "A unique code for this type of warning.", - "example": "unknown_index", - "type": "string" - }, - "detail": { - "description": "A detailed explanation of this specific warning.", - "example": "indexes: foo, bar", - "type": "string" - }, - "title": { - "description": "A short human-readable summary of the warning.", - "example": "One or several indexes are missing or invalid, results hold data from the other indexes", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" } }, "type": "object" + }, + "schemas": { + "description": "Input JSON Schemas.", + "example": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" @@ -314507,7 +332639,7 @@ }, "description": "Bad Request" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -314533,7 +332665,7 @@ } } }, - "description": "Not Authorized" + "description": "Not Found" }, "429": { "content": { @@ -314566,114 +332698,156 @@ }, "security": [ { - "apiKeyAuth": [], - "appKeyAuth": [] + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] }, { - "AuthZ": [] + "bearerAuth": [] } ], - "summary": "Get a list of RUM events", + "summary": "Patch group", "tags": [ - "RUM" + "SCIM" ], - "x-menu-order": 2, - "x-pagination": { - "cursorParam": "page[cursor]", - "cursorPath": "meta.page.after", - "limitParam": "page[limit]", - "resultsPath": "data" - }, + "x-menu-order": 11, "x-permission": { - "operator": "OPEN", - "permissions": [] + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] }, "x-undo": { - "type": "safe" + "type": "idempotent" } - } - }, - "/api/v2/rum/events/search": { - "post": { - "description": "List endpoint returns RUM events that match a RUM search query.\n[Results are paginated][1].\n\nUse this endpoint to build complex RUM events filtering and search.\n\n[1]: https://docs.datadoghq.com/logs/guide/collect-multiple-logs-with-pagination", - "operationId": "SearchRUMEvents", + }, + "put": { + "description": "Update the group with the given `group_id`.", + "operationId": "UpdateSCIMGroup", + "parameters": [ + { + "description": "None", + "in": "path", + "name": "group_id", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { "content": { "application/json": { + "examples": { + "json-request-body": { + "value": { + "displayName": "Group 1", + "externalId": "group1", + "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", + "members": [ + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/d34a5f93-5690-4d3f-a293-f2ad5c7a82a4", + "display": "John Doe", + "type": "User", + "value": "d34a5f93-5690-4d3f-a293-f2ad5c7a82a4" + }, + { + "$ref": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "display": "Jane Doe", + "type": "User", + "value": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6" + } + ], + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ] + } + } + }, "schema": { - "description": "The request for a RUM events list.", + "description": "Definition of a group.", "properties": { - "filter": { - "description": "The search and filter query settings.", - "properties": { - "from": { - "default": "now-15m", - "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", - "example": "now-15m", - "type": "string" - }, - "query": { - "default": "*", - "description": "The search query following the RUM search syntax.", - "example": "@type:session AND @session.type:user", - "type": "string" + "displayName": { + "description": "A human-readable name for the group.", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "type": "string" + }, + "members": { + "description": "Members of the group.", + "items": { + "description": "The definition of a member belonging to a group.", + "properties": { + "$ref": { + "description": "The URI corresponding to a SCIM resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + }, + "display": { + "description": "A human-readable name for the group member.", + "example": "John Doe", + "type": "string" + }, + "type": { + "description": "A label indicating the type of resource.", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" + } }, - "to": { - "default": "now", - "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", - "example": "now", - "type": "string" - } + "type": "object" }, - "type": "object" + "type": "array" }, - "options": { - "description": "Global query options that are used during the query.\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails.", + "meta": { + "description": "Metadata associated with a group.", "properties": { - "time_offset": { - "description": "The time offset (in seconds) to apply to the query.", - "format": "int64", - "type": "integer" + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", + "type": "string" }, - "timezone": { - "default": "UTC", - "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", - "example": "GMT", + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", "type": "string" - } - }, - "type": "object" - }, - "page": { - "description": "Paging attributes for listing events.", - "properties": { - "cursor": { - "description": "List following results with a cursor provided in the previous query.", - "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + }, + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", "type": "string" }, - "limit": { - "default": 10, - "description": "Maximum number of events in the response.", - "example": 25, - "format": "int32", - "maximum": 1000, - "type": "integer" + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" } }, "type": "object" }, - "sort": { - "description": "Sort parameters when querying events.", - "enum": [ - "timestamp", - "-timestamp" + "schemas": { + "description": "Input JSON Schemas.", + "example": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" ], - "type": "string", - "x-enum-varnames": [ - "TIMESTAMP_ASCENDING", - "TIMESTAMP_DESCENDING" - ] + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" @@ -314687,213 +332861,96 @@ "content": { "application/json": { "schema": { - "description": "Response object with all events matching the request and pagination information.", + "description": "Definition of a group.", "properties": { - "data": { - "description": "Array of events matching the request.", - "items": { - "description": "Object description of a RUM event after being processed and stored by Datadog.", - "properties": { - "attributes": { - "description": "JSON object containing all event attributes and their associated values.", - "properties": { - "attributes": { - "additionalProperties": {}, - "description": "JSON object of attributes from RUM events.", - "example": { - "customAttribute": 123, - "duration": 2345 - }, - "type": "object" - }, - "service": { - "description": "The name of the application or service generating RUM events.\nIt is used to switch from RUM to APM, so make sure you define the same\nvalue when you use both products.", - "example": "web-app", - "type": "string" - }, - "tags": { - "description": "Array of tags associated with your event.", - "example": [ - "team:A" - ], - "items": { - "description": "Tag associated with your event.", - "type": "string" - }, - "type": "array" - }, - "timestamp": { - "description": "Timestamp of your event.", - "example": "2019-01-02T09:42:36.320Z", - "format": "date-time", - "type": "string" - } - }, - "type": "object" + "displayName": { + "description": "A human-readable name for the group.", + "type": "string" + }, + "externalId": { + "description": "An identifier for the resource as defined by the provisioning client.", + "type": "string" + }, + "id": { + "description": "The identifier of the resource. Not required when creating a group.", + "type": "string" + }, + "members": { + "description": "Members of the group.", + "items": { + "description": "The definition of a member belonging to a group.", + "properties": { + "$ref": { + "description": "The URI corresponding to a SCIM resource that is a member of this group.", + "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" }, - "id": { - "description": "Unique ID of the event.", - "example": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA", + "display": { + "description": "A human-readable name for the group member.", + "example": "John Doe", "type": "string" }, "type": { - "default": "rum", - "description": "Type of the event.", - "enum": [ - "rum" - ], - "example": "rum", - "type": "string", - "x-enum-varnames": [ - "RUM" - ] + "description": "A label indicating the type of resource.", + "example": "User", + "type": "string" + }, + "value": { + "description": "The identifier of the member of this group.", + "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" } }, "type": "object" }, "type": "array" }, - "links": { - "description": "Links attributes.", - "properties": { - "next": { - "description": "Link for the next set of results. Note that the request can also be made using the\nPOST endpoint.", - "example": "https://app.datadoghq.com/api/v2/rum/event?filter[query]=foo&page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "type": "string" - } - }, - "type": "object" - }, "meta": { - "description": "The metadata associated with a request.", + "description": "Metadata associated with a group.", "properties": { - "elapsed": { - "description": "The time elapsed in milliseconds.", - "example": 132, - "format": "int64", - "type": "integer" - }, - "page": { - "description": "Paging attributes.", - "properties": { - "after": { - "description": "The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of `page[cursor]`.", - "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", - "type": "string" - } - }, - "type": "object" + "created": { + "description": "The date and time the group was created.", + "example": "2024-10-17T12:53:35.793Z", + "format": "date-time", + "type": "string" }, - "request_id": { - "description": "The identifier of the request.", - "example": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR", + "lastModified": { + "description": "The date and time the group was last changed.", + "example": "2024-10-19T12:53:35.793Z", + "format": "date-time", "type": "string" }, - "status": { - "description": "The status of the response.", - "enum": [ - "done", - "timeout" - ], - "example": "done", - "type": "string", - "x-enum-varnames": [ - "DONE", - "TIMEOUT" - ] + "location": { + "description": "URL identifying the resource.", + "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "type": "string" }, - "warnings": { - "description": "A list of warnings (non-fatal errors) encountered. Partial results may return if\nwarnings are present in the response.", - "items": { - "description": "A warning message indicating something that went wrong with the query.", - "properties": { - "code": { - "description": "A unique code for this type of warning.", - "example": "unknown_index", - "type": "string" - }, - "detail": { - "description": "A detailed explanation of this specific warning.", - "example": "indexes: foo, bar", - "type": "string" - }, - "title": { - "description": "A short human-readable summary of the warning.", - "example": "One or several indexes are missing or invalid, results hold data from the other indexes", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" + "resourceType": { + "description": "Type of resource.", + "example": "Group", + "type": "string" } }, "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "403": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", + }, + "schemas": { + "description": "Input JSON Schemas.", "example": [ - "Bad Request" + "urn:ietf:params:scim:schemas:core:2.0:Group" ], "items": { - "description": "A list of items.", - "example": "Bad Request", "type": "string" }, "type": "array" } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "Not Authorized" + "description": "OK" }, - "429": { + "400": { "content": { "application/json": { "schema": { @@ -314919,67 +332976,9 @@ } } }, - "description": "Too many requests" - } - }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [] - } - ], - "summary": "Search RUM events", - "tags": [ - "RUM" - ], - "x-codegen-request-body-name": "body", - "x-menu-order": 1, - "x-pagination": { - "cursorParam": "body.page.cursor", - "cursorPath": "meta.page.after", - "limitParam": "body.page.limit", - "resultsPath": "data" - }, - "x-permission": { - "operator": "OPEN", - "permissions": [] - }, - "x-undo": { - "type": "safe" - } - } - }, - "/api/v2/saml_configurations/idp_metadata": { - "post": { - "description": "Endpoint for uploading IdP metadata for SAML setup.\n\nUse this endpoint to upload or replace IdP metadata for SAML login configuration.", - "operationId": "UploadIdPMetadata", - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "description": "The form data submitted to upload IdP metadata", - "properties": { - "idp_file": { - "description": "The IdP metadata XML file", - "format": "binary", - "type": "string", - "x-mimetype": "application/xml" - } - }, - "type": "object" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "OK" + "description": "Bad Request" }, - "400": { + "404": { "content": { "application/json": { "schema": { @@ -315005,9 +333004,9 @@ } } }, - "description": "Bad Request" + "description": "Not Found" }, - "403": { + "409": { "content": { "application/json": { "schema": { @@ -315033,7 +333032,7 @@ } } }, - "description": "Forbidden" + "description": "Conflict" }, "429": { "content": { @@ -315064,16 +333063,27 @@ "description": "Too many requests" } }, - "summary": "Upload IdP metadata", + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] + }, + { + "bearerAuth": [] + } + ], + "summary": "Update group", "tags": [ - "Organizations" + "SCIM" ], - "x-codegen-request-body-name": "body", - "x-menu-order": 1, + "x-menu-order": 10, "x-permission": { - "operator": "OR", + "operator": "AND", "permissions": [ - "org_management" + "user_access_invite", + "user_access_manage" ] }, "x-undo": { @@ -315081,10 +333091,10 @@ } } }, - "/api/v2/scim/Groups": { + "/api/v2/scim/Users": { "get": { - "description": "List groups in the organization.\nResults are paginated by `startIndex` and `count` parameters.\nResults can be narrowed down by the `filter` parameter.", - "operationId": "ListSCIMGroups", + "description": "List users in the organization.\nResults are paginated by `startIndex` and `count` parameters.\nResults can be narrowed down by the `filter` parameter.", + "operationId": "ListSCIMUsers", "parameters": [ { "description": "Specifies the start index to fetch the results (1-indexed).", @@ -315099,7 +333109,7 @@ } }, { - "description": "Specifies the number of groups to be returned.", + "description": "Specifies the number of users to be returned.", "in": "query", "name": "count", "required": false, @@ -315111,7 +333121,7 @@ } }, { - "description": "Specifies the url encoded filter to use to narrow down the results.\nFilters can be in the form of `displayName eq ` or `externalId eq `\nor `id eq and members eq ` or `members eq and id eq `.", + "description": "Specifies the url encoded filter to use to narrow down the results.\nFilter should be of the form `userName eq `.", "in": "query", "name": "filter", "required": false, @@ -315125,64 +333135,58 @@ "content": { "application/json": { "schema": { - "description": "List groups response object.", + "description": "List users response object.", "example": { "Resources": [ { - "displayName": "Group 1", - "externalId": "group1", - "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", - "members": [ - { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/d34a5f93-5690-4d3f-a293-f2ad5c7a82a4", - "display": "John Doe", - "type": "User", - "value": "d34a5f93-5690-4d3f-a293-f2ad5c7a82a4" - }, + "active": true, + "emails": [ { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "display": "Jane Doe", - "type": "User", - "value": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6" + "primary": true, + "type": "work", + "value": "john.doe@datadoghq.com" } ], + "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", "meta": { "created": "2024-11-22T15:05:52.055138963Z", "lastModified": "2024-11-22T15:05:52.055139017Z", - "location": "https://app.datadoghq.com/api/scim/v2/Groups/e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", - "resourceType": "Group" + "location": "https://app.datadoghq.com/api/scim/v2/Users/e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", + "resourceType": "User" + }, + "name": { + "formatted": "John Doe" }, "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" - ] + "urn:ietf:params:scim:schemas:core:2.0:User" + ], + "title": "Mr.", + "userName": "john.doe@datadoghq.com" }, { - "displayName": "Group 2", - "externalId": "group2", - "id": "79ef0d28-f257-4829-97e6-d23d2a26cb1a", - "members": [ - { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/29da9fb7-8fca-4e87-bf58-86652253deae", - "display": "Alice Smith", - "type": "User", - "value": "29da9fb7-8fca-4e87-bf58-86652253deae" - }, + "active": true, + "emails": [ { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9", - "display": "Bob Smith", - "type": "User", - "value": "f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9" + "primary": true, + "type": "work", + "value": "jane.doe@datadoghq.com" } ], + "id": "79ef0d28-f257-4829-97e6-d23d2a26cb1a", "meta": { "created": "2024-11-22T15:05:52.055139748Z", "lastModified": "2024-11-22T15:05:52.055139813Z", - "location": "https://app.datadoghq.com/api/scim/v2/Groups/79ef0d28-f257-4829-97e6-d23d2a26cb1a", - "resourceType": "Group" + "location": "https://app.datadoghq.com/api/scim/v2/Users/79ef0d28-f257-4829-97e6-d23d2a26cb1a", + "resourceType": "User" + }, + "name": { + "formatted": "Jane Doe" }, "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" - ] + "urn:ietf:params:scim:schemas:core:2.0:User" + ], + "title": "Mrs.", + "userName": "jane.doe@datadoghq.com" } ], "itemsPerPage": 2, @@ -315194,48 +333198,35 @@ }, "properties": { "Resources": { - "description": "List of groups matching the request criteria.", + "description": "List of users matching the request criteria.", "items": { - "description": "Resources returned in response to a List groups request.", + "description": "Resources returned in response to a List users request.", "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "example": "My test group", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "example": "346af543-e5ab-4855-937d-133231cd59ed", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "example": "0e80d350-9519-4771-9aa8-ce849fc36c20", - "type": "string" + "active": { + "description": "A Boolean value indicating the User's administrative status.", + "type": "boolean" }, - "members": { - "description": "A list of members belonging to the team.", + "emails": { + "description": "Email addresses for the user.", "items": { - "description": "The definition of a member belonging to a group in the List groups response.", + "description": "Email address for the user.", "properties": { - "$ref": { - "description": "The URI corresponding to a resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "Full name of the user.", - "example": "John Doe", - "type": "string" + "primary": { + "description": "Boolean indicating if this email is the primary email address.", + "type": "boolean" }, "type": { - "description": "A label indicating the type of resource. Only supported value is \"User\".", - "example": "User", - "type": "string" + "description": "The type of email.", + "enum": [ + "work" + ], + "type": "string", + "x-enum-varnames": [ + "WORK" + ] }, "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "description": "Email addresses for the user.", "type": "string" } }, @@ -315243,43 +333234,65 @@ }, "type": "array" }, + "id": { + "description": "The identifier of the resource. Not required when creating a user.", + "type": "string" + }, "meta": { - "description": "Metadata associated with a group.", + "description": "Metadata associated with a user.", "properties": { "created": { - "description": "The date and time the group was created.", + "description": "The date and time the user was created.", "example": "2024-10-17T12:53:35.793Z", "format": "date-time", "type": "string" }, "lastModified": { - "description": "The date and time the group was last changed.", + "description": "The date and time the user was last changed.", "example": "2024-10-19T12:53:35.793Z", "format": "date-time", "type": "string" }, "location": { "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", "type": "string" }, "resourceType": { "description": "Type of resource.", - "example": "Group", + "example": "User", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The components of user's real name", + "properties": { + "formatted": { + "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", "type": "string" } }, "type": "object" }, "schemas": { - "description": "Group JSON Schemas.", + "description": "User JSON Schemas.", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:schemas:core:2.0:User" ], "items": { "type": "string" }, "type": "array" + }, + "title": { + "description": "The user's title.", + "type": "string" + }, + "userName": { + "description": "Unique identifier for the User.", + "type": "string" } }, "type": "object" @@ -315287,7 +333300,7 @@ "type": "array" }, "itemsPerPage": { - "description": "Number of groups returned per page.", + "description": "Number of users returned per page.", "format": "int64", "maximum": 4294967295, "minimum": 0, @@ -315304,14 +333317,14 @@ "type": "array" }, "startIndex": { - "description": "Starting index of the groups for this page (1-indexed).", + "description": "Starting index of the users for this page (1-indexed).", "format": "int64", "maximum": 4294967295, "minimum": 0, "type": "integer" }, "totalResults": { - "description": "Total number of groups matching the request criteria.", + "description": "Total number of users matching the request criteria.", "format": "int64", "maximum": 4294967295, "minimum": 0, @@ -315392,11 +333405,11 @@ "bearerAuth": [] } ], - "summary": "List groups", + "summary": "List users", "tags": [ "SCIM" ], - "x-menu-order": 7, + "x-menu-order": 1, "x-permission": { "operator": "AND", "permissions": [ @@ -315409,74 +333422,61 @@ } }, "post": { - "description": "Create a new group.\nThe group may contain members.", - "operationId": "CreateSCIMGroup", + "description": "Create a new user.", + "operationId": "CreateSCIMUser", "requestBody": { "content": { "application/json": { "examples": { "json-request-body": { "value": { - "displayName": "Group 1", - "externalId": "group1", - "members": [ - { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/d34a5f93-5690-4d3f-a293-f2ad5c7a82a4", - "display": "John Doe", - "type": "User", - "value": "d34a5f93-5690-4d3f-a293-f2ad5c7a82a4" - }, + "active": true, + "emails": [ { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "display": "Jane Doe", - "type": "User", - "value": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6" + "primary": true, + "type": "work", + "value": "john.doe@datadoghq.com" } ], + "name": { + "formatted": "John Doe" + }, "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" - ] + "urn:ietf:params:scim:schemas:core:2.0:User" + ], + "title": "Mr.", + "userName": "john.doe@datadoghq.com" } } }, "schema": { - "description": "Definition of a group.", + "description": "Definition of a user.", "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "type": "string" + "active": { + "description": "A Boolean value indicating the User's administrative status.", + "type": "boolean" }, - "members": { - "description": "Members of the group.", + "emails": { + "description": "Email addresses for the user.", "items": { - "description": "The definition of a member belonging to a group.", + "description": "Email address for the user.", "properties": { - "$ref": { - "description": "The URI corresponding to a SCIM resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "A human-readable name for the group member.", - "example": "John Doe", - "type": "string" + "primary": { + "description": "Boolean indicating if this email is the primary email address.", + "type": "boolean" }, "type": { - "description": "A label indicating the type of resource.", - "example": "User", - "type": "string" + "description": "The type of email.", + "enum": [ + "work" + ], + "type": "string", + "x-enum-varnames": [ + "WORK" + ] }, "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "description": "Email addresses for the user.", "type": "string" } }, @@ -315484,43 +333484,65 @@ }, "type": "array" }, + "id": { + "description": "The identifier of the resource. Not required when creating a user.", + "type": "string" + }, "meta": { - "description": "Metadata associated with a group.", + "description": "Metadata associated with a user.", "properties": { "created": { - "description": "The date and time the group was created.", + "description": "The date and time the user was created.", "example": "2024-10-17T12:53:35.793Z", "format": "date-time", "type": "string" }, "lastModified": { - "description": "The date and time the group was last changed.", + "description": "The date and time the user was last changed.", "example": "2024-10-19T12:53:35.793Z", "format": "date-time", "type": "string" }, "location": { "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", "type": "string" }, "resourceType": { "description": "Type of resource.", - "example": "Group", + "example": "User", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The components of user's real name", + "properties": { + "formatted": { + "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", "type": "string" } }, "type": "object" }, "schemas": { - "description": "Input JSON Schemas.", + "description": "User JSON Schemas.", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:schemas:core:2.0:User" ], "items": { "type": "string" }, "type": "array" + }, + "title": { + "description": "The user's title.", + "type": "string" + }, + "userName": { + "description": "Unique identifier for the User.", + "type": "string" } }, "type": "object" @@ -315534,43 +333556,33 @@ "content": { "application/json": { "schema": { - "description": "Definition of a group.", + "description": "Definition of a user.", "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "type": "string" + "active": { + "description": "A Boolean value indicating the User's administrative status.", + "type": "boolean" }, - "members": { - "description": "Members of the group.", + "emails": { + "description": "Email addresses for the user.", "items": { - "description": "The definition of a member belonging to a group.", + "description": "Email address for the user.", "properties": { - "$ref": { - "description": "The URI corresponding to a SCIM resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "A human-readable name for the group member.", - "example": "John Doe", - "type": "string" + "primary": { + "description": "Boolean indicating if this email is the primary email address.", + "type": "boolean" }, "type": { - "description": "A label indicating the type of resource.", - "example": "User", - "type": "string" + "description": "The type of email.", + "enum": [ + "work" + ], + "type": "string", + "x-enum-varnames": [ + "WORK" + ] }, "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "description": "Email addresses for the user.", "type": "string" } }, @@ -315578,43 +333590,65 @@ }, "type": "array" }, + "id": { + "description": "The identifier of the resource. Not required when creating a user.", + "type": "string" + }, "meta": { - "description": "Metadata associated with a group.", + "description": "Metadata associated with a user.", "properties": { "created": { - "description": "The date and time the group was created.", + "description": "The date and time the user was created.", "example": "2024-10-17T12:53:35.793Z", "format": "date-time", "type": "string" }, "lastModified": { - "description": "The date and time the group was last changed.", + "description": "The date and time the user was last changed.", "example": "2024-10-19T12:53:35.793Z", "format": "date-time", "type": "string" }, "location": { "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", "type": "string" }, "resourceType": { "description": "Type of resource.", - "example": "Group", + "example": "User", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The components of user's real name", + "properties": { + "formatted": { + "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", "type": "string" } }, "type": "object" }, "schemas": { - "description": "Input JSON Schemas.", + "description": "User JSON Schemas.", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:schemas:core:2.0:User" ], "items": { "type": "string" }, "type": "array" + }, + "title": { + "description": "The user's title.", + "type": "string" + }, + "userName": { + "description": "Unique identifier for the User.", + "type": "string" } }, "type": "object" @@ -315691,11 +333725,11 @@ "bearerAuth": [] } ], - "summary": "Create group", + "summary": "Create user", "tags": [ "SCIM" ], - "x-menu-order": 8, + "x-menu-order": 2, "x-permission": { "operator": "AND", "permissions": [ @@ -315704,10 +333738,10 @@ ] }, "x-undo": { - "operationId": "DeleteSCIMGroup", + "operationId": "DeleteSCIMUser", "parameters": [ { - "name": "group_id", + "name": "user_uuid", "source": "" } ], @@ -315715,15 +333749,15 @@ } } }, - "/api/v2/scim/Groups/{group_id}": { + "/api/v2/scim/Users/{user_uuid}": { "delete": { - "description": "Delete the group with the given `group_id`.", - "operationId": "DeleteSCIMGroup", + "description": "Delete the group with the given `user_uuid`.", + "operationId": "DeleteSCIMUser", "parameters": [ { "description": "None", "in": "path", - "name": "group_id", + "name": "user_uuid", "required": true, "schema": { "type": "string" @@ -315810,411 +333844,88 @@ } }, "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "security": [ - { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] - }, - { - "bearerAuth": [] - } - ], - "summary": "Delete group", - "tags": [ - "SCIM" - ], - "x-menu-order": 12, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] - }, - "x-undo": { - "type": "idempotent" - } - }, - "get": { - "description": "Get a single group using the `group_id`.", - "operationId": "GetSCIMGroup", - "parameters": [ - { - "description": "None", - "in": "path", - "name": "group_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "Definition of a group.", - "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "type": "string" - }, - "members": { - "description": "Members of the group.", - "items": { - "description": "The definition of a member belonging to a group.", - "properties": { - "$ref": { - "description": "The URI corresponding to a SCIM resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "A human-readable name for the group member.", - "example": "John Doe", - "type": "string" - }, - "type": { - "description": "A label indicating the type of resource.", - "example": "User", - "type": "string" - }, - "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "meta": { - "description": "Metadata associated with a group.", - "properties": { - "created": { - "description": "The date and time the group was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "lastModified": { - "description": "The date and time the group was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "resourceType": { - "description": "Type of resource.", - "example": "Group", - "type": "string" - } - }, - "type": "object" - }, - "schemas": { - "description": "Input JSON Schemas.", - "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "404": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Found" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "security": [ - { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] - }, - { - "bearerAuth": [] - } - ], - "summary": "Get group", - "tags": [ - "SCIM" - ], - "x-menu-order": 9, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] - }, - "x-undo": { - "type": "safe" - } - }, - "patch": { - "description": "Patch the group with the given `group_id`.", - "operationId": "PatchSCIMGroup", - "parameters": [ - { - "description": "None", - "in": "path", - "name": "group_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "examples": { - "json-request-body": { - "value": { - "Operations": [ - { - "op": "replace", - "path": "None", - "value": { - "displayName": "Real new group", - "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad" - } - }, - { - "op": "add", - "path": "None", - "value": { - "members": [ - { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9", - "displayName": "Bob Smith", - "value": "f85e3868-ad7b-47e3-a8a9-ff1eade2bbf9" - } - ] - } - }, - { - "op": "remove", - "path": "members[value eq \"fddf0cf2-9b60-11ef-ad4b-d6754a54a839\"]", - "value": null - } - ], - "schemas": [ - "urn:ietf:params:scim:api:messages:2.0:PatchOp" - ] - } - } - }, - "schema": { - "description": "Request object for patching a group.", - "properties": { - "Operations": { - "description": "A list of update operations to be performed on a group.", - "items": { - "description": "The definition of an individual patch operation in a patch request.", - "properties": { - "op": { - "description": "The operation to be performed.", - "enum": [ - "add", - "replace", - "remove" - ], - "type": "string", - "x-enum-varnames": [ - "ADD", - "REPLACE", - "REMOVE" - ] - }, - "path": { - "description": "An attribute path describing the target of the operation.", - "example": "members", - "type": "string" - }, - "value": { - "description": "JSON element containing the target values required to apply the patch operation.", - "example": "{\n \"displayName\": \"Real new group\",\n \"id\": \"80df3a9b-24f5-4ebf-9ba0-714455453621\"\n}" - } - }, - "type": "object" - }, - "type": "array" - }, - "schemas": { - "description": "Input JSON Schemas", - "example": [ - "urn:ietf:params:scim:api:messages:2.0:PatchOp" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" + "errors" + ], + "type": "object" + } } - } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] }, - "required": true + { + "bearerAuth": [] + } + ], + "summary": "Delete user", + "tags": [ + "SCIM" + ], + "x-menu-order": 6, + "x-permission": { + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] }, + "x-undo": { + "type": "idempotent" + } + }, + "get": { + "description": "Get a single user using the `user_uuid`.", + "operationId": "GetSCIMUser", + "parameters": [ + { + "description": "None", + "in": "path", + "name": "user_uuid", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "description": "Definition of a group.", + "description": "Definition of a user.", "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "type": "string" + "active": { + "description": "A Boolean value indicating the User's administrative status.", + "type": "boolean" }, - "members": { - "description": "Members of the group.", + "emails": { + "description": "Email addresses for the user.", "items": { - "description": "The definition of a member belonging to a group.", + "description": "Email address for the user.", "properties": { - "$ref": { - "description": "The URI corresponding to a SCIM resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "A human-readable name for the group member.", - "example": "John Doe", - "type": "string" + "primary": { + "description": "Boolean indicating if this email is the primary email address.", + "type": "boolean" }, "type": { - "description": "A label indicating the type of resource.", - "example": "User", - "type": "string" + "description": "The type of email.", + "enum": [ + "work" + ], + "type": "string", + "x-enum-varnames": [ + "WORK" + ] }, "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "description": "Email addresses for the user.", "type": "string" } }, @@ -316222,43 +333933,65 @@ }, "type": "array" }, + "id": { + "description": "The identifier of the resource. Not required when creating a user.", + "type": "string" + }, "meta": { - "description": "Metadata associated with a group.", + "description": "Metadata associated with a user.", "properties": { "created": { - "description": "The date and time the group was created.", + "description": "The date and time the user was created.", "example": "2024-10-17T12:53:35.793Z", "format": "date-time", "type": "string" }, "lastModified": { - "description": "The date and time the group was last changed.", + "description": "The date and time the user was last changed.", "example": "2024-10-19T12:53:35.793Z", "format": "date-time", "type": "string" }, "location": { "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", "type": "string" }, "resourceType": { "description": "Type of resource.", - "example": "Group", + "example": "User", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The components of user's real name", + "properties": { + "formatted": { + "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", "type": "string" } }, "type": "object" }, "schemas": { - "description": "Input JSON Schemas.", + "description": "User JSON Schemas.", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:schemas:core:2.0:User" ], "items": { "type": "string" }, "type": "array" + }, + "title": { + "description": "The user's title.", + "type": "string" + }, + "userName": { + "description": "Unique identifier for the User.", + "type": "string" } }, "type": "object" @@ -316267,34 +334000,6 @@ }, "description": "OK" }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, "404": { "content": { "application/json": { @@ -316363,11 +334068,11 @@ "bearerAuth": [] } ], - "summary": "Patch group", + "summary": "Get user", "tags": [ "SCIM" ], - "x-menu-order": 11, + "x-menu-order": 3, "x-permission": { "operator": "AND", "permissions": [ @@ -316376,17 +334081,17 @@ ] }, "x-undo": { - "type": "idempotent" + "type": "safe" } }, - "put": { - "description": "Update the group with the given `group_id`.", - "operationId": "UpdateSCIMGroup", + "patch": { + "description": "Patch the user with the given `user_uuid`.", + "operationId": "PatchSCIMUser", "parameters": [ { "description": "None", "in": "path", - "name": "group_id", + "name": "user_uuid", "required": true, "schema": { "type": "string" @@ -316399,106 +334104,64 @@ "examples": { "json-request-body": { "value": { - "displayName": "Group 1", - "externalId": "group1", - "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", - "members": [ + "Operations": [ { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/d34a5f93-5690-4d3f-a293-f2ad5c7a82a4", - "display": "John Doe", - "type": "User", - "value": "d34a5f93-5690-4d3f-a293-f2ad5c7a82a4" + "op": "replace", + "path": "title", + "value": "CEO" }, { - "$ref": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "display": "Jane Doe", - "type": "User", - "value": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6" + "op": "replace", + "value": { + "name": { + "formatted": "John Doe" + } + } } ], "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:api:messages:2.0:PatchOp" ] } } }, "schema": { - "description": "Definition of a group.", + "description": "Request object for patching a user.", "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "type": "string" - }, - "members": { - "description": "Members of the group.", + "Operations": { + "description": "A list of update operations to be performed on a user.", "items": { - "description": "The definition of a member belonging to a group.", + "description": "The definition of an individual patch operation in a patch request.", "properties": { - "$ref": { - "description": "The URI corresponding to a SCIM resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "A human-readable name for the group member.", - "example": "John Doe", - "type": "string" + "op": { + "description": "The operation to be performed.", + "enum": [ + "add", + "replace" + ], + "type": "string", + "x-enum-varnames": [ + "ADD", + "REPLACE" + ] }, - "type": { - "description": "A label indicating the type of resource.", - "example": "User", + "path": { + "description": "An attribute path describing the target of the operation.", + "example": "title", "type": "string" }, "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" + "description": "New value to use for the patch operation." } }, "type": "object" }, "type": "array" }, - "meta": { - "description": "Metadata associated with a group.", - "properties": { - "created": { - "description": "The date and time the group was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "lastModified": { - "description": "The date and time the group was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "resourceType": { - "description": "Type of resource.", - "example": "Group", - "type": "string" - } - }, - "type": "object" - }, "schemas": { - "description": "Input JSON Schemas.", + "description": "Input JSON Schemas", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:api:messages:2.0:PatchOp" ], "items": { "type": "string" @@ -316517,43 +334180,33 @@ "content": { "application/json": { "schema": { - "description": "Definition of a group.", + "description": "Definition of a user.", "properties": { - "displayName": { - "description": "A human-readable name for the group.", - "type": "string" - }, - "externalId": { - "description": "An identifier for the resource as defined by the provisioning client.", - "type": "string" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a group.", - "type": "string" + "active": { + "description": "A Boolean value indicating the User's administrative status.", + "type": "boolean" }, - "members": { - "description": "Members of the group.", + "emails": { + "description": "Email addresses for the user.", "items": { - "description": "The definition of a member belonging to a group.", + "description": "Email address for the user.", "properties": { - "$ref": { - "description": "The URI corresponding to a SCIM resource that is a member of this group.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", - "type": "string" - }, - "display": { - "description": "A human-readable name for the group member.", - "example": "John Doe", - "type": "string" + "primary": { + "description": "Boolean indicating if this email is the primary email address.", + "type": "boolean" }, "type": { - "description": "A label indicating the type of resource.", - "example": "User", - "type": "string" + "description": "The type of email.", + "enum": [ + "work" + ], + "type": "string", + "x-enum-varnames": [ + "WORK" + ] }, "value": { - "description": "The identifier of the member of this group.", - "example": "429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "description": "Email addresses for the user.", "type": "string" } }, @@ -316561,43 +334214,65 @@ }, "type": "array" }, + "id": { + "description": "The identifier of the resource. Not required when creating a user.", + "type": "string" + }, "meta": { - "description": "Metadata associated with a group.", + "description": "Metadata associated with a user.", "properties": { "created": { - "description": "The date and time the group was created.", + "description": "The date and time the user was created.", "example": "2024-10-17T12:53:35.793Z", "format": "date-time", "type": "string" }, "lastModified": { - "description": "The date and time the group was last changed.", + "description": "The date and time the user was last changed.", "example": "2024-10-19T12:53:35.793Z", "format": "date-time", "type": "string" }, "location": { "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Groups/429ebce5-8ed3-4da9-9f1e-662f2dbc2fe6", + "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", "type": "string" }, "resourceType": { "description": "Type of resource.", - "example": "Group", + "example": "User", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "The components of user's real name", + "properties": { + "formatted": { + "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", "type": "string" } }, "type": "object" }, "schemas": { - "description": "Input JSON Schemas.", + "description": "User JSON Schemas.", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:Group" + "urn:ietf:params:scim:schemas:core:2.0:User" ], "items": { "type": "string" }, "type": "array" + }, + "title": { + "description": "The user's title.", + "type": "string" + }, + "userName": { + "description": "Unique identifier for the User.", + "type": "string" } }, "type": "object" @@ -316634,7 +334309,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -316660,9 +334335,9 @@ } } }, - "description": "Not Found" + "description": "Forbidden" }, - "409": { + "404": { "content": { "application/json": { "schema": { @@ -316688,7 +334363,7 @@ } } }, - "description": "Conflict" + "description": "Not Found" }, "429": { "content": { @@ -316730,11 +334405,11 @@ "bearerAuth": [] } ], - "summary": "Update group", + "summary": "Patch user", "tags": [ "SCIM" ], - "x-menu-order": 10, + "x-menu-order": 5, "x-permission": { "operator": "AND", "permissions": [ @@ -316745,341 +334420,21 @@ "x-undo": { "type": "idempotent" } - } - }, - "/api/v2/scim/Users": { - "get": { - "description": "List users in the organization.\nResults are paginated by `startIndex` and `count` parameters.\nResults can be narrowed down by the `filter` parameter.", - "operationId": "ListSCIMUsers", + }, + "put": { + "description": "Update the user with the given `user_uuid`.", + "operationId": "UpdateSCIMUser", "parameters": [ { - "description": "Specifies the start index to fetch the results (1-indexed).", - "in": "query", - "name": "startIndex", - "required": false, - "schema": { - "default": 1, - "example": 1, - "format": "int64", - "type": "integer" - } - }, - { - "description": "Specifies the number of users to be returned.", - "in": "query", - "name": "count", - "required": false, - "schema": { - "default": 20, - "example": 20, - "format": "int64", - "type": "integer" - } - }, - { - "description": "Specifies the url encoded filter to use to narrow down the results.\nFilter should be of the form `userName eq `.", - "in": "query", - "name": "filter", - "required": false, + "description": "None", + "in": "path", + "name": "user_uuid", + "required": true, "schema": { "type": "string" } } ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "List users response object.", - "example": { - "Resources": [ - { - "active": true, - "emails": [ - { - "primary": true, - "type": "work", - "value": "john.doe@datadoghq.com" - } - ], - "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", - "meta": { - "created": "2024-11-22T15:05:52.055138963Z", - "lastModified": "2024-11-22T15:05:52.055139017Z", - "location": "https://app.datadoghq.com/api/scim/v2/Users/e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", - "resourceType": "User" - }, - "name": { - "formatted": "John Doe" - }, - "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "title": "Mr.", - "userName": "john.doe@datadoghq.com" - }, - { - "active": true, - "emails": [ - { - "primary": true, - "type": "work", - "value": "jane.doe@datadoghq.com" - } - ], - "id": "79ef0d28-f257-4829-97e6-d23d2a26cb1a", - "meta": { - "created": "2024-11-22T15:05:52.055139748Z", - "lastModified": "2024-11-22T15:05:52.055139813Z", - "location": "https://app.datadoghq.com/api/scim/v2/Users/79ef0d28-f257-4829-97e6-d23d2a26cb1a", - "resourceType": "User" - }, - "name": { - "formatted": "Jane Doe" - }, - "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "title": "Mrs.", - "userName": "jane.doe@datadoghq.com" - } - ], - "itemsPerPage": 2, - "schemas": [ - "urn:ietf:params:scim:api:messages:2.0:ListResponse" - ], - "startIndex": 1, - "totalResults": 2 - }, - "properties": { - "Resources": { - "description": "List of users matching the request criteria.", - "items": { - "description": "Resources returned in response to a List users request.", - "properties": { - "active": { - "description": "A Boolean value indicating the User's administrative status.", - "type": "boolean" - }, - "emails": { - "description": "Email addresses for the user.", - "items": { - "description": "Email address for the user.", - "properties": { - "primary": { - "description": "Boolean indicating if this email is the primary email address.", - "type": "boolean" - }, - "type": { - "description": "The type of email.", - "enum": [ - "work" - ], - "type": "string", - "x-enum-varnames": [ - "WORK" - ] - }, - "value": { - "description": "Email addresses for the user.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a user.", - "type": "string" - }, - "meta": { - "description": "Metadata associated with a user.", - "properties": { - "created": { - "description": "The date and time the user was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "lastModified": { - "description": "The date and time the user was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", - "type": "string" - }, - "resourceType": { - "description": "Type of resource.", - "example": "User", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The components of user's real name", - "properties": { - "formatted": { - "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", - "type": "string" - } - }, - "type": "object" - }, - "schemas": { - "description": "User JSON Schemas.", - "example": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "description": "The user's title.", - "type": "string" - }, - "userName": { - "description": "Unique identifier for the User.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "itemsPerPage": { - "description": "Number of users returned per page.", - "format": "int64", - "maximum": 4294967295, - "minimum": 0, - "type": "integer" - }, - "schemas": { - "description": "List response JSON Schemas.", - "example": [ - "urn:ietf:params:scim:api:messages:2.0:ListResponse" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "startIndex": { - "description": "Starting index of the users for this page (1-indexed).", - "format": "int64", - "maximum": 4294967295, - "minimum": 0, - "type": "integer" - }, - "totalResults": { - "description": "Total number of users matching the request criteria.", - "format": "int64", - "maximum": 4294967295, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - } - } - }, - "description": "OK" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Bad Request" - }, - "429": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "security": [ - { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] - }, - { - "bearerAuth": [] - } - ], - "summary": "List users", - "tags": [ - "SCIM" - ], - "x-menu-order": 1, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] - }, - "x-undo": { - "type": "safe" - } - }, - "post": { - "description": "Create a new user.", - "operationId": "CreateSCIMUser", "requestBody": { "content": { "application/json": { @@ -317094,6 +334449,7 @@ "value": "john.doe@datadoghq.com" } ], + "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", "name": { "formatted": "John Doe" }, @@ -317208,7 +334564,7 @@ "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { @@ -317311,7 +334667,7 @@ } } }, - "description": "Created" + "description": "OK" }, "400": { "content": { @@ -317341,6 +334697,34 @@ }, "description": "Bad Request" }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, "429": { "content": { "application/json": { @@ -317360,69 +334744,323 @@ "type": "array" } }, - "required": [ - "errors" - ], + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "AuthZ": [ + "user_access_invite", + "user_access_manage" + ] + }, + { + "bearerAuth": [] + } + ], + "summary": "Update user", + "tags": [ + "SCIM" + ], + "x-menu-order": 4, + "x-permission": { + "operator": "AND", + "permissions": [ + "user_access_invite", + "user_access_manage" + ] + }, + "x-undo": { + "type": "idempotent" + } + } + }, + "/api/v2/scorecard/outcomes": { + "get": { + "description": "Fetches all rule outcomes.", + "operationId": "ListScorecardOutcomes", + "parameters": [ + { + "description": "Size for a given page. The maximum allowed value is 100.", + "in": "query", + "name": "page[size]", + "required": false, + "schema": { + "default": 10, + "example": 10, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Specific offset to use as the beginning of the returned page.", + "in": "query", + "name": "page[offset]", + "required": false, + "schema": { + "default": 0, + "example": 0, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Include related rule details in the response.", + "in": "query", + "name": "include", + "required": false, + "schema": { + "example": "rule", + "type": "string" + } + }, + { + "description": "Return only specified values in the outcome attributes.", + "in": "query", + "name": "fields[outcome]", + "required": false, + "schema": { + "example": "state, service_name", + "type": "string" + } + }, + { + "description": "Return only specified values in the included rule details.", + "in": "query", + "name": "fields[rule]", + "required": false, + "schema": { + "example": "name", + "type": "string" + } + }, + { + "description": "Filter the outcomes on a specific service name.", + "in": "query", + "name": "filter[outcome][service_name]", + "required": false, + "schema": { + "example": "web-store", + "type": "string" + } + }, + { + "description": "Filter the outcomes by a specific state.", + "in": "query", + "name": "filter[outcome][state]", + "required": false, + "schema": { + "example": "fail", + "type": "string" + } + }, + { + "description": "Filter outcomes on whether a rule is enabled/disabled.", + "in": "query", + "name": "filter[rule][enabled]", + "required": false, + "schema": { + "example": true, + "type": "boolean" + } + }, + { + "description": "Filter outcomes based on rule ID.", + "in": "query", + "name": "filter[rule][id]", + "required": false, + "schema": { + "example": "f4485c79-0762-449c-96cf-c31e54a659f6", + "type": "string" + } + }, + { + "description": "Filter outcomes based on rule name.", + "in": "query", + "name": "filter[rule][name]", + "required": false, + "schema": { + "example": "SLOs Defined", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Scorecard outcomes - the result of a rule for a service.", + "properties": { + "data": { + "description": "List of rule outcomes.", + "items": { + "description": "A single rule outcome.", + "properties": { + "attributes": { + "description": "The JSON:API attributes for an outcome.", + "properties": { + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "modified_at": { + "description": "Time of last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "remarks": { + "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.", + "example": "See: Services", + "type": "string" + }, + "service_name": { + "description": "The unique name for a service in the catalog.", + "example": "my-service", + "type": "string" + }, + "state": { + "description": "The state of the rule evaluation.", + "enum": [ + "pass", + "fail", + "skip" + ], + "example": "pass", + "type": "string", + "x-enum-varnames": [ + "PASS", + "FAIL", + "SKIP" + ] + } + }, + "type": "object" + }, + "id": { + "description": "The unique ID for a rule outcome.", + "type": "string" + }, + "relationships": { + "description": "The JSON:API relationship to a scorecard rule.", + "properties": { + "rule": { + "description": "The JSON:API relationship to a scorecard outcome.", + "properties": { + "data": { + "description": "The JSON:API relationship to an outcome, which returns the related rule id.", + "properties": { + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "outcome", + "description": "The JSON:API type for an outcome.", + "enum": [ + "outcome" + ], + "example": "outcome", + "type": "string", + "x-enum-varnames": [ + "OUTCOME" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "included": { + "description": "Array of rule details.", + "items": { + "description": "Attributes of the included rule.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Observability Best Practices", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "links": { + "description": "Links attributes.", + "properties": { + "next": { + "description": "Link for the next set of results.", + "example": "/api/v2/scorecard/outcomes?include=rule&page%5Blimit%5D=100&page%5Boffset%5D=100", + "type": "string" + } + }, + "type": "object" + } + }, "type": "object" } } }, - "description": "Too many requests" - } - }, - "security": [ - { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] - }, - { - "bearerAuth": [] - } - ], - "summary": "Create user", - "tags": [ - "SCIM" - ], - "x-menu-order": 2, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] - }, - "x-undo": { - "operationId": "DeleteSCIMUser", - "parameters": [ - { - "name": "user_uuid", - "source": "" - } - ], - "type": "unsafe" - } - } - }, - "/api/v2/scim/Users/{user_uuid}": { - "delete": { - "description": "Delete the group with the given `user_uuid`.", - "operationId": "DeleteSCIMUser", - "parameters": [ - { - "description": "None", - "in": "path", - "name": "user_uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content" + "description": "OK" }, "400": { "content": { @@ -317452,7 +335090,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -317478,7 +335116,7 @@ } } }, - "description": "Not Found" + "description": "Forbidden" }, "429": { "content": { @@ -317511,152 +335149,283 @@ }, "security": [ { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] + "apiKeyAuth": [], + "appKeyAuth": [] }, { - "bearerAuth": [] + "AuthZ": [ + "apm_service_catalog_read" + ] } ], - "summary": "Delete user", + "summary": "List all rule outcomes", "tags": [ - "SCIM" + "Service Scorecards" ], - "x-menu-order": 6, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] + "x-menu-order": 2, + "x-pagination": { + "limitParam": "page[size]", + "pageOffsetParam": "page[offset]", + "resultsPath": "data" }, "x-undo": { - "type": "idempotent" - } - }, - "get": { - "description": "Get a single user using the `user_uuid`.", - "operationId": "GetSCIMUser", - "parameters": [ - { - "description": "None", - "in": "path", - "name": "user_uuid", - "required": true, - "schema": { - "type": "string" + "type": "safe" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + } + }, + "/api/v2/scorecard/outcomes/batch": { + "post": { + "description": "Sets multiple service-rule outcomes in a single batched request.", + "operationId": "CreateScorecardOutcomesBatch", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Scorecard outcomes batch request.", + "properties": { + "data": { + "description": "Scorecard outcomes batch request data.", + "properties": { + "attributes": { + "description": "The JSON:API attributes for a batched set of scorecard outcomes.", + "properties": { + "results": { + "description": "Set of scorecard outcomes to update.", + "items": { + "description": "Scorecard outcome for a specific rule, for a given service within a batched update.", + "properties": { + "remarks": { + "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.", + "example": "See: Services", + "type": "string" + }, + "rule_id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "service_name": { + "description": "The unique name for a service in the catalog.", + "example": "my-service", + "type": "string" + }, + "state": { + "description": "The state of the rule evaluation.", + "enum": [ + "pass", + "fail", + "skip" + ], + "example": "pass", + "type": "string", + "x-enum-varnames": [ + "PASS", + "FAIL", + "SKIP" + ] + } + }, + "required": [ + "rule_id", + "service_name", + "state" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": { + "default": "batched-outcome", + "description": "The JSON:API type for scorecard outcomes.", + "enum": [ + "batched-outcome" + ], + "example": "batched-outcome", + "type": "string", + "x-enum-varnames": [ + "BATCHED_OUTCOME" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } } - } - ], + }, + "description": "Set of scorecard outcomes.", + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "description": "Definition of a user.", + "description": "Scorecard outcomes batch response.", "properties": { - "active": { - "description": "A Boolean value indicating the User's administrative status.", - "type": "boolean" - }, - "emails": { - "description": "Email addresses for the user.", + "data": { + "description": "List of rule outcomes which were affected during the bulk operation.", "items": { - "description": "Email address for the user.", + "description": "A single rule outcome.", "properties": { - "primary": { - "description": "Boolean indicating if this email is the primary email address.", - "type": "boolean" + "attributes": { + "description": "The JSON:API attributes for an outcome.", + "properties": { + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "modified_at": { + "description": "Time of last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "remarks": { + "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.", + "example": "See: Services", + "type": "string" + }, + "service_name": { + "description": "The unique name for a service in the catalog.", + "example": "my-service", + "type": "string" + }, + "state": { + "description": "The state of the rule evaluation.", + "enum": [ + "pass", + "fail", + "skip" + ], + "example": "pass", + "type": "string", + "x-enum-varnames": [ + "PASS", + "FAIL", + "SKIP" + ] + } + }, + "type": "object" + }, + "id": { + "description": "The unique ID for a rule outcome.", + "type": "string" + }, + "relationships": { + "description": "The JSON:API relationship to a scorecard rule.", + "properties": { + "rule": { + "description": "The JSON:API relationship to a scorecard outcome.", + "properties": { + "data": { + "description": "The JSON:API relationship to an outcome, which returns the related rule id.", + "properties": { + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" }, "type": { - "description": "The type of email.", + "default": "outcome", + "description": "The JSON:API type for an outcome.", "enum": [ - "work" + "outcome" ], + "example": "outcome", "type": "string", "x-enum-varnames": [ - "WORK" + "OUTCOME" ] - }, - "value": { - "description": "Email addresses for the user.", - "type": "string" } }, "type": "object" }, "type": "array" }, - "id": { - "description": "The identifier of the resource. Not required when creating a user.", - "type": "string" - }, "meta": { - "description": "Metadata associated with a user.", + "description": "Metadata pertaining to the bulk operation.", "properties": { - "created": { - "description": "The date and time the user was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "lastModified": { - "description": "The date and time the user was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", - "type": "string" + "total_received": { + "description": "Total number of scorecard results received during the bulk operation.", + "format": "int64", + "type": "integer" }, - "resourceType": { - "description": "Type of resource.", - "example": "User", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The components of user's real name", - "properties": { - "formatted": { - "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", - "type": "string" + "total_updated": { + "description": "Total number of scorecard results modified during the bulk operation.", + "format": "int64", + "type": "integer" } }, "type": "object" - }, - "schemas": { - "description": "User JSON Schemas.", + } + }, + "required": [ + "data", + "meta" + ], + "type": "object" + } + } + }, + "description": "OK" + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", "example": [ - "urn:ietf:params:scim:schemas:core:2.0:User" + "Bad Request" ], "items": { + "description": "A list of items.", + "example": "Bad Request", "type": "string" }, "type": "array" - }, - "title": { - "description": "The user's title.", - "type": "string" - }, - "userName": { - "description": "Unique identifier for the User.", - "type": "string" } }, + "required": [ + "errors" + ], "type": "object" } } }, - "description": "OK" + "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -317682,7 +335451,7 @@ } } }, - "description": "Not Found" + "description": "Forbidden" }, "429": { "content": { @@ -317715,220 +335484,264 @@ }, "security": [ { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] + "apiKeyAuth": [], + "appKeyAuth": [] }, { - "bearerAuth": [] + "AuthZ": [ + "apm_service_catalog_write" + ] } ], - "summary": "Get user", + "summary": "Create outcomes batch", "tags": [ - "SCIM" + "Service Scorecards" ], - "x-menu-order": 3, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] - }, + "x-codegen-request-body-name": "body", + "x-menu-order": 1, "x-undo": { - "type": "safe" - } - }, - "patch": { - "description": "Patch the user with the given `user_uuid`.", - "operationId": "PatchSCIMUser", + "type": "idempotent" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + } + }, + "/api/v2/scorecard/rules": { + "get": { + "description": "Fetch all rules.", + "operationId": "ListScorecardRules", "parameters": [ { - "description": "None", - "in": "path", - "name": "user_uuid", - "required": true, + "description": "Size for a given page. The maximum allowed value is 100.", + "in": "query", + "name": "page[size]", + "required": false, + "schema": { + "default": 10, + "example": 10, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Specific offset to use as the beginning of the returned page.", + "in": "query", + "name": "page[offset]", + "required": false, + "schema": { + "default": 0, + "example": 0, + "format": "int64", + "type": "integer" + } + }, + { + "description": "Include related scorecard details in the response.", + "in": "query", + "name": "include", + "required": false, "schema": { + "example": "scorecard", "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "examples": { - "json-request-body": { - "value": { - "Operations": [ - { - "op": "replace", - "path": "title", - "value": "CEO" - }, - { - "op": "replace", - "value": { - "name": { - "formatted": "John Doe" - } - } - } - ], - "schemas": [ - "urn:ietf:params:scim:api:messages:2.0:PatchOp" - ] - } - } - }, - "schema": { - "description": "Request object for patching a user.", - "properties": { - "Operations": { - "description": "A list of update operations to be performed on a user.", - "items": { - "description": "The definition of an individual patch operation in a patch request.", - "properties": { - "op": { - "description": "The operation to be performed.", - "enum": [ - "add", - "replace" - ], - "type": "string", - "x-enum-varnames": [ - "ADD", - "REPLACE" - ] - }, - "path": { - "description": "An attribute path describing the target of the operation.", - "example": "title", - "type": "string" - }, - "value": { - "description": "New value to use for the patch operation." - } - }, - "type": "object" - }, - "type": "array" - }, - "schemas": { - "description": "Input JSON Schemas", - "example": [ - "urn:ietf:params:scim:api:messages:2.0:PatchOp" - ], - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } + }, + { + "description": "Filter the rules on a rule ID.", + "in": "query", + "name": "filter[rule][id]", + "required": false, + "schema": { + "example": "37d2f990-c885-4972-949b-8b798213a166", + "type": "string" } }, - "required": true - }, + { + "description": "Filter for enabled rules only.", + "in": "query", + "name": "filter[rule][enabled]", + "required": false, + "schema": { + "example": true, + "type": "boolean" + } + }, + { + "description": "Filter for custom rules only.", + "in": "query", + "name": "filter[rule][custom]", + "required": false, + "schema": { + "example": true, + "type": "boolean" + } + }, + { + "description": "Filter rules on the rule name.", + "in": "query", + "name": "filter[rule][name]", + "required": false, + "schema": { + "example": "Code Repos Defined", + "type": "string" + } + }, + { + "description": "Filter rules on the rule description.", + "in": "query", + "name": "filter[rule][description]", + "required": false, + "schema": { + "example": "Identifying", + "type": "string" + } + }, + { + "description": "Return only specific fields in the response for rule attributes.", + "in": "query", + "name": "fields[rule]", + "required": false, + "schema": { + "example": "name, description", + "type": "string" + } + }, + { + "description": "Return only specific fields in the included response for scorecard attributes.", + "in": "query", + "name": "fields[scorecard]", + "required": false, + "schema": { + "example": "name", + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "description": "Definition of a user.", + "description": "Scorecard rules response.", "properties": { - "active": { - "description": "A Boolean value indicating the User's administrative status.", - "type": "boolean" - }, - "emails": { - "description": "Email addresses for the user.", + "data": { + "description": "Array of rule details.", "items": { - "description": "Email address for the user.", + "description": "Rule details.", "properties": { - "primary": { - "description": "Boolean indicating if this email is the primary email address.", - "type": "boolean" + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" + }, + "relationships": { + "description": "Scorecard create rule response relationship.", + "properties": { + "scorecard": { + "description": "Relationship data for a rule.", + "properties": { + "data": { + "description": "Rule relationship data.", + "properties": { + "id": { + "description": "The unique ID for a scorecard.", + "example": "q8MQxk8TCqrHnWkp", + "type": "string" + }, + "type": { + "default": "scorecard", + "description": "The JSON:API type for scorecard.", + "enum": [ + "scorecard" + ], + "example": "scorecard", + "type": "string", + "x-enum-varnames": [ + "SCORECARD" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" }, "type": { - "description": "The type of email.", + "default": "rule", + "description": "The JSON:API type for scorecard rules.", "enum": [ - "work" + "rule" ], + "example": "rule", "type": "string", "x-enum-varnames": [ - "WORK" + "RULE" ] - }, - "value": { - "description": "Email addresses for the user.", - "type": "string" } }, "type": "object" }, "type": "array" }, - "id": { - "description": "The identifier of the resource. Not required when creating a user.", - "type": "string" - }, - "meta": { - "description": "Metadata associated with a user.", - "properties": { - "created": { - "description": "The date and time the user was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "lastModified": { - "description": "The date and time the user was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", - "type": "string" - }, - "resourceType": { - "description": "Type of resource.", - "example": "User", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The components of user's real name", + "links": { + "description": "Links attributes.", "properties": { - "formatted": { - "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", + "next": { + "description": "Link for the next set of rules.", + "example": "/api/v2/scorecard/rules?page%5Blimit%5D=2&page%5Boffset%5D=2&page%5Bsize%5D=2", "type": "string" } }, "type": "object" - }, - "schemas": { - "description": "User JSON Schemas.", - "example": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "description": "The user's title.", - "type": "string" - }, - "userName": { - "description": "Unique identifier for the User.", - "type": "string" } }, "type": "object" @@ -317993,34 +335806,6 @@ }, "description": "Forbidden" }, - "404": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Not Found" - }, "429": { "content": { "application/json": { @@ -318052,278 +335837,232 @@ }, "security": [ { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] + "apiKeyAuth": [], + "appKeyAuth": [] }, { - "bearerAuth": [] + "AuthZ": [ + "apm_service_catalog_read" + ] } ], - "summary": "Patch user", + "summary": "List all rules", "tags": [ - "SCIM" + "Service Scorecards" ], - "x-menu-order": 5, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] + "x-menu-order": 2, + "x-pagination": { + "limitParam": "page[size]", + "pageOffsetParam": "page[offset]", + "resultsPath": "data" }, "x-undo": { - "type": "idempotent" - } + "type": "safe" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." }, - "put": { - "description": "Update the user with the given `user_uuid`.", - "operationId": "UpdateSCIMUser", - "parameters": [ - { - "description": "None", - "in": "path", - "name": "user_uuid", - "required": true, - "schema": { - "type": "string" - } - } - ], + "post": { + "description": "Creates a new rule.", + "operationId": "CreateScorecardRule", "requestBody": { "content": { "application/json": { - "examples": { - "json-request-body": { - "value": { - "active": true, - "emails": [ - { - "primary": true, - "type": "work", - "value": "john.doe@datadoghq.com" - } - ], - "id": "e43536e9-33fe-43f8-90b8-d3e39a7dd6ad", - "name": { - "formatted": "John Doe" - }, - "schemas": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "title": "Mr.", - "userName": "john.doe@datadoghq.com" - } - } - }, "schema": { - "description": "Definition of a user.", + "description": "Scorecard create rule request.", "properties": { - "active": { - "description": "A Boolean value indicating the User's administrative status.", - "type": "boolean" - }, - "emails": { - "description": "Email addresses for the user.", - "items": { - "description": "Email address for the user.", - "properties": { - "primary": { - "description": "Boolean indicating if this email is the primary email address.", - "type": "boolean" - }, - "type": { - "description": "The type of email.", - "enum": [ - "work" - ], - "type": "string", - "x-enum-varnames": [ - "WORK" - ] - }, - "value": { - "description": "Email addresses for the user.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a user.", - "type": "string" - }, - "meta": { - "description": "Metadata associated with a user.", - "properties": { - "created": { - "description": "The date and time the user was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "lastModified": { - "description": "The date and time the user was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", - "type": "string" - }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", - "type": "string" - }, - "resourceType": { - "description": "Type of resource.", - "example": "User", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The components of user's real name", + "data": { + "description": "Scorecard create rule request data.", "properties": { - "formatted": { - "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", - "type": "string" + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] } }, "type": "object" - }, - "schemas": { - "description": "User JSON Schemas.", - "example": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "description": "The user's title.", - "type": "string" - }, - "userName": { - "description": "Unique identifier for the User.", - "type": "string" } }, "type": "object" } } }, + "description": "Rule attributes.", "required": true }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { - "description": "Definition of a user.", + "description": "Created rule in response.", "properties": { - "active": { - "description": "A Boolean value indicating the User's administrative status.", - "type": "boolean" - }, - "emails": { - "description": "Email addresses for the user.", - "items": { - "description": "Email address for the user.", - "properties": { - "primary": { - "description": "Boolean indicating if this email is the primary email address.", - "type": "boolean" - }, - "type": { - "description": "The type of email.", - "enum": [ - "work" - ], - "type": "string", - "x-enum-varnames": [ - "WORK" - ] - }, - "value": { - "description": "Email addresses for the user.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "id": { - "description": "The identifier of the resource. Not required when creating a user.", - "type": "string" - }, - "meta": { - "description": "Metadata associated with a user.", + "data": { + "description": "Create rule response data.", "properties": { - "created": { - "description": "The date and time the user was created.", - "example": "2024-10-17T12:53:35.793Z", - "format": "date-time", - "type": "string" + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } + }, + "type": "object" }, - "lastModified": { - "description": "The date and time the user was last changed.", - "example": "2024-10-19T12:53:35.793Z", - "format": "date-time", + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", "type": "string" }, - "location": { - "description": "URL identifying the resource.", - "example": "https://app.datadoghq.com/api/scim/v2/Users/13a95654-b76d-478d-8636-157a7e461d7c", - "type": "string" + "relationships": { + "description": "Scorecard create rule response relationship.", + "properties": { + "scorecard": { + "description": "Relationship data for a rule.", + "properties": { + "data": { + "description": "Rule relationship data.", + "properties": { + "id": { + "description": "The unique ID for a scorecard.", + "example": "q8MQxk8TCqrHnWkp", + "type": "string" + }, + "type": { + "default": "scorecard", + "description": "The JSON:API type for scorecard.", + "enum": [ + "scorecard" + ], + "example": "scorecard", + "type": "string", + "x-enum-varnames": [ + "SCORECARD" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" }, - "resourceType": { - "description": "Type of resource.", - "example": "User", - "type": "string" - } - }, - "type": "object" - }, - "name": { - "description": "The components of user's real name", - "properties": { - "formatted": { - "description": "The full name, including all middle names, titles, and suffixes as appropriate, formatted for display.", - "type": "string" + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] } }, "type": "object" - }, - "schemas": { - "description": "User JSON Schemas.", - "example": [ - "urn:ietf:params:scim:schemas:core:2.0:User" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "title": { - "description": "The user's title.", - "type": "string" - }, - "userName": { - "description": "Unique identifier for the User.", - "type": "string" } }, "type": "object" } } }, - "description": "OK" + "description": "Created" }, "400": { "content": { @@ -318353,7 +336092,7 @@ }, "description": "Bad Request" }, - "404": { + "403": { "content": { "application/json": { "schema": { @@ -318379,7 +336118,7 @@ } } }, - "description": "Not Found" + "description": "Forbidden" }, "429": { "content": { @@ -318412,313 +336151,93 @@ }, "security": [ { - "AuthZ": [ - "user_access_invite", - "user_access_manage" - ] + "apiKeyAuth": [], + "appKeyAuth": [] }, { - "bearerAuth": [] + "AuthZ": [ + "apm_service_catalog_write" + ] } ], - "summary": "Update user", + "summary": "Create a new rule", "tags": [ - "SCIM" + "Service Scorecards" ], - "x-menu-order": 4, - "x-permission": { - "operator": "AND", - "permissions": [ - "user_access_invite", - "user_access_manage" - ] + "x-codegen-request-body-name": "body", + "x-given": { + "create_scorecard_rule": { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"rule\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"enabled\": true,\n \"owner\": \"Datadog\",\n \"scorecard_name\": \"OpenAPI Spec Test Best Practices\"\n }\n }\n}" + } + ], + "step": "there is a valid \"create_scorecard_rule\" in the system" + } }, + "x-menu-order": 1, "x-undo": { - "type": "idempotent" - } + "operationId": "DeleteScorecardRule", + "parameters": [ + { + "name": "rule_id", + "source": "data.id" + } + ], + "type": "unsafe" + }, + "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." } }, - "/api/v2/scorecard/outcomes": { - "get": { - "description": "Fetches all rule outcomes.", - "operationId": "ListScorecardOutcomes", + "/api/v2/scorecard/rules/{rule_id}": { + "delete": { + "description": "Deletes a single rule.", + "operationId": "DeleteScorecardRule", "parameters": [ { - "description": "Size for a given page. The maximum allowed value is 100.", - "in": "query", - "name": "page[size]", - "required": false, - "schema": { - "default": 10, - "example": 10, - "format": "int64", - "type": "integer" - } - }, - { - "description": "Specific offset to use as the beginning of the returned page.", - "in": "query", - "name": "page[offset]", - "required": false, - "schema": { - "default": 0, - "example": 0, - "format": "int64", - "type": "integer" - } - }, - { - "description": "Include related rule details in the response.", - "in": "query", - "name": "include", - "required": false, - "schema": { - "example": "rule", - "type": "string" - } - }, - { - "description": "Return only specified values in the outcome attributes.", - "in": "query", - "name": "fields[outcome]", - "required": false, - "schema": { - "example": "state, service_name", - "type": "string" - } - }, - { - "description": "Return only specified values in the included rule details.", - "in": "query", - "name": "fields[rule]", - "required": false, - "schema": { - "example": "name", - "type": "string" - } - }, - { - "description": "Filter the outcomes on a specific service name.", - "in": "query", - "name": "filter[outcome][service_name]", - "required": false, - "schema": { - "example": "web-store", - "type": "string" - } - }, - { - "description": "Filter the outcomes by a specific state.", - "in": "query", - "name": "filter[outcome][state]", - "required": false, - "schema": { - "example": "fail", - "type": "string" - } - }, - { - "description": "Filter outcomes on whether a rule is enabled/disabled.", - "in": "query", - "name": "filter[rule][enabled]", - "required": false, - "schema": { - "example": true, - "type": "boolean" - } - }, - { - "description": "Filter outcomes based on rule ID.", - "in": "query", - "name": "filter[rule][id]", - "required": false, - "schema": { - "example": "f4485c79-0762-449c-96cf-c31e54a659f6", - "type": "string" - } - }, - { - "description": "Filter outcomes based on rule name.", - "in": "query", - "name": "filter[rule][name]", - "required": false, + "description": "The ID of the rule.", + "in": "path", + "name": "rule_id", + "required": true, "schema": { - "example": "SLOs Defined", "type": "string" } } ], "responses": { - "200": { + "204": { + "description": "OK" + }, + "400": { "content": { "application/json": { "schema": { - "description": "Scorecard outcomes - the result of a rule for a service.", + "description": "API error response.", "properties": { - "data": { - "description": "List of rule outcomes.", - "items": { - "description": "A single rule outcome.", - "properties": { - "attributes": { - "description": "The JSON:API attributes for an outcome.", - "properties": { - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "modified_at": { - "description": "Time of last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "remarks": { - "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.", - "example": "See: Services", - "type": "string" - }, - "service_name": { - "description": "The unique name for a service in the catalog.", - "example": "my-service", - "type": "string" - }, - "state": { - "description": "The state of the rule evaluation.", - "enum": [ - "pass", - "fail", - "skip" - ], - "example": "pass", - "type": "string", - "x-enum-varnames": [ - "PASS", - "FAIL", - "SKIP" - ] - } - }, - "type": "object" - }, - "id": { - "description": "The unique ID for a rule outcome.", - "type": "string" - }, - "relationships": { - "description": "The JSON:API relationship to a scorecard rule.", - "properties": { - "rule": { - "description": "The JSON:API relationship to a scorecard outcome.", - "properties": { - "data": { - "description": "The JSON:API relationship to an outcome, which returns the related rule id.", - "properties": { - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": { - "default": "outcome", - "description": "The JSON:API type for an outcome.", - "enum": [ - "outcome" - ], - "example": "outcome", - "type": "string", - "x-enum-varnames": [ - "OUTCOME" - ] - } - }, - "type": "object" - }, - "type": "array" - }, - "included": { - "description": "Array of rule details.", + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "Attributes of the included rule.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" - }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Observability Best Practices", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" - }, - "links": { - "description": "Links attributes.", - "properties": { - "next": { - "description": "Link for the next set of results.", - "example": "/api/v2/scorecard/outcomes?include=rule&page%5Blimit%5D=100&page%5Boffset%5D=100", - "type": "string" - } - }, - "type": "object" } }, + "required": [ + "errors" + ], "type": "object" } } }, - "description": "OK" + "description": "Bad Request" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -318744,9 +336263,9 @@ } } }, - "description": "Bad Request" + "description": "Forbidden" }, - "403": { + "404": { "content": { "application/json": { "schema": { @@ -318772,7 +336291,7 @@ } } }, - "description": "Forbidden" + "description": "Not Found" }, "429": { "content": { @@ -318810,100 +336329,101 @@ }, { "AuthZ": [ - "apm_service_catalog_read" + "apm_service_catalog_write" ] } ], - "summary": "List all rule outcomes", + "summary": "Delete a rule", "tags": [ "Service Scorecards" ], - "x-menu-order": 2, - "x-pagination": { - "limitParam": "page[size]", - "pageOffsetParam": "page[offset]", - "resultsPath": "data" - }, + "x-menu-order": 3, "x-undo": { - "type": "safe" + "type": "idempotent" }, "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - } - }, - "/api/v2/scorecard/outcomes/batch": { - "post": { - "description": "Sets multiple service-rule outcomes in a single batched request.", - "operationId": "CreateScorecardOutcomesBatch", + }, + "put": { + "description": "Updates an existing rule.", + "operationId": "UpdateScorecardRule", + "parameters": [ + { + "description": "The ID of the rule.", + "in": "path", + "name": "rule_id", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "description": "Scorecard outcomes batch request.", + "description": "Request to update a scorecard rule.", "properties": { "data": { - "description": "Scorecard outcomes batch request data.", + "description": "Data for the request to update a scorecard rule.", "properties": { "attributes": { - "description": "The JSON:API attributes for a batched set of scorecard outcomes.", + "description": "Details of a rule.", "properties": { - "results": { - "description": "Set of scorecard outcomes to update.", - "items": { - "description": "Scorecard outcome for a specific rule, for a given service within a batched update.", - "properties": { - "remarks": { - "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.", - "example": "See: Services", - "type": "string" - }, - "rule_id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "service_name": { - "description": "The unique name for a service in the catalog.", - "example": "my-service", - "type": "string" - }, - "state": { - "description": "The state of the rule evaluation.", - "enum": [ - "pass", - "fail", - "skip" - ], - "example": "pass", - "type": "string", - "x-enum-varnames": [ - "PASS", - "FAIL", - "SKIP" - ] - } - }, - "required": [ - "rule_id", - "service_name", - "state" - ], - "type": "object" - }, - "type": "array" + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" } }, "type": "object" }, "type": { - "default": "batched-outcome", - "description": "The JSON:API type for scorecard outcomes.", + "default": "rule", + "description": "The JSON:API type for scorecard rules.", "enum": [ - "batched-outcome" + "rule" ], - "example": "batched-outcome", + "example": "rule", "type": "string", "x-enum-varnames": [ - "BATCHED_OUTCOME" + "RULE" ] } }, @@ -318914,7 +336434,7 @@ } } }, - "description": "Set of scorecard outcomes.", + "description": "Rule attributes.", "required": true }, "responses": { @@ -318922,136 +336442,120 @@ "content": { "application/json": { "schema": { - "description": "Scorecard outcomes batch response.", + "description": "The response from a rule update request.", "properties": { "data": { - "description": "List of rule outcomes which were affected during the bulk operation.", - "items": { - "description": "A single rule outcome.", - "properties": { - "attributes": { - "description": "The JSON:API attributes for an outcome.", - "properties": { - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "modified_at": { - "description": "Time of last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "remarks": { - "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.", - "example": "See: Services", - "type": "string" - }, - "service_name": { - "description": "The unique name for a service in the catalog.", - "example": "my-service", - "type": "string" - }, - "state": { - "description": "The state of the rule evaluation.", - "enum": [ - "pass", - "fail", - "skip" - ], - "example": "pass", - "type": "string", - "x-enum-varnames": [ - "PASS", - "FAIL", - "SKIP" - ] - } + "description": "The data for a rule update response.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": true, + "description": "The scorecard name to which this rule must belong.", + "type": "string" }, - "type": "object" - }, - "id": { - "description": "The unique ID for a rule outcome.", - "type": "string" - }, - "relationships": { - "description": "The JSON:API relationship to a scorecard rule.", - "properties": { - "rule": { - "description": "The JSON:API relationship to a scorecard outcome.", - "properties": { - "data": { - "description": "The JSON:API relationship to an outcome, which returns the related rule id.", - "properties": { - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string" }, - "type": "object" + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean" + }, + "description": { + "description": "Explanation of the rule.", + "type": "string" + }, + "enabled": { + "description": "If enabled, the rule is calculated as part of the score.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string" + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string" + }, + "owner": { + "description": "Owner of the rule.", + "type": "string" + }, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string" + } }, - "type": { - "default": "outcome", - "description": "The JSON:API type for an outcome.", - "enum": [ - "outcome" - ], - "example": "outcome", - "type": "string", - "x-enum-varnames": [ - "OUTCOME" - ] - } + "type": "object" }, - "type": "object" - }, - "type": "array" - }, - "meta": { - "description": "Metadata pertaining to the bulk operation.", - "properties": { - "total_received": { - "description": "Total number of scorecard results received during the bulk operation.", - "format": "int64", - "type": "integer" + "id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string" }, - "total_updated": { - "description": "Total number of scorecard results modified during the bulk operation.", - "format": "int64", - "type": "integer" + "relationships": { + "description": "Scorecard create rule response relationship.", + "properties": { + "scorecard": { + "description": "Relationship data for a rule.", + "properties": { + "data": { + "description": "Rule relationship data.", + "properties": { + "id": { + "description": "The unique ID for a scorecard.", + "example": "q8MQxk8TCqrHnWkp", + "type": "string" + }, + "type": { + "default": "scorecard", + "description": "The JSON:API type for scorecard.", + "enum": [ + "scorecard" + ], + "example": "scorecard", + "type": "string", + "x-enum-varnames": [ + "SCORECARD" + ] + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": [ + "rule" + ], + "example": "rule", + "type": "string", + "x-enum-varnames": [ + "RULE" + ] } }, "type": "object" } }, - "required": [ - "data", - "meta" - ], "type": "object" } } }, - "description": "OK" + "description": "Rule updated successfully" }, "400": { "content": { @@ -319149,124 +336653,198 @@ ] } ], - "summary": "Create outcomes batch", + "summary": "Update an existing rule", "tags": [ "Service Scorecards" ], "x-codegen-request-body-name": "body", - "x-menu-order": 1, + "x-menu-order": 4, "x-undo": { "type": "idempotent" }, "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." } }, - "/api/v2/scorecard/rules": { + "/api/v2/security/assets": { "get": { - "description": "Fetch all rules.", - "operationId": "ListScorecardRules", + "description": "Get a list of vulnerable assets.\n\n### Pagination\n\nPlease review the [Pagination section for the \"List Vulnerabilities\"](#pagination) endpoint.\n\n### Filtering\n\nPlease review the [Filtering section for the \"List Vulnerabilities\"](#filtering) endpoint.\n\n### Metadata\n\nPlease review the [Metadata section for the \"List Vulnerabilities\"](#metadata) endpoint.\n", + "operationId": "ListVulnerableAssets", "parameters": [ { - "description": "Size for a given page. The maximum allowed value is 100.", + "description": "Its value must come from the `links` section of the response of the first request. Do not manually edit it.", + "example": "b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", "in": "query", - "name": "page[size]", + "name": "page[token]", "required": false, "schema": { - "default": 10, - "example": 10, - "format": "int64", - "type": "integer" + "type": "string" } }, { - "description": "Specific offset to use as the beginning of the returned page.", + "description": "The page number to be retrieved. It should be equal or greater than `1`", + "example": 1, "in": "query", - "name": "page[offset]", + "name": "page[number]", "required": false, "schema": { - "default": 0, - "example": 0, "format": "int64", + "minimum": 1, "type": "integer" } }, { - "description": "Include related scorecard details in the response.", + "description": "Filter by name.", + "example": "datadog-agent", + "in": "query", + "name": "filter[name]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter by type.", + "example": "Host", + "in": "query", + "name": "filter[type]", + "required": false, + "schema": { + "description": "The asset type", + "enum": [ + "Repository", + "Service", + "Host", + "HostImage", + "Image" + ], + "example": "Repository", + "type": "string", + "x-enum-varnames": [ + "REPOSITORY", + "SERVICE", + "HOST", + "HOSTIMAGE", + "IMAGE" + ] + } + }, + { + "description": "Filter by the first version of the asset since it has been vulnerable.", + "example": "v1.15.1", + "in": "query", + "name": "filter[version.first]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter by the last detected version of the asset.", + "example": "v1.15.1", + "in": "query", + "name": "filter[version.last]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter by the repository url associated to the asset.", + "example": "github.com/DataDog/datadog-agent.git", + "in": "query", + "name": "filter[repository_url]", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Filter whether the asset is in production or not.", + "example": false, + "in": "query", + "name": "filter[risks.in_production]", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Filter whether the asset (Service) is under attack or not.", + "example": false, "in": "query", - "name": "include", + "name": "filter[risks.under_attack]", "required": false, "schema": { - "example": "scorecard", - "type": "string" + "type": "boolean" } }, { - "description": "Filter the rules on a rule ID.", + "description": "Filter whether the asset (Host) is publicly accessible or not.", + "example": false, "in": "query", - "name": "filter[rule][id]", + "name": "filter[risks.is_publicly_accessible]", "required": false, "schema": { - "example": "37d2f990-c885-4972-949b-8b798213a166", - "type": "string" + "type": "boolean" } }, { - "description": "Filter for enabled rules only.", + "description": "Filter whether the asset (Host) has privileged access or not.", + "example": false, "in": "query", - "name": "filter[rule][enabled]", + "name": "filter[risks.has_privileged_access]", "required": false, "schema": { - "example": true, "type": "boolean" } }, { - "description": "Filter for custom rules only.", + "description": "Filter whether the asset (Host) has access to sensitive data or not.", + "example": false, "in": "query", - "name": "filter[rule][custom]", + "name": "filter[risks.has_access_to_sensitive_data]", "required": false, "schema": { - "example": true, "type": "boolean" } }, { - "description": "Filter rules on the rule name.", + "description": "Filter by environment.", + "example": "staging", "in": "query", - "name": "filter[rule][name]", + "name": "filter[environments]", "required": false, "schema": { - "example": "Code Repos Defined", "type": "string" } }, { - "description": "Filter rules on the rule description.", + "description": "Filter by architecture.", + "example": "arm64", "in": "query", - "name": "filter[rule][description]", + "name": "filter[arch]", "required": false, "schema": { - "example": "Identifying", "type": "string" } }, { - "description": "Return only specific fields in the response for rule attributes.", + "description": "Filter by operating system name.", + "example": "ubuntu", "in": "query", - "name": "fields[rule]", + "name": "filter[operating_system.name]", "required": false, "schema": { - "example": "name, description", "type": "string" } }, { - "description": "Return only specific fields in the included response for scorecard attributes.", + "description": "Filter by operating system version.", + "example": "24.04", "in": "query", - "name": "fields[scorecard]", + "name": "filter[operating_system.version]", "required": false, "schema": { - "example": "name", "type": "string" } } @@ -319276,130 +336854,228 @@ "content": { "application/json": { "schema": { - "description": "Scorecard rules response.", + "description": "The expected response schema when listing vulnerable assets.", "properties": { "data": { - "description": "Array of rule details.", + "description": "List of vulnerable assets.", "items": { - "description": "Rule details.", + "description": "A single vulnerable asset", "properties": { "attributes": { - "description": "Details of a rule.", + "description": "The JSON:API attributes of the asset.", "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", + "arch": { + "description": "Asset architecture.", + "example": "arm64", "type": "string" }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" + "environments": { + "description": "List of environments where the asset is deployed.", + "example": [ + "staging" + ], + "items": { + "example": "staging", + "type": "string" + }, + "type": "array" }, - "description": { - "description": "Explanation of the rule.", + "name": { + "description": "Asset name.", + "example": "github.com/DataDog/datadog-agent.git", "type": "string" }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" + "operating_system": { + "description": "Asset operating system.", + "properties": { + "description": { + "description": "Operating system version.", + "example": "24.04", + "type": "string" + }, + "name": { + "description": "Operating system name.", + "example": "ubuntu", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" + "risks": { + "description": "Asset risks.", + "properties": { + "has_access_to_sensitive_data": { + "description": "Whether the asset has access to sensitive data or not.", + "example": false, + "type": "boolean" + }, + "has_privileged_access": { + "description": "Whether the asset has privileged access or not.", + "example": false, + "type": "boolean" + }, + "in_production": { + "description": "Whether the asset is in production or not.", + "example": false, + "type": "boolean" + }, + "is_publicly_accessible": { + "description": "Whether the asset is publicly accessible or not.", + "example": false, + "type": "boolean" + }, + "under_attack": { + "description": "Whether the asset is under attack or not.", + "example": false, + "type": "boolean" + } + }, + "required": [ + "in_production" + ], + "type": "object" }, - "owner": { - "description": "Owner of the rule.", - "type": "string" + "type": { + "description": "The asset type", + "enum": [ + "Repository", + "Service", + "Host", + "HostImage", + "Image" + ], + "example": "Repository", + "type": "string", + "x-enum-varnames": [ + "REPOSITORY", + "SERVICE", + "HOST", + "HOSTIMAGE", + "IMAGE" + ] }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "relationships": { - "description": "Scorecard create rule response relationship.", - "properties": { - "scorecard": { - "description": "Relationship data for a rule.", + "version": { + "description": "Asset version.", "properties": { - "data": { - "description": "Rule relationship data.", - "properties": { - "id": { - "description": "The unique ID for a scorecard.", - "example": "q8MQxk8TCqrHnWkp", - "type": "string" - }, - "type": { - "default": "scorecard", - "description": "The JSON:API type for scorecard.", - "enum": [ - "scorecard" - ], - "example": "scorecard", - "type": "string", - "x-enum-varnames": [ - "SCORECARD" - ] - } - }, - "type": "object" + "first": { + "description": "Asset first version.", + "example": "_latest", + "type": "string" + }, + "last": { + "description": "Asset last version.", + "example": "_latest", + "type": "string" } }, "type": "object" } }, + "required": [ + "name", + "type", + "risks", + "environments" + ], "type": "object" }, + "id": { + "description": "The unique ID for this asset.", + "example": "Repository|github.com/DataDog/datadog-agent.git", + "type": "string" + }, "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", + "description": "The JSON:API type.", "enum": [ - "rule" + "assets" ], - "example": "rule", + "example": "assets", "type": "string", "x-enum-varnames": [ - "RULE" + "ASSETS" ] } }, + "required": [ + "id", + "type", + "attributes" + ], "type": "object" }, "type": "array" }, "links": { - "description": "Links attributes.", + "description": "The JSON:API links related to pagination.", "properties": { + "first": { + "description": "First page link.", + "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=1&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "type": "string" + }, + "last": { + "description": "Last page link.", + "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=15&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "type": "string" + }, "next": { - "description": "Link for the next set of rules.", - "example": "/api/v2/scorecard/rules?page%5Blimit%5D=2&page%5Boffset%5D=2&page%5Bsize%5D=2", + "description": "Next page link.", + "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=16&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "type": "string" + }, + "previous": { + "description": "Previous page link.", + "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=14&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "type": "string" + }, + "self": { + "description": "Request link.", + "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?filter%5Btool%5D=Infra", + "type": "string" + } + }, + "required": [ + "self", + "first", + "last" + ], + "type": "object" + }, + "meta": { + "description": "The metadata related to this request.", + "properties": { + "count": { + "description": "Number of entities included in the response.", + "example": 150, + "format": "int64", + "type": "integer" + }, + "token": { + "description": "The token that identifies the request.", + "example": "b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", "type": "string" + }, + "total": { + "description": "Total number of entities across all pages.", + "example": 152431, + "format": "int64", + "type": "integer" } }, + "required": [ + "count", + "total", + "token" + ], "type": "object" } }, + "required": [ + "data" + ], "type": "object" } } @@ -319414,13 +337090,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -319432,7 +337147,7 @@ } } }, - "description": "Bad Request" + "description": "Bad request: The server cannot process the request due to invalid syntax in the request." }, "403": { "content": { @@ -319442,13 +337157,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -319460,9 +337214,9 @@ } } }, - "description": "Forbidden" + "description": "Forbidden: Access denied" }, - "429": { + "404": { "content": { "application/json": { "schema": { @@ -319470,257 +337224,66 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "errors" - ], - "type": "object" - } - } - }, - "description": "Too many requests" - } - }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_service_catalog_read" - ] - } - ], - "summary": "List all rules", - "tags": [ - "Service Scorecards" - ], - "x-menu-order": 2, - "x-pagination": { - "limitParam": "page[size]", - "pageOffsetParam": "page[offset]", - "resultsPath": "data" - }, - "x-undo": { - "type": "safe" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - }, - "post": { - "description": "Creates a new rule.", - "operationId": "CreateScorecardRule", - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "Scorecard create rule request.", - "properties": { - "data": { - "description": "Scorecard create rule request data.", - "properties": { - "attributes": { - "description": "Details of a rule.", + "description": "API error response body", "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" - }, - "description": { - "description": "Explanation of the rule.", + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", "type": "string" }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" }, - "owner": { - "description": "Owner of the rule.", + "status": { + "description": "Status code of the response.", + "example": "400", "type": "string" }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", "type": "string" } }, "type": "object" }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "Rule attributes.", - "required": true - }, - "responses": { - "201": { - "content": { - "application/json": { - "schema": { - "description": "Created rule in response.", - "properties": { - "data": { - "description": "Create rule response data.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" - }, - "description": { - "description": "Explanation of the rule.", - "type": "string" - }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" - }, - "owner": { - "description": "Owner of the rule.", - "type": "string" - }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "relationships": { - "description": "Scorecard create rule response relationship.", - "properties": { - "scorecard": { - "description": "Relationship data for a rule.", - "properties": { - "data": { - "description": "Rule relationship data.", - "properties": { - "id": { - "description": "The unique ID for a scorecard.", - "example": "q8MQxk8TCqrHnWkp", - "type": "string" - }, - "type": { - "default": "scorecard", - "description": "The JSON:API type for scorecard.", - "enum": [ - "scorecard" - ], - "example": "scorecard", - "type": "string", - "x-enum-varnames": [ - "SCORECARD" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" + "type": "array" } }, + "required": [ + "errors" + ], "type": "object" } } }, - "description": "Created" + "description": "Not found: There is no request associated with the provided token." }, - "400": { + "429": { "content": { "application/json": { "schema": { @@ -319746,7 +337309,41 @@ } } }, - "description": "Bad Request" + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + } + ], + "summary": "List vulnerable assets", + "tags": [ + "Security Monitoring" + ], + "x-menu-order": 26, + "x-undo": { + "type": "safe" + }, + "x-unstable": "**Note**: This endpoint is a private preview.\nIf you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9)." + } + }, + "/api/v2/security/cloud_workload/policy/download": { + "get": { + "description": "The download endpoint generates a Cloud Workload Security policy file from your currently active\nCloud Workload Security rules, and downloads them as a .policy file. This file can then be deployed to\nyour Agents to update the policy running in your environment.", + "operationId": "DownloadCloudWorkloadPolicyFile", + "responses": { + "200": { + "content": { + "application/yaml": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "OK" }, "403": { "content": { @@ -319774,7 +337371,7 @@ } } }, - "description": "Forbidden" + "description": "Not Authorized" }, "429": { "content": { @@ -319805,64 +337402,252 @@ "description": "Too many requests" } }, - "security": [ - { - "apiKeyAuth": [], - "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_service_catalog_write" - ] - } - ], - "summary": "Create a new rule", + "summary": "Get the latest Cloud Workload Security policy", "tags": [ - "Service Scorecards" + "CSM Threats" ], - "x-codegen-request-body-name": "body", - "x-given": { - "create_scorecard_rule": { - "parameters": [ - { - "name": "body", - "value": "{\n \"data\": {\n \"type\": \"rule\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"enabled\": true,\n \"owner\": \"Datadog\",\n \"scorecard_name\": \"OpenAPI Spec Test Best Practices\"\n }\n }\n}" - } - ], - "step": "there is a valid \"create_scorecard_rule\" in the system" - } - }, "x-menu-order": 1, - "x-undo": { - "operationId": "DeleteScorecardRule", - "parameters": [ - { - "name": "rule_id", - "source": "data.id" - } - ], - "type": "unsafe" + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_cws_agent_rules_read" + ] }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + "x-undo": { + "type": "safe" + } } }, - "/api/v2/scorecard/rules/{rule_id}": { - "delete": { - "description": "Deletes a single rule.", - "operationId": "DeleteScorecardRule", + "/api/v2/security/sboms/{asset_type}": { + "get": { + "description": "Get a single SBOM related to an asset by its type and name.\n", + "operationId": "GetSBOM", "parameters": [ { - "description": "The ID of the rule.", + "description": "The type of the asset for the SBOM request.", + "example": "Repository", "in": "path", - "name": "rule_id", + "name": "asset_type", + "required": true, + "schema": { + "description": "The asset type", + "enum": [ + "Repository", + "Service", + "Host", + "HostImage", + "Image" + ], + "example": "Repository", + "type": "string", + "x-enum-varnames": [ + "REPOSITORY", + "SERVICE", + "HOST", + "HOSTIMAGE", + "IMAGE" + ] + } + }, + { + "description": "The name of the asset for the SBOM request.", + "example": "github.com/datadog/datadog-agent", + "in": "query", + "name": "filter[asset_name]", "required": true, "schema": { "type": "string" } + }, + { + "description": "The container image `repo_digest` for the SBOM request. When the requested asset type is 'Image', this filter is mandatory.", + "example": "sha256:0ae7da091191787229d321e3638e39c319a97d6e20f927d465b519d699215bf7", + "in": "query", + "name": "filter[repo_digest]", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { - "204": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "The expected response schema when getting an SBOM.", + "properties": { + "data": { + "description": "A single SBOM", + "properties": { + "attributes": { + "description": "The JSON:API attributes of the SBOM.", + "properties": { + "bomFormat": { + "description": "Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOM do not have a filename convention nor does JSON schema support namespaces. This value MUST be `CycloneDX`.", + "example": "CycloneDX", + "type": "string" + }, + "components": { + "description": "A list of software and hardware components.", + "items": { + "description": "Software or hardware component.", + "properties": { + "bom-ref": { + "description": "An optional identifier that can be used to reference the component elsewhere in the BOM.", + "example": "pkg:golang/google.golang.org/grpc@1.68.1", + "type": "string" + }, + "name": { + "description": "The name of the component. This will often be a shortened, single name of the component.", + "example": "google.golang.org/grpc", + "type": "string" + }, + "purl": { + "description": "Specifies the package-url (purl). The purl, if specified, MUST be valid and conform to the [specification](https://github.com/package-url/purl-spec).", + "example": "pkg:golang/google.golang.org/grpc@1.68.1", + "type": "string" + }, + "type": { + "description": "The SBOM component type", + "enum": [ + "application", + "container", + "data", + "device", + "device-driver", + "file", + "firmware", + "framework", + "library", + "machine-learning-model", + "operating-system", + "platform" + ], + "example": "application", + "type": "string", + "x-enum-varnames": [ + "APPLICATION", + "CONTAINER", + "DATA", + "DEVICE", + "DEVICE_DRIVER", + "FILE", + "FIRMWARE", + "FRAMEWORK", + "LIBRARY", + "MACHINE_LEARNING_MODEL", + "OPERATING_SYSTEM", + "PLATFORM" + ] + }, + "version": { + "description": "The component version.", + "example": "1.68.1", + "type": "string" + } + }, + "required": [ + "type", + "name", + "version" + ], + "type": "object" + }, + "type": "array" + }, + "metadata": { + "description": "Provides additional information about a BOM.", + "properties": { + "component": { + "description": "The component that the BOM describes.", + "properties": { + "name": { + "description": "The name of the component. This will often be a shortened, single name of the component.", + "example": "github.com/datadog/datadog-agent", + "type": "string" + }, + "type": { + "description": "Specifies the type of the component.", + "example": "application", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serialNumber": { + "description": "Every BOM generated has a unique serial number, even if the contents of the BOM have not changed overt time. The serial number follows [RFC-4122](https://datatracker.ietf.org/doc/html/rfc4122)", + "example": "urn:uuid:f7119d2f-1vgh-24b5-91f0-12010db72da7", + "type": "string" + }, + "specVersion": { + "description": "The version of the CycloneDX specification a BOM conforms to.", + "enum": [ + "1.0", + "1.1", + "1.2", + "1.3", + "1.4", + "1.5" + ], + "example": "1.5", + "type": "string", + "x-enum-varnames": [ + "ONE_ZERO", + "ONE_ONE", + "ONE_TWO", + "ONE_THREE", + "ONE_FOUR", + "ONE_FIVE" + ] + }, + "version": { + "description": "It increments when a BOM is modified. The default value is 1.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "bomFormat", + "specVersion", + "components", + "metadata", + "serialNumber", + "version" + ], + "type": "object" + }, + "id": { + "description": "The unique ID for this SBOM (it is equivalent to the `asset_name` or `asset_name@repo_digest` (Image)", + "example": "github.com/datadog/datadog-agent", + "type": "string" + }, + "type": { + "description": "The JSON:API type.", + "enum": [ + "sboms" + ], + "example": "sboms", + "type": "string", + "x-enum-varnames": [ + "SBOMS" + ] + } + }, + "type": "object" + } + }, + "required": [ + "data" + ], + "type": "object" + } + } + }, "description": "OK" }, "400": { @@ -319873,13 +337658,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -319891,7 +337715,7 @@ } } }, - "description": "Bad Request" + "description": "Bad request: The server cannot process the request due to invalid syntax in the request." }, "403": { "content": { @@ -319901,13 +337725,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -319919,7 +337782,7 @@ } } }, - "description": "Forbidden" + "description": "Forbidden: Access denied" }, "404": { "content": { @@ -319929,13 +337792,52 @@ "properties": { "errors": { "description": "A list of errors.", - "example": [ - "Bad Request" - ], "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" }, "type": "array" } @@ -319947,7 +337849,7 @@ } } }, - "description": "Not Found" + "description": "Not found: asset not found" }, "429": { "content": { @@ -319982,264 +337884,253 @@ { "apiKeyAuth": [], "appKeyAuth": [] - }, - { - "AuthZ": [ - "apm_service_catalog_write" - ] } ], - "summary": "Delete a rule", + "summary": "Get SBOM", "tags": [ - "Service Scorecards" + "Security Monitoring" ], - "x-menu-order": 3, + "x-menu-order": 27, "x-undo": { - "type": "idempotent" - }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - }, - "put": { - "description": "Updates an existing rule.", - "operationId": "UpdateScorecardRule", - "parameters": [ - { - "description": "The ID of the rule.", - "in": "path", - "name": "rule_id", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "description": "Request to update a scorecard rule.", - "properties": { - "data": { - "description": "Data for the request to update a scorecard rule.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" - }, - "description": { - "description": "Explanation of the rule.", - "type": "string" - }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" - }, - "owner": { - "description": "Owner of the rule.", - "type": "string" - }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" - } - }, - "type": "object" - }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "Rule attributes.", - "required": true + "type": "safe" }, + "x-unstable": "**Note**: This endpoint is a private preview.\nIf you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9)." + } + }, + "/api/v2/security/signals/notification_rules": { + "get": { + "description": "Returns the list of notification rules for security signals.", + "operationId": "GetSignalNotificationRules", "responses": { "200": { "content": { "application/json": { "schema": { - "description": "The response from a rule update request.", "properties": { "data": { - "description": "The data for a rule update response.", - "properties": { - "attributes": { - "description": "Details of a rule.", - "properties": { - "category": { - "deprecated": true, - "description": "The scorecard name to which this rule must belong.", - "type": "string" - }, - "created_at": { - "description": "Creation time of the rule outcome.", - "format": "date-time", - "type": "string" - }, - "custom": { - "description": "Defines if the rule is a custom rule.", - "type": "boolean" - }, - "description": { - "description": "Explanation of the rule.", - "type": "string" - }, - "enabled": { - "description": "If enabled, the rule is calculated as part of the score.", - "example": true, - "type": "boolean" - }, - "modified_at": { - "description": "Time of the last rule outcome modification.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "Name of the rule.", - "example": "Team Defined", - "type": "string" - }, - "owner": { - "description": "Owner of the rule.", - "type": "string" - }, - "scorecard_name": { - "description": "The scorecard name to which this rule must belong.", - "example": "Deployments automated via Deployment Trains", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The unique ID for a scorecard rule.", - "example": "q8MQxk8TCqrHnWkx", - "type": "string" - }, - "relationships": { - "description": "Scorecard create rule response relationship.", - "properties": { - "scorecard": { - "description": "Relationship data for a rule.", - "properties": { - "data": { - "description": "Rule relationship data.", - "properties": { - "id": { - "description": "The unique ID for a scorecard.", - "example": "q8MQxk8TCqrHnWkp", - "type": "string" + "items": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] }, - "type": { - "default": "scorecard", - "description": "The JSON:API type for scorecard.", + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", "enum": [ - "scorecard" + "critical", + "high", + "medium", + "low", + "unknown", + "info" ], - "example": "scorecard", + "example": "critical", "type": "string", "x-enum-varnames": [ - "SCORECARD" + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" ] - } + }, + "type": "array" }, - "type": "object" - } + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" }, - "type": "object" - } + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" }, - "type": "object" + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } }, - "type": { - "default": "rule", - "description": "The JSON:API type for scorecard rules.", - "enum": [ - "rule" - ], - "example": "rule", - "type": "string", - "x-enum-varnames": [ - "RULE" - ] - } - }, - "type": "object" - } - }, - "type": "object" - } - } - }, - "description": "Rule updated successfully" - }, - "400": { - "content": { - "application/json": { - "schema": { - "description": "API error response.", - "properties": { - "errors": { - "description": "A list of errors.", - "example": [ - "Bad Request" - ], - "items": { - "description": "A list of items.", - "example": "Bad Request", - "type": "string" + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" }, "type": "array" } }, - "required": [ - "errors" - ], "type": "object" } } }, - "description": "Bad Request" + "description": "The list of notification rules." }, "403": { "content": { @@ -320305,440 +338196,453 @@ }, { "AuthZ": [ - "apm_service_catalog_write" + "security_monitoring_notification_profiles_read" ] } ], - "summary": "Update an existing rule", + "summary": "Get the list of signal-based rules", "tags": [ - "Service Scorecards" + "Security Monitoring" ], - "x-codegen-request-body-name": "body", - "x-menu-order": 4, - "x-undo": { - "type": "idempotent" + "x-menu-order": 15, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_read" + ] }, - "x-unstable": "**Note**: This endpoint is in public beta.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." - } - }, - "/api/v2/security/assets": { - "get": { - "description": "Get a list of vulnerable assets.\n\n### Pagination\n\nPlease review the [Pagination section for the \"List Vulnerabilities\"](#pagination) endpoint.\n\n### Filtering\n\nPlease review the [Filtering section for the \"List Vulnerabilities\"](#filtering) endpoint.\n\n### Metadata\n\nPlease review the [Metadata section for the \"List Vulnerabilities\"](#metadata) endpoint.\n", - "operationId": "ListVulnerableAssets", - "parameters": [ - { - "description": "Its value must come from the `links` section of the response of the first request. Do not manually edit it.", - "example": "b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "in": "query", - "name": "page[token]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "The page number to be retrieved. It should be equal or greater than `1`", - "example": 1, - "in": "query", - "name": "page[number]", - "required": false, - "schema": { - "format": "int64", - "minimum": 1, - "type": "integer" - } - }, - { - "description": "Filter by name.", - "example": "datadog-agent", - "in": "query", - "name": "filter[name]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by type.", - "example": "Host", - "in": "query", - "name": "filter[type]", - "required": false, - "schema": { - "description": "The asset type", - "enum": [ - "Repository", - "Service", - "Host", - "HostImage", - "Image" - ], - "example": "Repository", - "type": "string", - "x-enum-varnames": [ - "REPOSITORY", - "SERVICE", - "HOST", - "HOSTIMAGE", - "IMAGE" - ] - } - }, - { - "description": "Filter by the first version of the asset since it has been vulnerable.", - "example": "v1.15.1", - "in": "query", - "name": "filter[version.first]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by the last detected version of the asset.", - "example": "v1.15.1", - "in": "query", - "name": "filter[version.last]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by the repository url associated to the asset.", - "example": "github.com/DataDog/datadog-agent.git", - "in": "query", - "name": "filter[repository_url]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter whether the asset is in production or not.", - "example": false, - "in": "query", - "name": "filter[risks.in_production]", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter whether the asset (Service) is under attack or not.", - "example": false, - "in": "query", - "name": "filter[risks.under_attack]", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter whether the asset (Host) is publicly accessible or not.", - "example": false, - "in": "query", - "name": "filter[risks.is_publicly_accessible]", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter whether the asset (Host) has privileged access or not.", - "example": false, - "in": "query", - "name": "filter[risks.has_privileged_access]", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter whether the asset (Host) has access to sensitive data or not.", - "example": false, - "in": "query", - "name": "filter[risks.has_access_to_sensitive_data]", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Filter by environment.", - "example": "staging", - "in": "query", - "name": "filter[environments]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by architecture.", - "example": "arm64", - "in": "query", - "name": "filter[arch]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by operating system name.", - "example": "ubuntu", - "in": "query", - "name": "filter[operating_system.name]", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Filter by operating system version.", - "example": "24.04", - "in": "query", - "name": "filter[operating_system.version]", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "description": "The expected response schema when listing vulnerable assets.", - "properties": { - "data": { - "description": "List of vulnerable assets.", - "items": { - "description": "A single vulnerable asset", + "x-undo": { + "type": "safe" + } + }, + "post": { + "description": "Create a new notification rule for security signals and return the created rule.", + "operationId": "CreateSignalNotificationRule", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Body of the notification rule create request.", + "properties": { + "data": { + "description": "Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule create request.", "properties": { - "attributes": { - "description": "The JSON:API attributes of the asset.", + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", "properties": { - "arch": { - "description": "Asset architecture.", - "example": "arm64", + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", "type": "string" }, - "environments": { - "description": "List of environments where the asset is deployed.", + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", "example": [ - "staging" + "misconfiguration", + "attack_path" ], "items": { - "example": "staging", - "type": "string" + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] }, "type": "array" }, - "name": { - "description": "Asset name.", - "example": "github.com/DataDog/datadog-agent.git", - "type": "string" - }, - "operating_system": { - "description": "Asset operating system.", - "properties": { - "description": { - "description": "Operating system version.", - "example": "24.04", - "type": "string" - }, - "name": { - "description": "Operating system name.", - "example": "ubuntu", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "risks": { - "description": "Asset risks.", - "properties": { - "has_access_to_sensitive_data": { - "description": "Whether the asset has access to sensitive data or not.", - "example": false, - "type": "boolean" - }, - "has_privileged_access": { - "description": "Whether the asset has privileged access or not.", - "example": false, - "type": "boolean" - }, - "in_production": { - "description": "Whether the asset is in production or not.", - "example": false, - "type": "boolean" - }, - "is_publicly_accessible": { - "description": "Whether the asset is publicly accessible or not.", - "example": false, - "type": "boolean" - }, - "under_attack": { - "description": "Whether the asset is under attack or not.", - "example": false, - "type": "boolean" - } + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] }, - "required": [ - "in_production" - ], - "type": "object" + "type": "array" }, - "type": { - "description": "The asset type", + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", "enum": [ - "Repository", - "Service", - "Host", - "HostImage", - "Image" + "security_findings", + "security_signals" ], - "example": "Repository", + "example": "security_findings", "type": "string", "x-enum-varnames": [ - "REPOSITORY", - "SERVICE", - "HOST", - "HOSTIMAGE", - "IMAGE" + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" ] - }, - "version": { - "description": "Asset version.", - "properties": { - "first": { - "description": "Asset first version.", - "example": "_latest", - "type": "string" - }, - "last": { - "description": "Asset last version.", - "example": "_latest", - "type": "string" - } - }, - "type": "object" } }, "required": [ - "name", - "type", - "risks", - "environments" + "trigger_source" ], "type": "object" }, - "id": { - "description": "The unique ID for this asset.", - "example": "Repository|github.com/DataDog/datadog-agent.git", - "type": "string" - }, - "type": { - "description": "The JSON:API type.", - "enum": [ - "assets" + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" ], - "example": "assets", - "type": "string", - "x-enum-varnames": [ - "ASSETS" - ] + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" } }, "required": [ - "id", - "type", - "attributes" + "selectors", + "name", + "targets" ], "type": "object" }, - "type": "array" - }, - "links": { - "description": "The JSON:API links related to pagination.", - "properties": { - "first": { - "description": "First page link.", - "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=1&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "type": "string" - }, - "last": { - "description": "Last page link.", - "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=15&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "type": "string" - }, - "next": { - "description": "Next page link.", - "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=16&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "type": "string" - }, - "previous": { - "description": "Previous page link.", - "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?page%5Bnumber%5D=14&page%5Btoken%5D=b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", - "type": "string" - }, - "self": { - "description": "Request link.", - "example": "https://api.datadoghq.com/api/v2/security/vulnerabilities?filter%5Btool%5D=Infra", - "type": "string" - } - }, - "required": [ - "self", - "first", - "last" - ], - "type": "object" + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } }, - "meta": { - "description": "The metadata related to this request.", + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "The body of the create notification rule request is composed of the rule type and the rule attributes:\nthe rule name, the selectors, the notification targets, and the rule enabled status.\n", + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "Response object which includes a notification rule.", + "properties": { + "data": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", "properties": { - "count": { - "description": "Number of entities included in the response.", - "example": 150, - "format": "int64", - "type": "integer" + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" }, - "token": { - "description": "The token that identifies the request.", - "example": "b82cef018aab81ed1d4bb4xb35xxfc065da7efa685fbcecdbd338f3015e3afabbbfa3a911b4984_721ee28a-zecb-4e45-9960-c42065b574f4", + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", "type": "string" }, - "total": { - "description": "Total number of entities across all pages.", - "example": 152431, - "format": "int64", - "type": "integer" + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] } }, "required": [ - "count", - "total", - "token" + "attributes", + "id", + "type" ], "type": "object" } }, + "type": "object" + } + } + }, + "description": "Successfully created the notification rule." + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, "required": [ - "data" + "errors" ], "type": "object" } } }, - "description": "OK" + "description": "Bad Request" }, - "400": { + "403": { "content": { "application/json": { "schema": { @@ -320746,52 +338650,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -320803,7 +338668,101 @@ } } }, - "description": "Bad request: The server cannot process the request due to invalid syntax in the request." + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_write" + ] + } + ], + "summary": "Create a new signal-based rule", + "tags": [ + "Security Monitoring" + ], + "x-codegen-request-body-name": "body", + "x-given": { + "valid_signal_notification_rule": { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"notification_rules\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"selectors\": {\n \"rule_types\": [\"signal_correlation\"],\n \"trigger_source\": \"security_signals\",\n \"severities\": [\"critical\"],\n \"query\": \"env:test\"\n },\n \"targets\": [\"@email@email.com\"],\n \"enabled\": true\n }\n }\n}" + } + ], + "step": "there is a valid \"valid_signal_notification_rule\" in the system" + } + }, + "x-menu-order": 16, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_write" + ] + }, + "x-undo": { + "operationId": "DeleteSignalNotificationRule", + "parameters": [ + { + "name": "id", + "source": "data.id" + } + ], + "type": "unsafe" + } + } + }, + "/api/v2/security/signals/notification_rules/{id}": { + "delete": { + "description": "Delete a notification rule for security signals.", + "operationId": "DeleteSignalNotificationRule", + "parameters": [ + { + "description": "ID of the notification rule.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Rule successfully deleted." }, "403": { "content": { @@ -320813,52 +338772,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -320870,7 +338790,7 @@ } } }, - "description": "Forbidden: Access denied" + "description": "Forbidden" }, "404": { "content": { @@ -320880,52 +338800,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -320937,7 +338818,7 @@ } } }, - "description": "Not found: There is no request associated with the provided token." + "description": "Not Found" }, "429": { "content": { @@ -320972,34 +338853,298 @@ { "apiKeyAuth": [], "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_write" + ] } ], - "summary": "List vulnerable assets", + "summary": "Delete a signal-based rule", "tags": [ "Security Monitoring" ], - "x-menu-order": 26, - "x-undo": { - "type": "safe" + "x-menu-order": 21, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_write" + ] }, - "x-unstable": "**Note**: This endpoint is a private preview.\nIf you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9)." - } - }, - "/api/v2/security/cloud_workload/policy/download": { + "x-undo": { + "type": "idempotent" + } + }, "get": { - "description": "The download endpoint generates a Cloud Workload Security policy file from your currently active\nCloud Workload Security rules, and downloads them as a .policy file. This file can then be deployed to\nyour Agents to update the policy running in your environment.", - "operationId": "DownloadCloudWorkloadPolicyFile", + "description": "Get the details of a notification rule for security signals.", + "operationId": "GetSignalNotificationRule", + "parameters": [ + { + "description": "ID of the notification rule.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "content": { - "application/yaml": { + "application/json": { "schema": { - "format": "binary", - "type": "string" + "description": "Response object which includes a notification rule.", + "properties": { + "data": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" } } }, - "description": "OK" + "description": "Notification rule details." + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" }, "403": { "content": { @@ -321027,7 +339172,35 @@ } } }, - "description": "Not Authorized" + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" }, "429": { "content": { @@ -321058,253 +339231,447 @@ "description": "Too many requests" } }, - "summary": "Get the latest Cloud Workload Security policy", + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_read" + ] + } + ], + "summary": "Get details of a signal-based rule", "tags": [ - "CSM Threats" + "Security Monitoring" ], - "x-menu-order": 1, + "x-menu-order": 18, "x-permission": { "operator": "OR", "permissions": [ - "security_monitoring_cws_agent_rules_read" + "security_monitoring_notification_profiles_read" ] }, "x-undo": { "type": "safe" } - } - }, - "/api/v2/security/sboms/{asset_type}": { - "get": { - "description": "Get a single SBOM related to an asset by its type and name.\n", - "operationId": "GetSBOM", + }, + "patch": { + "description": "Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.", + "operationId": "PatchSignalNotificationRule", "parameters": [ { - "description": "The type of the asset for the SBOM request.", - "example": "Repository", + "description": "ID of the notification rule.", "in": "path", - "name": "asset_type", - "required": true, - "schema": { - "description": "The asset type", - "enum": [ - "Repository", - "Service", - "Host", - "HostImage", - "Image" - ], - "example": "Repository", - "type": "string", - "x-enum-varnames": [ - "REPOSITORY", - "SERVICE", - "HOST", - "HOSTIMAGE", - "IMAGE" - ] - } - }, - { - "description": "The name of the asset for the SBOM request.", - "example": "github.com/datadog/datadog-agent", - "in": "query", - "name": "filter[asset_name]", + "name": "id", "required": true, "schema": { "type": "string" } - }, - { - "description": "The container image `repo_digest` for the SBOM request. When the requested asset type is 'Image', this filter is mandatory.", - "example": "sha256:0ae7da091191787229d321e3638e39c319a97d6e20f927d465b519d699215bf7", - "in": "query", - "name": "filter[repo_digest]", - "required": false, - "schema": { - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Body of the notification rule patch request.", + "properties": { + "data": { + "description": "Data of the notification rule patch request: the rule ID, the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "description": "The expected response schema when getting an SBOM.", + "description": "Response object which includes a notification rule.", "properties": { "data": { - "description": "A single SBOM", + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", "properties": { "attributes": { - "description": "The JSON:API attributes of the SBOM.", + "description": "Attributes of the notification rule.", "properties": { - "bomFormat": { - "description": "Specifies the format of the BOM. This helps to identify the file as CycloneDX since BOM do not have a filename convention nor does JSON schema support namespaces. This value MUST be `CycloneDX`.", - "example": "CycloneDX", + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", "type": "string" }, - "components": { - "description": "A list of software and hardware components.", - "items": { - "description": "Software or hardware component.", - "properties": { - "bom-ref": { - "description": "An optional identifier that can be used to reference the component elsewhere in the BOM.", - "example": "pkg:golang/google.golang.org/grpc@1.68.1", - "type": "string" - }, - "name": { - "description": "The name of the component. This will often be a shortened, single name of the component.", - "example": "google.golang.org/grpc", - "type": "string" - }, - "purl": { - "description": "Specifies the package-url (purl). The purl, if specified, MUST be valid and conform to the [specification](https://github.com/package-url/purl-spec).", - "example": "pkg:golang/google.golang.org/grpc@1.68.1", - "type": "string" - }, - "type": { - "description": "The SBOM component type", + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", "enum": [ - "application", - "container", - "data", - "device", - "device-driver", - "file", - "firmware", - "framework", - "library", - "machine-learning-model", - "operating-system", - "platform" + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" ], - "example": "application", "type": "string", "x-enum-varnames": [ - "APPLICATION", - "CONTAINER", - "DATA", - "DEVICE", - "DEVICE_DRIVER", - "FILE", - "FIRMWARE", - "FRAMEWORK", - "LIBRARY", - "MACHINE_LEARNING_MODEL", - "OPERATING_SYSTEM", - "PLATFORM" + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" ] }, - "version": { - "description": "The component version.", - "example": "1.68.1", - "type": "string" - } + "type": "array" }, - "required": [ - "type", - "name", - "version" - ], - "type": "object" - }, - "type": "array" - }, - "metadata": { - "description": "Provides additional information about a BOM.", - "properties": { - "component": { - "description": "The component that the BOM describes.", - "properties": { - "name": { - "description": "The name of the component. This will often be a shortened, single name of the component.", - "example": "github.com/datadog/datadog-agent", - "type": "string" - }, - "type": { - "description": "Specifies the type of the component.", - "example": "application", - "type": "string" - } + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] }, - "type": "object" + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] } }, + "required": [ + "trigger_source" + ], "type": "object" }, - "serialNumber": { - "description": "Every BOM generated has a unique serial number, even if the contents of the BOM have not changed overt time. The serial number follows [RFC-4122](https://datatracker.ietf.org/doc/html/rfc4122)", - "example": "urn:uuid:f7119d2f-1vgh-24b5-91f0-12010db72da7", - "type": "string" - }, - "specVersion": { - "description": "The version of the CycloneDX specification a BOM conforms to.", - "enum": [ - "1.0", - "1.1", - "1.2", - "1.3", - "1.4", - "1.5" + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" ], - "example": "1.5", - "type": "string", - "x-enum-varnames": [ - "ONE_ZERO", - "ONE_ONE", - "ONE_TWO", - "ONE_THREE", - "ONE_FOUR", - "ONE_FIVE" - ] + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" }, "version": { - "description": "It increments when a BOM is modified. The default value is 1.", + "description": "Version of the notification rule. It is updated when the rule is modified.", "example": 1, "format": "int64", "type": "integer" } }, "required": [ - "bomFormat", - "specVersion", - "components", - "metadata", - "serialNumber", + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", "version" ], "type": "object" }, "id": { - "description": "The unique ID for this SBOM (it is equivalent to the `asset_name` or `asset_name@repo_digest` (Image)", - "example": "github.com/datadog/datadog-agent", + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", "type": "string" }, "type": { - "description": "The JSON:API type.", + "description": "The rule type associated to notification rules.", "enum": [ - "sboms" + "notification_rules" ], - "example": "sboms", + "example": "notification_rules", "type": "string", "x-enum-varnames": [ - "SBOMS" + "NOTIFICATION_RULES" ] } }, + "required": [ + "attributes", + "id", + "type" + ], "type": "object" } }, - "required": [ - "data" - ], "type": "object" } } }, - "description": "OK" + "description": "Notification rule successfully patched." }, "400": { "content": { @@ -321314,52 +339681,13 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -321371,7 +339699,7 @@ } } }, - "description": "Bad request: The server cannot process the request due to invalid syntax in the request." + "description": "Bad Request" }, "403": { "content": { @@ -321381,52 +339709,41 @@ "properties": { "errors": { "description": "A list of errors.", + "example": [ + "Bad Request" + ], "items": { - "description": "API error response body", - "properties": { - "detail": { - "description": "A human-readable explanation specific to this occurrence of the error.", - "example": "Missing required attribute in body", - "type": "string" - }, - "meta": { - "additionalProperties": {}, - "description": "Non-standard meta-information about the error", - "type": "object" - }, - "source": { - "description": "References to the source of the error.", - "properties": { - "header": { - "description": "A string indicating the name of a single request header which caused the error.", - "example": "Authorization", - "type": "string" - }, - "parameter": { - "description": "A string indicating which URI query parameter caused the error.", - "example": "limit", - "type": "string" - }, - "pointer": { - "description": "A JSON pointer to the value in the request document that caused the error.", - "example": "/data/attributes/title", - "type": "string" - } - }, - "type": "object" - }, - "status": { - "description": "Status code of the response.", - "example": "400", - "type": "string" - }, - "title": { - "description": "Short human-readable summary of the error.", - "example": "Bad Request", - "type": "string" - } - }, - "type": "object" + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" }, "type": "array" } @@ -321438,9 +339755,9 @@ } } }, - "description": "Forbidden: Access denied" + "description": "Not Found" }, - "404": { + "422": { "content": { "application/json": { "schema": { @@ -321505,7 +339822,7 @@ } } }, - "description": "Not found: asset not found" + "description": "The server cannot process the request because it contains invalid data." }, "429": { "content": { @@ -321540,17 +339857,28 @@ { "apiKeyAuth": [], "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_write" + ] } ], - "summary": "Get SBOM", + "summary": "Patch a signal-based rule", "tags": [ "Security Monitoring" ], - "x-menu-order": 27, - "x-undo": { - "type": "safe" + "x-codegen-request-body-name": "body", + "x-menu-order": 20, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_write" + ] }, - "x-unstable": "**Note**: This endpoint is a private preview.\nIf you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9)." + "x-undo": { + "type": "idempotent" + } } }, "/api/v2/security/vulnerabilities": { @@ -323322,15 +341650,1999 @@ "appKeyAuth": [] } ], - "summary": "List vulnerabilities", + "summary": "List vulnerabilities", + "tags": [ + "Security Monitoring" + ], + "x-menu-order": 25, + "x-undo": { + "type": "safe" + }, + "x-unstable": "**Note**: This endpoint is a private preview.\nIf you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9)." + } + }, + "/api/v2/security/vulnerabilities/notification_rules": { + "get": { + "description": "Returns the list of notification rules for security vulnerabilities.", + "operationId": "GetVulnerabilityNotificationRules", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "data": { + "items": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "The list of notification rules." + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_read" + ] + } + ], + "summary": "Get the list of vulnerability-based rules", + "tags": [ + "Security Monitoring" + ], + "x-menu-order": 15, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_read" + ] + }, + "x-undo": { + "type": "safe" + } + }, + "post": { + "description": "Create a new notification rule for security vulnerabilities and return the created rule.", + "operationId": "CreateVulnerabilityNotificationRule", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Body of the notification rule create request.", + "properties": { + "data": { + "description": "Data of the notification rule create request: the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule create request.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "selectors", + "name", + "targets" + ], + "type": "object" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "The body of the create notification rule request is composed of the rule type and the rule attributes:\nthe rule name, the selectors, the notification targets, and the rule enabled status.\n", + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "description": "Response object which includes a notification rule.", + "properties": { + "data": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Successfully created the notification rule." + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_write" + ] + } + ], + "summary": "Create a new vulnerability-based rule", + "tags": [ + "Security Monitoring" + ], + "x-codegen-request-body-name": "body", + "x-given": { + "valid_vulnerability_notification_rule": { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"notification_rules\",\n \"attributes\": {\n \"name\": \"{{ unique }}\",\n \"selectors\": {\n \"rule_types\": [\"misconfiguration\", \"attack_path\"],\n \"trigger_source\": \"security_findings\",\n \"severities\": [\"critical\"],\n \"query\": \"env:test\"\n },\n \"time_aggregation\": 86400,\n \"targets\": [\"@email@email.com\"],\n \"enabled\": true\n }\n }\n}" + } + ], + "step": "there is a valid \"valid_vulnerability_notification_rule\" in the system" + } + }, + "x-menu-order": 16, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_write" + ] + }, + "x-undo": { + "operationId": "DeleteVulnerabilityNotificationRule", + "parameters": [ + { + "name": "id", + "source": "data.id" + } + ], + "type": "unsafe" + } + } + }, + "/api/v2/security/vulnerabilities/notification_rules/{id}": { + "delete": { + "description": "Delete a notification rule for security vulnerabilities.", + "operationId": "DeleteVulnerabilityNotificationRule", + "parameters": [ + { + "description": "ID of the notification rule.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "Rule successfully deleted." + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_write" + ] + } + ], + "summary": "Delete a vulnerability-based rule", + "tags": [ + "Security Monitoring" + ], + "x-menu-order": 21, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_write" + ] + }, + "x-undo": { + "type": "idempotent" + } + }, + "get": { + "description": "Get the details of a notification rule for security vulnerabilities.", + "operationId": "GetVulnerabilityNotificationRule", + "parameters": [ + { + "description": "ID of the notification rule.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response object which includes a notification rule.", + "properties": { + "data": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Notification rule details." + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_read" + ] + } + ], + "summary": "Get details of a vulnerability-based rule", "tags": [ "Security Monitoring" ], - "x-menu-order": 25, + "x-menu-order": 18, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_read" + ] + }, "x-undo": { "type": "safe" + } + }, + "patch": { + "description": "Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.", + "operationId": "PatchVulnerabilityNotificationRule", + "parameters": [ + { + "description": "ID of the notification rule.", + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Body of the notification rule patch request.", + "properties": { + "data": { + "description": "Data of the notification rule patch request: the rule ID, the rule type, and the rule attributes. All fields are required.", + "properties": { + "attributes": { + "description": "Attributes of the notification rule patch request. It is required to update the version of the rule when patching it.", + "properties": { + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "required": true }, - "x-unstable": "**Note**: This endpoint is a private preview.\nIf you are interested in accessing this API, please [fill out this form](https://forms.gle/kMYC1sDr6WDUBDsx9)." + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "description": "Response object which includes a notification rule.", + "properties": { + "data": { + "description": "Notification rules allow full control over notifications generated by the various Datadog security products.\nThey allow users to define the conditions under which a notification should be generated (based on rule severities,\nrule types, rule tags, and so on), and the targets to notify.\nA notification rule is composed of a rule ID, a rule type, and the rule attributes. All fields are required.\n", + "properties": { + "attributes": { + "description": "Attributes of the notification rule.", + "properties": { + "created_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "created_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "description": "Field used to enable or disable the rule.", + "example": true, + "type": "boolean" + }, + "modified_at": { + "description": "Date as Unix timestamp in milliseconds.", + "example": 1722439510282, + "format": "int64", + "type": "integer" + }, + "modified_by": { + "description": "User creating or modifying a rule.", + "properties": { + "handle": { + "description": "The user handle.", + "example": "john.doe@domain.com", + "type": "string" + }, + "name": { + "description": "The user name.", + "example": "John Doe", + "type": "string" + } + }, + "type": "object" + }, + "name": { + "description": "Name of the notification rule.", + "example": "Rule 1", + "type": "string" + }, + "selectors": { + "description": "Selectors are used to filter security issues for which notifications should be generated.\nUsers can specify rule severities, rule types, a query to filter security issues on tags and attributes, and the trigger source.\nOnly the trigger_source field is required.", + "properties": { + "query": { + "description": "The query is composed of one or several key:value pairs, which can be used to filter security issues on tags and attributes.", + "example": "(source:production_service OR env:prod)", + "type": "string" + }, + "rule_types": { + "description": "Security rule types used to filter signals and vulnerabilities generating notifications.", + "example": [ + "misconfiguration", + "attack_path" + ], + "items": { + "description": "Security rule types which can be used in notification rules.\nSignal-based notification rules can filter signals based on rule types application_security, log_detection,\nworkload_security, signal_correlation, cloud_configuration and infrastructure_configuration.\nVulnerability-based notification rules can filter vulnerabilities based on rule types application_code_vulnerability,\napplication_library_vulnerability, attack_path, container_image_vulnerability, identity_risk, misconfiguration, and api_security.", + "enum": [ + "application_security", + "log_detection", + "workload_security", + "signal_correlation", + "cloud_configuration", + "infrastructure_configuration", + "application_code_vulnerability", + "application_library_vulnerability", + "attack_path", + "container_image_vulnerability", + "identity_risk", + "misconfiguration", + "api_security" + ], + "type": "string", + "x-enum-varnames": [ + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + "SIGNAL_CORRELATION", + "CLOUD_CONFIGURATION", + "INFRASTRUCTURE_CONFIGURATION", + "APPLICATION_CODE_VULNERABILITY", + "APPLICATION_LIBRARY_VULNERABILITY", + "ATTACK_PATH", + "CONTAINER_IMAGE_VULNERABILITY", + "IDENTITY_RISK", + "MISCONFIGURATION", + "API_SECURITY" + ] + }, + "type": "array" + }, + "severities": { + "description": "The security rules severities to consider.", + "items": { + "description": "Severity of a security rule.", + "enum": [ + "critical", + "high", + "medium", + "low", + "unknown", + "info" + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "CRITICAL", + "HIGH", + "MEDIUM", + "LOW", + "UNKNOWN", + "INFO" + ] + }, + "type": "array" + }, + "trigger_source": { + "description": "The type of security issues on which the rule applies. Notification rules based on security signals need to use the trigger source \"security_signals\",\nwhile notification rules based on security vulnerabilities need to use the trigger source \"security_findings\".", + "enum": [ + "security_findings", + "security_signals" + ], + "example": "security_findings", + "type": "string", + "x-enum-varnames": [ + "SECURITY_FINDINGS", + "SECURITY_SIGNALS" + ] + } + }, + "required": [ + "trigger_source" + ], + "type": "object" + }, + "targets": { + "description": "List of recipients to notify when a notification rule is triggered. Many different target types are supported,\nsuch as email addresses, Slack channels, and PagerDuty services.\nThe appropriate integrations need to be properly configured to send notifications to the specified targets.", + "example": [ + "@john.doe@email.com" + ], + "items": { + "description": "Recipients to notify.", + "type": "string" + }, + "type": "array" + }, + "time_aggregation": { + "description": "Time aggregation period (in seconds) is used to aggregate the results of the notification rule evaluation.\nResults are aggregated over a selected time frame using a rolling window, which updates with each new evaluation.\nNotifications are only sent for new issues discovered during the window.\nTime aggregation is only available for vulnerability-based notification rules. When omitted or set to 0, no aggregation\nis done.", + "example": 86400, + "format": "int64", + "type": "integer" + }, + "version": { + "description": "Version of the notification rule. It is updated when the rule is modified.", + "example": 1, + "format": "int64", + "type": "integer" + } + }, + "required": [ + "created_at", + "created_by", + "enabled", + "modified_at", + "modified_by", + "name", + "selectors", + "targets", + "version" + ], + "type": "object" + }, + "id": { + "description": "The ID of a notification rule.", + "example": "aaa-bbb-ccc", + "type": "string" + }, + "type": { + "description": "The rule type associated to notification rules.", + "enum": [ + "notification_rules" + ], + "example": "notification_rules", + "type": "string", + "x-enum-varnames": [ + "NOTIFICATION_RULES" + ] + } + }, + "required": [ + "attributes", + "id", + "type" + ], + "type": "object" + } + }, + "type": "object" + } + } + }, + "description": "Notification rule successfully patched." + }, + "400": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Bad Request" + }, + "403": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Forbidden" + }, + "404": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Not Found" + }, + "422": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "items": { + "description": "API error response body", + "properties": { + "detail": { + "description": "A human-readable explanation specific to this occurrence of the error.", + "example": "Missing required attribute in body", + "type": "string" + }, + "meta": { + "additionalProperties": {}, + "description": "Non-standard meta-information about the error", + "type": "object" + }, + "source": { + "description": "References to the source of the error.", + "properties": { + "header": { + "description": "A string indicating the name of a single request header which caused the error.", + "example": "Authorization", + "type": "string" + }, + "parameter": { + "description": "A string indicating which URI query parameter caused the error.", + "example": "limit", + "type": "string" + }, + "pointer": { + "description": "A JSON pointer to the value in the request document that caused the error.", + "example": "/data/attributes/title", + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Status code of the response.", + "example": "400", + "type": "string" + }, + "title": { + "description": "Short human-readable summary of the error.", + "example": "Bad Request", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "The server cannot process the request because it contains invalid data." + }, + "429": { + "content": { + "application/json": { + "schema": { + "description": "API error response.", + "properties": { + "errors": { + "description": "A list of errors.", + "example": [ + "Bad Request" + ], + "items": { + "description": "A list of items.", + "example": "Bad Request", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "errors" + ], + "type": "object" + } + } + }, + "description": "Too many requests" + } + }, + "security": [ + { + "apiKeyAuth": [], + "appKeyAuth": [] + }, + { + "AuthZ": [ + "security_monitoring_notification_profiles_write" + ] + } + ], + "summary": "Patch a vulnerability-based rule", + "tags": [ + "Security Monitoring" + ], + "x-codegen-request-body-name": "body", + "x-menu-order": 20, + "x-permission": { + "operator": "OR", + "permissions": [ + "security_monitoring_notification_profiles_write" + ] + }, + "x-undo": { + "type": "idempotent" + } } }, "/api/v2/security_monitoring/cloud_workload_security/agent_rules": { @@ -373323,8 +393635,7 @@ }, "x-undo": { "type": "safe" - }, - "x-unstable": "**Note**: This endpoint is in Preview.\nIf you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/)." + } } }, "/api/v2/usage/cost_by_org": { @@ -381207,6 +401518,10 @@ "description": "Datadog Agentless Scanning provides visibility into risks and vulnerabilities\nwithin your hosts, running containers, and serverless functions—all without\nrequiring teams to install Agents on every host or where Agents cannot be installed.\nGo to https://www.datadoghq.com/blog/agentless-scanning/ to learn more", "name": "Agentless Scanning" }, + { + "description": "Datadog App Builder provides a low-code solution to rapidly develop and integrate secure, customized applications into your monitoring stack that are built to accelerate remediation at scale. These API endpoints allow you to create, read, update, delete, and publish apps.", + "name": "App Builder" + }, { "description": "Search your Audit Logs events over HTTP.", "name": "Audit" @@ -381319,7 +401634,7 @@ "name": "Logs" }, { - "description": "Archives forward all the logs ingested to a cloud storage system.\n\nSee the [Archives Page](https://app.datadoghq.com/logs/pipelines/archives)\nfor a list of the archives currently configured in Datadog.\n\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints.", + "description": "Archives forward all the logs ingested to a cloud storage system.\n\nSee the [Archives Page](https://app.datadoghq.com/logs/pipelines/archives)\nfor a list of the archives currently configured in Datadog.", "externalDocs": { "description": "Find out more at", "url": "https://docs.datadoghq.com/logs/archives/" @@ -381335,7 +401650,7 @@ "name": "Logs Custom Destinations" }, { - "description": "Manage configuration of [log-based metrics](https://app.datadoghq.com/logs/pipelines/generate-metrics) for your organization.\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints.", + "description": "Manage configuration of [log-based metrics](https://app.datadoghq.com/logs/pipelines/generate-metrics) for your organization.", "externalDocs": { "description": "Find out more at", "url": "https://docs.datadoghq.com/logs/logs_to_metrics/" @@ -381343,7 +401658,7 @@ "name": "Logs Metrics" }, { - "description": "**Note: This endpoint is in public beta. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).**\n\nA Restriction Query is a logs query that restricts which logs the `logs_read_data` permission grants read access to.\nFor users whose roles have Restriction Queries, any log query they make only returns those log events that also match\none of their Restriction Queries. This is true whether the user queries log events from any log-related feature, including\nthe log explorer, Live Tail, re-hydration, or a dashboard widget.\n\nRestriction Queries currently only support use of the following components of log events:\n\n- Reserved attributes\n- The log message\n- Tags\n\nTo restrict read access on log data, add a team tag to log events to indicate which teams own them, and then scope Restriction Queries to the relevant values of the team tag. Tags can be applied to log events in many ways, and a log event can have multiple tags with the same key (like team) and different values. This means the same log event can be visible to roles whose restriction queries are scoped to different team values.\n\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints.\n\nSee [How to Set Up RBAC for Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict-access-to-logs) for details on how to add restriction queries.", + "description": "**Note: This endpoint is in public beta. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).**\n\nA Restriction Query is a logs query that restricts which logs the `logs_read_data` permission grants read access to.\nFor users whose roles have Restriction Queries, any log query they make only returns those log events that also match\none of their Restriction Queries. This is true whether the user queries log events from any log-related feature, including\nthe log explorer, Live Tail, re-hydration, or a dashboard widget.\n\nRestriction Queries currently only support use of the following components of log events:\n\n- Reserved attributes\n- The log message\n- Tags\n\nTo restrict read access on log data, add a team tag to log events to indicate which teams own them, and then scope Restriction Queries to the relevant values of the team tag. Tags can be applied to log events in many ways, and a log event can have multiple tags with the same key (like team) and different values. This means the same log event can be visible to roles whose restriction queries are scoped to different team values.\n\nSee [How to Set Up RBAC for Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict-access-to-logs) for details on how to add restriction queries.", "name": "Logs Restriction Queries" }, { diff --git a/data/api/v2/translate_actions.json b/data/api/v2/translate_actions.json index 7be4c60d88eeb..3afec9eae95dd 100644 --- a/data/api/v2/translate_actions.json +++ b/data/api/v2/translate_actions.json @@ -125,6 +125,44 @@ "request_description": "The updated definition of the retention filter.", "request_schema_description": "The body of the retention filter to be updated." }, + "DeleteApps": { + "description": "Delete multiple apps in a single request from a list of app IDs.", + "summary": "Delete Multiple Apps", + "request_description": "", + "request_schema_description": "A request object for deleting multiple apps by ID." + }, + "ListApps": { + "description": "List all apps, with optional filters and sorting. This endpoint is paginated. Only basic app information such as the app ID, name, and description is returned by this endpoint.", + "summary": "List Apps" + }, + "CreateApp": { + "description": "Create a new app, returning the app ID.", + "summary": "Create App", + "request_description": "", + "request_schema_description": "A request object for creating a new app." + }, + "DeleteApp": { + "description": "Delete a single app.", + "summary": "Delete App" + }, + "GetApp": { + "description": "Get the full definition of an app.", + "summary": "Get App" + }, + "UpdateApp": { + "description": "Update an existing app. This creates a new version of the app.", + "summary": "Update App", + "request_description": "", + "request_schema_description": "A request object for updating an existing app." + }, + "UnpublishApp": { + "description": "Unpublish an app, removing the live version of the app. Unpublishing creates a new instance of a `deployment` object on the app, with a nil `app_version_id` (`00000000-0000-0000-0000-000000000000`). The app can still be updated and published again in the future.", + "summary": "Unpublish App" + }, + "PublishApp": { + "description": "Publish an app for use by 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.", + "summary": "Publish App" + }, "ListApplicationKeys": { "description": "List all application keys available for your org", "summary": "Get all application keys" @@ -1503,10 +1541,58 @@ "description": "Get a single SBOM related to an asset by its type and name.\n", "summary": "Get SBOM" }, + "GetSignalNotificationRules": { + "description": "Returns the list of notification rules for security signals.", + "summary": "Get the list of signal-based rules" + }, + "CreateSignalNotificationRule": { + "description": "Create a new notification rule for security signals and return the created rule.", + "summary": "Create a new signal-based rule", + "request_description": "The body of the create notification rule request is composed of the rule type and the rule attributes:\nthe rule name, the selectors, the notification targets, and the rule enabled status.\n", + "request_schema_description": "Body of the notification rule create request." + }, + "DeleteSignalNotificationRule": { + "description": "Delete a notification rule for security signals.", + "summary": "Delete a signal-based rule" + }, + "GetSignalNotificationRule": { + "description": "Get the details of a notification rule for security signals.", + "summary": "Get details of a signal-based rule" + }, + "PatchSignalNotificationRule": { + "description": "Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.", + "summary": "Patch a signal-based rule", + "request_description": "", + "request_schema_description": "Body of the notification rule patch request." + }, "ListVulnerabilities": { "description": "Get a list of vulnerabilities.\n\n### Pagination\n\nPagination is enabled by default in both `vulnerabilities` and `assets`. The size of the page varies depending on the endpoint and cannot be modified. To automate the request of the next page, you can use the links section in the response.\n\nThis endpoint will return paginated responses. The pages are stored in the links section of the response:\n\n```JSON\n{\n \"data\": [...],\n \"meta\": {...},\n \"links\": {\n \"self\": \"https://.../api/v2/security/vulnerabilities\",\n \"first\": \"https://.../api/v2/security/vulnerabilities?page[number]=1&page[token]=abc\",\n \"last\": \"https://.../api/v2/security/vulnerabilities?page[number]=43&page[token]=abc\",\n \"next\": \"https://.../api/v2/security/vulnerabilities?page[number]=2&page[token]=abc\"\n }\n}\n```\n\n\n- `links.previous` is empty if the first page is requested.\n- `links.next` is empty if the last page is requested.\n\n#### Token\n\nVulnerabilities can be created, updated or deleted at any point in time.\n\nUpon the first request, a token is created to ensure consistency across subsequent paginated requests.\n\nA token is valid only for 24 hours.\n\n#### First request\n\nWe consider a request to be the first request when there is no `page[token]` parameter.\n\nThe response of this first request contains the newly created token in the `links` section.\n\nThis token can then be used in the subsequent paginated requests.\n\n#### Subsequent requests\n\nAny request containing valid `page[token]` and `page[number]` parameters will be considered a subsequent request.\n\nIf the `token` is invalid, a `404` response will be returned.\n\nIf the page `number` is invalid, a `400` response will be returned.\n\n### Filtering\n\nThe request can include some filter parameters to filter the data to be retrieved. The format of the filter parameters follows the [JSON:API format](https://jsonapi.org/format/#fetching-filtering): `filter[$prop_name]`, where `prop_name` is the property name in the entity being filtered by.\n\nAll filters can include multiple values, where data will be filtered with an OR clause: `filter[title]=Title1,Title2` will filter all vulnerabilities where title is equal to `Title1` OR `Title2`.\n\nString filters are case sensitive.\n\nBoolean filters accept `true` or `false` as values.\n\nNumber filters must include an operator as a second filter input: `filter[$prop_name][$operator]`. For example, for the vulnerabilities endpoint: `filter[cvss.base.score][lte]=8`.\n\nAvailable operators are: `eq` (==), `lt` (<), `lte` (<=), `gt` (>) and `gte` (>=).\n\n### Metadata\n\nFollowing [JSON:API format](https://jsonapi.org/format/#document-meta), object including non-standard meta-information.\n\nThis endpoint includes the meta member in the response. For more details on each of the properties included in this section, check the endpoints response tables.\n\n```JSON\n{\n \"data\": [...],\n \"meta\": {\n \"total\": 1500,\n \"count\": 18732,\n \"token\": \"some_token\"\n },\n \"links\": {...}\n}\n```\n", "summary": "List vulnerabilities" }, + "GetVulnerabilityNotificationRules": { + "description": "Returns the list of notification rules for security vulnerabilities.", + "summary": "Get the list of vulnerability-based rules" + }, + "CreateVulnerabilityNotificationRule": { + "description": "Create a new notification rule for security vulnerabilities and return the created rule.", + "summary": "Create a new vulnerability-based rule", + "request_description": "The body of the create notification rule request is composed of the rule type and the rule attributes:\nthe rule name, the selectors, the notification targets, and the rule enabled status.\n", + "request_schema_description": "Body of the notification rule create request." + }, + "DeleteVulnerabilityNotificationRule": { + "description": "Delete a notification rule for security vulnerabilities.", + "summary": "Delete a vulnerability-based rule" + }, + "GetVulnerabilityNotificationRule": { + "description": "Get the details of a notification rule for security vulnerabilities.", + "summary": "Get details of a vulnerability-based rule" + }, + "PatchVulnerabilityNotificationRule": { + "description": "Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.", + "summary": "Patch a vulnerability-based rule", + "request_description": "", + "request_schema_description": "Body of the notification rule patch request." + }, "ListCloudWorkloadSecurityAgentRules": { "description": "Get the list of Agent rules.", "summary": "Get all Cloud Workload Security Agent rules" diff --git a/data/api/v2/translate_tags.json b/data/api/v2/translate_tags.json index 0f8f87938e61b..5080d378ca397 100644 --- a/data/api/v2/translate_tags.json +++ b/data/api/v2/translate_tags.json @@ -23,6 +23,10 @@ "name": "Agentless Scanning", "description": "Datadog Agentless Scanning provides visibility into risks and vulnerabilities\nwithin your hosts, running containers, and serverless functions—all without\nrequiring teams to install Agents on every host or where Agents cannot be installed.\nGo to https://www.datadoghq.com/blog/agentless-scanning/ to learn more" }, + "app-builder": { + "name": "App Builder", + "description": "Datadog App Builder provides a low-code solution to rapidly develop and integrate secure, customized applications into your monitoring stack that are built to accelerate remediation at scale. These API endpoints allow you to create, read, update, delete, and publish apps." + }, "audit": { "name": "Audit", "description": "Search your Audit Logs events over HTTP." @@ -129,7 +133,7 @@ }, "logs-archives": { "name": "Logs Archives", - "description": "Archives forward all the logs ingested to a cloud storage system.\n\nSee the [Archives Page](https://app.datadoghq.com/logs/pipelines/archives)\nfor a list of the archives currently configured in Datadog.\n\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints." + "description": "Archives forward all the logs ingested to a cloud storage system.\n\nSee the [Archives Page](https://app.datadoghq.com/logs/pipelines/archives)\nfor a list of the archives currently configured in Datadog." }, "logs-custom-destinations": { "name": "Logs Custom Destinations", @@ -137,11 +141,11 @@ }, "logs-metrics": { "name": "Logs Metrics", - "description": "Manage configuration of [log-based metrics](https://app.datadoghq.com/logs/pipelines/generate-metrics) for your organization.\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints." + "description": "Manage configuration of [log-based metrics](https://app.datadoghq.com/logs/pipelines/generate-metrics) for your organization." }, "logs-restriction-queries": { "name": "Logs Restriction Queries", - "description": "**Note: This endpoint is in public beta. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).**\n\nA Restriction Query is a logs query that restricts which logs the `logs_read_data` permission grants read access to.\nFor users whose roles have Restriction Queries, any log query they make only returns those log events that also match\none of their Restriction Queries. This is true whether the user queries log events from any log-related feature, including\nthe log explorer, Live Tail, re-hydration, or a dashboard widget.\n\nRestriction Queries currently only support use of the following components of log events:\n\n- Reserved attributes\n- The log message\n- Tags\n\nTo restrict read access on log data, add a team tag to log events to indicate which teams own them, and then scope Restriction Queries to the relevant values of the team tag. Tags can be applied to log events in many ways, and a log event can have multiple tags with the same key (like team) and different values. This means the same log event can be visible to roles whose restriction queries are scoped to different team values.\n\nYou need an API and non-scoped application key with Admin rights to interact with these endpoints.\n\nSee [How to Set Up RBAC for Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict-access-to-logs) for details on how to add restriction queries." + "description": "**Note: This endpoint is in public beta. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).**\n\nA Restriction Query is a logs query that restricts which logs the `logs_read_data` permission grants read access to.\nFor users whose roles have Restriction Queries, any log query they make only returns those log events that also match\none of their Restriction Queries. This is true whether the user queries log events from any log-related feature, including\nthe log explorer, Live Tail, re-hydration, or a dashboard widget.\n\nRestriction Queries currently only support use of the following components of log events:\n\n- Reserved attributes\n- The log message\n- Tags\n\nTo restrict read access on log data, add a team tag to log events to indicate which teams own them, and then scope Restriction Queries to the relevant values of the team tag. Tags can be applied to log events in many ways, and a log event can have multiple tags with the same key (like team) and different values. This means the same log event can be visible to roles whose restriction queries are scoped to different team values.\n\nSee [How to Set Up RBAC for Logs](https://docs.datadoghq.com/logs/guide/logs-rbac/?tab=api#restrict-access-to-logs) for details on how to add restriction queries." }, "metrics": { "name": "Metrics", diff --git a/data/partials/platforms.es.yaml b/data/partials/platforms.es.yaml index 77bfb0b8754f4..b5f0fd1b64188 100644 --- a/data/partials/platforms.es.yaml +++ b/data/partials/platforms.es.yaml @@ -24,130 +24,130 @@ gs: link: https://app.datadoghq.com/account/settings/agent/latest?platform=centos name: rockylinux - image: platform_almalinux.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=CentOS + link: https://app.datadoghq.com/account/settings/agent/latest?platform=centos name: almalinux -- image: plataforma_fedora.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=Fedora +- image: platform_fedora.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=fedora name: fedora -- image: plataforma_suse.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=SUSE +- image: platform_suse.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=suse name: suse -- image: plataforma_aix.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=aix +- image: platform_aix.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=aix name: aix -- image: plataforma_coreos.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=coreos +- image: platform_coreos.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=coreos name: coreos -- image: plataforma_docker.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=Docker +- image: platform_docker.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=docker name: docker -- image: plataforma_kubernetes.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=Kubernetes +- image: platform_kubernetes.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=kubernetes name: kubernetes -- image: plataforma_openshift.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=openshift +- image: platform_openshift.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=openshift name: openshift -- image: plataforma_chef.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=chef +- image: platform_chef.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=chef name: chef -- image: plataforma_marioneta.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=puppet +- image: platform_puppet.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=puppet name: marioneta -- image: plataforma_ansible.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=ansible +- image: platform_ansible.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=ansible name: ansible -- image: plataforma_nube_fundición.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=cloud_foundry +- image: platform_cloud_foundry.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=cloud_foundry name: cloud_foundry -- image: plataforma_saltstack.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=saltstack +- image: platform_saltstack.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=saltstack name: salt -- image: plataforma_heroku.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=Heroku +- image: platform_heroku.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=heroku name: heroku -- image: plataforma_fromsource.png - link: https://app.datadoghq.com/account/settings/Agent/latest?platform=source +- image: platform_fromsource.png + link: https://app.datadoghq.com/account/settings/agent/latest?platform=source name: fuente platforms: - category: Linux - image: plataforma_aix.png - link: Agent/uso_agente_basico/aix/ + image: platform_aix.png + link: agent/basic_agent_usage/aix/ name: aix - category: Linux - image: plataforma_almalinux.png - link: Agent/uso_agente_basico/CentOS/ + image: platform_almalinux.png + link: agent/basic_agent_usage/centos/ name: almalinux - category: Linux - image: plataforma_amazonlinux.png - link: Agent/uso_agente_basico/amazonlinux/ + image: platform_amazonlinux.png + link: agent/basic_agent_usage/amazonlinux/ name: amazonlinux - category: configuration_management - image: plataforma_ansible.png - link: Agent/uso_agente_basico/ansible/ + image: platform_ansible.png + link: agent/basic_agent_usage/ansible/ name: ansible - category: Linux - image: plataforma_centos.png - link: Agent/uso_agente_basico/CentOS/ + image: platform_centos.png + link: agent/basic_agent_usage/centos/ name: centos - category: configuration_management - image: plataforma_chef.png - link: Agent/uso_agente_basico/chef/ + image: platform_chef.png + link: agent/basic_agent_usage/chef/ name: chef - category: Linux - image: plataforma_debian.png - link: Agent/uso_del_agente_basico/deb/ + image: platform_debian.png + link: agent/basic_agent_usage/deb/ name: deb - category: cloud_and_container - image: plataforma_docker.png - link: Agent/Docker/ + image: platform_docker.png + link: agent/docker/ name: docker - category: Linux - image: plataforma_fedora.png - link: Agent/uso_agente_basico/Fedora/ + image: platform_fedora.png + link: agent/basic_agent_usage/fedora/ name: fedora - category: cloud_and_container - image: plataforma_heroku.png - link: Agent/uso_agente_basico/Heroku/ + image: platform_heroku.png + link: agent/basic_agent_usage/heroku/ name: heroku - category: cloud_and_container - image: plataforma_kubernetes.png - link: Agent/Kubernetes/ + image: platform_kubernetes.png + link: agent/kubernetes/ name: kubernetes - category: macOS - image: plataforma_macos.png - link: Agent/uso_agente_basico/osx/ + image: platform_macos.png + link: agent/basic_agent_usage/osx/ name: osx - category: Linux - image: plataforma_oracle.png - link: Agent/uso_agente_basico/oracle/ + image: platform_oracle.png + link: agent/basic_agent_usage/oracle/ name: Oracle - category: configuration_management - image: plataforma_marioneta.png - link: Agent/uso_agente_basico/puppet/ + image: platform_puppet.png + link: agent/basic_agent_usage/puppet/ name: puppet - category: Linux - image: plataforma_redhat.png - link: Agent/uso_agente_basico/redhat/ + image: platform_redhat.png + link: agent/basic_agent_usage/redhat/ name: redhat - category: Linux - image: plataforma_rockylinux.png - link: Agent/uso_agente_basico/CentOS/ + image: platform_rockylinux.png + link: agent/basic_agent_usage/centos/ name: rockylinux - category: configuration_management - image: plataforma_saltstack.png - link: Agent/uso_agente_basico/saltstack/ + image: platform_saltstack.png + link: agent/basic_agent_usage/saltstack/ name: salt - category: Linux - image: plataforma_suse.png - link: Agent/uso_agente_basico/SUSE/ + image: platform_suse.png + link: agent/basic_agent_usage/suse/ name: suse - category: Linux - image: plataforma_ubuntu.png - link: Agent/uso_agente_basico/Ubuntu/ + image: platform_ubuntu.png + link: agent/basic_agent_usage/ubuntu/ name: ubuntu - category: Windows - image: plataforma_windows.png - link: Agent/uso_agente_basico/Windows/ + image: platform_windows.png + link: agent/basic_agent_usage/windows/ name: windows - category: Windows image: platform_sccm.png diff --git a/go.mod b/go.mod index 2923db9b307c3..c359c2e4fe72c 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.14 require ( github.com/DataDog/websites-modules v1.4.205 // indirect - github.com/DataDog/websites-sources v0.0.0-20241125134453-6f4fe0220a22 // indirect + github.com/DataDog/websites-sources v0.0.0-20250117185032-4a2553fdc82d // indirect ) // replace github.com/DataDog/websites-modules => /Users/matt.fitzsimmons/source/websites-modules diff --git a/go.sum b/go.sum index 5dd24e3326d9d..7c120ce473117 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,4 @@ github.com/DataDog/websites-modules v1.4.205 h1:OmmyizpEpO+oEWC3pF0Gl9C/UcIo2bETKhdcvUH0848= github.com/DataDog/websites-modules v1.4.205/go.mod h1:CcQxAmCXoiFr3hNw6Q+1si65C3uOP1gB+7aX4S3h+CQ= -github.com/DataDog/websites-sources v0.0.0-20241125134453-6f4fe0220a22 h1:4mxdsEkowAJuPndJUWb14oibV+KYKMu37hMvX0DD3rk= -github.com/DataDog/websites-sources v0.0.0-20241125134453-6f4fe0220a22/go.mod h1:RvGhXV0uQC6Ocs+n84QyL97kows6vg6VG5ZLQMHw4Fs= +github.com/DataDog/websites-sources v0.0.0-20250117185032-4a2553fdc82d h1:1lr/eHDZbd5deqAdEK6TLFuDbwX7QVy8Z8NVVFmlXCI= +github.com/DataDog/websites-sources v0.0.0-20250117185032-4a2553fdc82d/go.mod h1:RvGhXV0uQC6Ocs+n84QyL97kows6vg6VG5ZLQMHw4Fs= diff --git a/layouts/partials/api/curl.html b/layouts/partials/api/curl.html index a37bb12731a31..ec46df88432f2 100644 --- a/layouts/partials/api/curl.html +++ b/layouts/partials/api/curl.html @@ -132,7 +132,10 @@ {{ $authSchema := (index $securitySchemes $key) }} {{- if eq $authSchema.in "header" -}} {{ " \\" }} --H "{{ $authSchema.name }}:{{ if eq $authSchema.scheme "bearer" }} Bearer{{- end }} ${ {{- index $authSchema "x-env-name" -}} }" +-H "{{ $authSchema.name }}: ${ {{- index $authSchema "x-env-name" -}} }" + {{- else if eq $authSchema.scheme "bearer" -}} + {{ " \\" }} +-H "Authorization: Bearer ${ {{- index $authSchema "x-env-name" -}} }" {{- end -}} {{- end -}} {{- end -}} diff --git a/layouts/partials/code_security/ide-plugins.html b/layouts/partials/code_security/ide-plugins.html new file mode 100644 index 0000000000000..96b1ca717e3fc --- /dev/null +++ b/layouts/partials/code_security/ide-plugins.html @@ -0,0 +1,28 @@ +{{ $dot := . }} + diff --git a/layouts/partials/code_security/languages-getting-started.html b/layouts/partials/code_security/languages-getting-started.html new file mode 100644 index 0000000000000..8ff4994b96f22 --- /dev/null +++ b/layouts/partials/code_security/languages-getting-started.html @@ -0,0 +1,80 @@ +{{ $dot := . }} + diff --git a/layouts/partials/code_security/sca-getting-started.html b/layouts/partials/code_security/sca-getting-started.html new file mode 100644 index 0000000000000..b252a240f7c1f --- /dev/null +++ b/layouts/partials/code_security/sca-getting-started.html @@ -0,0 +1,33 @@ +{{ $root := . }} +{{ $supported_languages := slice + (dict "name" "Python" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/python_avatar.svg" "width" "50") + (dict "name" "JavaScript" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/javascript_large.png" "width" "50") + (dict "name" "Java" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/java_avatar.svg" "width" "50") + (dict "name" "CSharp" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/dotnet_avatar.svg" "width" "50") + (dict "name" "Go" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/golang-avatar.png" "width" "60") + (dict "name" "Rust" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/rust.png" "width" "60") + (dict "name" "Ruby" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/ruby_avatar.svg" "width" "45") + (dict "name" "PHP" "href" "/security/code_security/software_composition_analysis/setup_static#lockfiles" "src" "integrations_logos/php_opcache.png" "width" "80") + (dict "name" "Other" "href" "/security/code_security/software_composition_analysis/setup_static/generic_ci_providers" "src" "integrations_logos/datadog_avatar.svg" "width" "50") +}} + +
+
+
+ {{ range $index, $lang := $supported_languages }} + + {{ if eq (mod (add $index 1) 3) 0 }} +
+
+
+ {{ end }} + {{ end }} +
+
+
diff --git a/layouts/partials/nav/left-nav.html b/layouts/partials/nav/left-nav.html index c51498d4f582c..55b784ac741ca 100644 --- a/layouts/partials/nav/left-nav.html +++ b/layouts/partials/nav/left-nav.html @@ -68,9 +68,8 @@ {{ if .HasChildren }}