From 2941b14daac14d67001a66b19a7974e844995a6f Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Tue, 19 Aug 2025 17:33:18 +0100 Subject: [PATCH 01/12] ci(ipa): automatic warning-level violation detection --- .github/scripts/handle_warning_violations.sh | 113 ++ .github/workflows/release-IPA-metrics.yml | 22 +- .../metrics/data/collector-results.log | 6 +- .../metrics/data/expected-metric-results.json | 1762 ++++++++++++++++- .../metrics/metricCollection.test.js | 5 +- .../spectral/ipa/metrics/metricCollection.js | 24 +- .../metrics/scripts/runMetricCollection.js | 19 +- 7 files changed, 1942 insertions(+), 9 deletions(-) create mode 100644 .github/scripts/handle_warning_violations.sh diff --git a/.github/scripts/handle_warning_violations.sh b/.github/scripts/handle_warning_violations.sh new file mode 100644 index 0000000000..2e2de16ba7 --- /dev/null +++ b/.github/scripts/handle_warning_violations.sh @@ -0,0 +1,113 @@ +#!/bin/bash +set -eou pipefail + +WARNING_COUNT=$1 +TEAM_ID=$2 +JIRA_API_TOKEN=$3 +SLACK_BEARER_TOKEN=$4 +SLACK_CHANNEL_ID=$5 +DRY_RUN=${6:-false} # Optional 6th parameter for dry run + +if [ "$WARNING_COUNT" -eq 0 ]; then + echo "No warning violations found, skipping ticket creation" + exit 0 +fi + +# Read violation details if available +VIOLATION_DETAILS="" +if [ -f "tools/spectral/ipa/metrics/outputs/warning-violations.json" ]; then + VIOLATION_DETAILS=$(jq -r ' + group_by(.code) | + map("• " + .[0].code + " (" + (length | tostring) + " violations)") | + join("\n") + ' tools/spectral/ipa/metrics/outputs/warning-violations.json) +fi + +if [ "$DRY_RUN" = "true" ]; then + echo "=== DRY RUN MODE ===" + echo "Would create Jira ticket with:" + echo "Summary: Warning-level IPA violations found - $WARNING_COUNT violations" + echo "Description:" + echo "Warning-level violations were found during IPA validation. + +Violation Summary: +$VIOLATION_DETAILS + +Total violations: $WARNING_COUNT" + echo "" + echo "Would send Slack message:" + SLACK_SUMMARY=$(echo "$VIOLATION_DETAILS" | head -3) + if [ $(echo "$VIOLATION_DETAILS" | wc -l) -gt 3 ]; then + SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" + fi + echo "Warning-level IPA violations found ($WARNING_COUNT violations). + +Top violations: +$SLACK_SUMMARY + +Jira ticket: [DRY RUN - no ticket created]" + exit 0 +fi + +# Check if warning ticket already exists +EXISTING_TICKET=$(curl -s -H "Authorization: Bearer $JIRA_API_TOKEN" \ + "https://jira.mongodb.org/rest/api/2/search?jql=project=CLOUDP AND summary~'Warning-level IPA violations' AND status!=Done" \ + | jq -r '.issues[0].key // empty') + +if [ -n "$EXISTING_TICKET" ]; then + echo "Warning ticket already exists: $EXISTING_TICKET" + exit 0 +fi + +# Create detailed description +DESCRIPTION="Warning-level violations were found during IPA validation. Please review and add exceptions if valid, or address false positives. + +Violation Summary: +$VIOLATION_DETAILS + +Total violations: $WARNING_COUNT" + +# Create new Jira ticket +TICKET_RESPONSE=$(curl -s -X POST -H "Authorization: Bearer $JIRA_API_TOKEN" \ + -H "Content-Type: application/json" \ + -d "{ + \"fields\": { + \"project\": {\"key\": \"CLOUDP\"}, + \"summary\": \"Warning-level IPA violations found - $WARNING_COUNT violations\", + \"description\": \"$DESCRIPTION\", + \"issuetype\": {\"name\": \"Task\"}, + \"assignee\": {\"id\": \"$TEAM_ID\"} + } + }" \ + "https://jira.mongodb.org/rest/api/2/issue/") + +TICKET_KEY=$(echo "$TICKET_RESPONSE" | jq -r '.key') + +if [ "$TICKET_KEY" != "null" ]; then + echo "Created Jira ticket: $TICKET_KEY" + + # Create summary for Slack + SLACK_SUMMARY="" + if [ -n "$VIOLATION_DETAILS" ]; then + SLACK_SUMMARY=$(echo "$VIOLATION_DETAILS" | head -3) + if [ $(echo "$VIOLATION_DETAILS" | wc -l) -gt 3 ]; then + SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" + fi + fi + + # Send Slack notification with violation summary + SLACK_MESSAGE="Warning-level IPA violations found ($WARNING_COUNT violations). + +Top violations: +$SLACK_SUMMARY + +Jira ticket: https://jira.mongodb.org/browse/$TICKET_KEY" + + curl -X POST -H "Authorization: Bearer $SLACK_BEARER_TOKEN" \ + -H "Content-type: application/json" \ + --data "{\"channel\":\"$SLACK_CHANNEL_ID\",\"text\":\"$SLACK_MESSAGE\"}" \ + https://slack.com/api/chat.postMessage +else + echo "Failed to create Jira ticket" + exit 1 +fi \ No newline at end of file diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index 15806caf7f..1a45776b14 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -38,8 +38,16 @@ jobs: working-directory: ${{ github.workspace }} - name: Run Metric Collection Job + id: metric-collection working-directory: tools/spectral/ipa/metrics/scripts - run: node runMetricCollection.js "${{ github.workspace }}/v2.json" + run: | + node runMetricCollection.js "${{ github.workspace }}/v2.json" + if [ -f "../outputs/warning-count.txt" ]; then + warning_count=$(cat ../outputs/warning-count.txt) + echo "warning_count=${warning_count}" >> $GITHUB_OUTPUT + else + echo "warning_count=0" >> $GITHUB_OUTPUT + fi - name: aws configure uses: aws-actions/configure-aws-credentials@v4 @@ -54,6 +62,18 @@ jobs: working-directory: tools/spectral/ipa/metrics/scripts run: node dataDump.js + - name: Handle Warning Violations + if: ${{ steps.metric-collection.outputs.warning_count > 0 }} + env: + WARNING_COUNT: ${{ steps.metric-collection.outputs.warning_count }} + TEAM_ID: ${{ vars.JIRA_TEAM_ID_APIX_1 }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + SLACK_BEARER_TOKEN: ${{ secrets.SLACK_BEARER_TOKEN }} + SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_1_DEV }} + run: | + chmod +x .github/scripts/handle_warning_violations.sh + .github/scripts/handle_warning_violations.sh "$WARNING_COUNT" "$TEAM_ID" "$JIRA_API_TOKEN" "$SLACK_BEARER_TOKEN" "$SLACK_CHANNEL_ID" + failure-handler: name: Failure Handler needs: [ release-IPA-metrics ] diff --git a/tools/spectral/ipa/__tests__/metrics/data/collector-results.log b/tools/spectral/ipa/__tests__/metrics/data/collector-results.log index 6ff5524aad..7545026c1e 100644 --- a/tools/spectral/ipa/__tests__/metrics/data/collector-results.log +++ b/tools/spectral/ipa/__tests__/metrics/data/collector-results.log @@ -1,5 +1,9 @@ { - "violations": [], + "violations": [ + { + "componentId": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get", + "ruleName": "xgen-IPA-104-valid-operation-id" + }], "adoptions": [ { "componentId": "paths./api/atlas/v2", diff --git a/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json b/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json index 0ce64938cf..0fa42f9741 100644 --- a/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json +++ b/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json @@ -1 +1,1761 @@ -[{"component_id":"paths./api/atlas/v2","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"apix","timestamp":"2025-01-21T16:45:11.679Z"},{"component_id":"paths./api/atlas/v2/alertConfigs/matchers/fieldNames","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/clusters","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/eventTypes","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/example/info","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"apix","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}/roleMappings","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders/{identityProviderId}/metadata.xml","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":null,"timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/accessList","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/accessList/{entryValue}/status","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/alertConfigs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/alertConfigs/{alertConfigId}/alerts","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/alerts","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/alerts/{alertId}/alertConfigs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/auditLog","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/awsCustomDNS","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/backup/exportBuckets","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/backupCompliancePolicy","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/cloudProviderAccess","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/provider/regions","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/exports","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/restoreJobs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/schedule","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/snapshots","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/snapshots/shardedClusters","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/restores","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/snapshots","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backupCheckpoints","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/collStats/pinned","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/fts/indexes","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Search Web Platform","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/globalWrites","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/onlineArchives","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/onlineArchives/queryLogs.gz","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":null,"timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/outageSimulation","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/performanceAdvisor/dropIndexSuggestions","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/performanceAdvisor/schemaAdvice","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/performanceAdvisor/suggestedIndexes","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/processArgs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/restoreJobs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/deployment","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Search Web Platform","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Search Web Platform","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/snapshotSchedule","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/snapshots","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Atlas","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/status","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/{clusterView}/collStats/namespaces","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/{clusterView}/{databaseName}/{collectionName}/collStats/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{hostName}/logs/{logName}.gz","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":null,"timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/collStats/metrics","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/containers","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/containers/all","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/customDBRoles/roles","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/dataFederation","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/dataFederation/{tenantName}/limits","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/dataFederation/{tenantName}/queryLogs.gz","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":null,"timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/databaseUsers","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/databaseUsers/{username}/certs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/encryptionAtRest","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/encryptionAtRest/{cloudProvider}/privateEndpoints","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/events","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/flexClusters","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Serverless II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/flexClusters/{name}/backup/restoreJobs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Serverless II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/flexClusters/{name}/backup/snapshots","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Serverless II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics/indexes/{databaseName}/{collectionName}/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics/indexes/{databaseName}/{collectionName}/{indexName}/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/integrations","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/invites","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/ipAddresses","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Clusters Security II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/limits","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/liveMigrations","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Migrations","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/liveMigrations/validate","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Migrations","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/maintenanceWindow","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/managedSlowMs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/mongoDBVersions","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/peers","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/availableSchedules","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/availableSnapshots","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/runs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateEndpoint/regionalMode","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateEndpoint/serverless/instance/{instanceName}/endpoint","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Serverless II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateEndpoint/{cloudProvider}/endpointService","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateEndpoint/{cloudProvider}/endpointService/{endpointServiceId}/endpoint","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateIpMode","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateNetworkSettings/endpointIds","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/collStats/namespaces","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/databases","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/databases/{databaseName}/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/disks","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/disks/{partitionName}/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/namespaces","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/slowQueryLogs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/suggestedIndexes","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/processes/{processId}/{databaseName}/{collectionName}/collStats/measurements","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pushBasedLogExport","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serverless","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Serverless II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serverless/{clusterName}/backup/restoreJobs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Private Cloud","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serverless/{clusterName}/backup/snapshots","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Backup - Private Cloud","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serverless/{clusterName}/performanceAdvisor/autoIndexing","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serviceAccounts","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"apix","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/settings","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/accountDetails","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/activeVpcPeeringConnections","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/privateLinkConnections","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/auditLogs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/connections","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/processors","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/userSecurity","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/userSecurity/ldap/verify","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/users","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/openapi/info","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"apix","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/apiKeys","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/apiKeys/{apiUserId}/accessList","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/billing/costExplorer/usage","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Billing Platform","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/events","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"CAP","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/federationSettings","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/groups","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/invites","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/invoices","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Payments","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/invoices/pending","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Payments","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/invoices/{invoiceId}/csv","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Payments","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/liveMigrations/availableProjects","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Migrations","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/nonCompliantResources","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/resourcePolicies","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/serviceAccounts","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"apix","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/groups","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"apix","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/settings","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/teams","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/users","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/unauth/controlPlaneIPAddresses","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"Atlas Clusters Security II","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/unauth/openapi/versions","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/users","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"adopted","exception_reason":null,"owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders/{identityProviderId}/jwks","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.680Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/access","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/apiKeys","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/tenantUpgrade","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/tenantUpgradeToServerless","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/download","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/restore","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/collStats/unpin","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Intel I","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/globalWrites/customZoneMapping","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/globalWrites/managedNamespaces","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/index","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Developer Tools","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/restartPrimaries","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/flexClusters/{name}/backup/download","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Serverless II","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/liveMigrations/{liveMigrationId}/cutover","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Migrations","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/maintenanceWindow/autoDefer","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/maintenanceWindow/defer","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/managedSlowMs/disable","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/managedSlowMs/enable","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Intel II","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/pause","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/resume","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/trigger","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Online Archive II","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/privateEndpoint/endpointService","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serviceAccounts/{clientId}/accessList","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"apix","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/serviceAccounts/{clientId}/secrets","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"apix","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/streams/vpcPeeringConnections","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Streams","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/teams","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/userSecurity/customerX509","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/userSecurity/ldap/userToDNMapping","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Dedicated","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/groups/{groupId}/users/{userId}/roles","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/liveMigrations/linkTokens","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"Atlas Migrations","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/accessList","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"apix","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/secrets","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"apix","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/teams/{teamId}/users","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.681Z"},{"component_id":"paths./api/atlas/v2/orgs/{orgId}/users/{userId}/roles","ipa_rule":"xgen-IPA-104-resource-has-GET","ipa":"IPA-104","severity_level":"error","adoption_status":"exempted","exception_reason":"API predates IPA validation","owner_team":"IAM","timestamp":"2025-01-21T16:45:11.681Z"}] \ No newline at end of file +[ + { + "component_id": "paths./api/atlas/v2", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.679Z" + }, + { + "component_id": "paths./api/atlas/v2/alertConfigs/matchers/fieldNames", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/clusters", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/eventTypes", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/example/info", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}/roleMappings", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders/{identityProviderId}/metadata.xml", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": null, + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/accessList", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/accessList/{entryValue}/status", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/alertConfigs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/alertConfigs/{alertConfigId}/alerts", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/alerts", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/alerts/{alertId}/alertConfigs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/auditLog", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/awsCustomDNS", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/backup/exportBuckets", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/backupCompliancePolicy", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/cloudProviderAccess", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/provider/regions", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/exports", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/restoreJobs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/schedule", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/snapshots", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/snapshots/shardedClusters", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/restores", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/snapshots", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backupCheckpoints", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/collStats/pinned", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/fts/indexes", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Search Web Platform", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/globalWrites", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/onlineArchives", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/onlineArchives/queryLogs.gz", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": null, + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/outageSimulation", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/performanceAdvisor/dropIndexSuggestions", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/performanceAdvisor/schemaAdvice", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/performanceAdvisor/suggestedIndexes", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/processArgs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/restoreJobs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/deployment", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Search Web Platform", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Search Web Platform", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/snapshotSchedule", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/snapshots", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Atlas", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/status", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/{clusterView}/collStats/namespaces", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/{clusterView}/{databaseName}/{collectionName}/collStats/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{hostName}/logs/{logName}.gz", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": null, + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/collStats/metrics", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/containers", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/containers/all", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/customDBRoles/roles", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/dataFederation", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/dataFederation/{tenantName}/limits", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/dataFederation/{tenantName}/queryLogs.gz", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": null, + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/databaseUsers", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/databaseUsers/{username}/certs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/encryptionAtRest", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/encryptionAtRest/{cloudProvider}/privateEndpoints", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/events", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/flexClusters", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Serverless II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/flexClusters/{name}/backup/restoreJobs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Serverless II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/flexClusters/{name}/backup/snapshots", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Serverless II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics/indexes/{databaseName}/{collectionName}/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics/indexes/{databaseName}/{collectionName}/{indexName}/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/hosts/{processId}/fts/metrics/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/integrations", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/invites", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/ipAddresses", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Clusters Security II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/limits", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/liveMigrations", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Migrations", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/liveMigrations/validate", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Migrations", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/maintenanceWindow", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/managedSlowMs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/mongoDBVersions", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/peers", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/availableSchedules", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/availableSnapshots", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/runs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateEndpoint/regionalMode", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateEndpoint/serverless/instance/{instanceName}/endpoint", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Serverless II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateEndpoint/{cloudProvider}/endpointService", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateEndpoint/{cloudProvider}/endpointService/{endpointServiceId}/endpoint", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateIpMode", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateNetworkSettings/endpointIds", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/collStats/namespaces", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/databases", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/databases/{databaseName}/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/disks", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/disks/{partitionName}/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/namespaces", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/slowQueryLogs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/performanceAdvisor/suggestedIndexes", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/processes/{processId}/{databaseName}/{collectionName}/collStats/measurements", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pushBasedLogExport", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serverless", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Serverless II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serverless/{clusterName}/backup/restoreJobs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Private Cloud", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serverless/{clusterName}/backup/snapshots", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Backup - Private Cloud", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serverless/{clusterName}/performanceAdvisor/autoIndexing", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serviceAccounts", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/settings", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/accountDetails", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/activeVpcPeeringConnections", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/privateLinkConnections", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/auditLogs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/connections", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/{tenantName}/processors", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/userSecurity", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/userSecurity/ldap/verify", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/users", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/openapi/info", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/apiKeys", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/apiKeys/{apiUserId}/accessList", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/billing/costExplorer/usage", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Billing Platform", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/events", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "CAP", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/federationSettings", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/groups", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/invites", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/invoices", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Payments", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/invoices/pending", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Payments", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/invoices/{invoiceId}/csv", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Payments", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/liveMigrations/availableProjects", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Migrations", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/nonCompliantResources", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/resourcePolicies", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/serviceAccounts", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/groups", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/settings", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/teams", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/users", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/unauth/controlPlaneIPAddresses", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "Atlas Clusters Security II", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/unauth/openapi/versions", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/users", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "adopted", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders/{identityProviderId}/jwks", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.680Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/access", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/apiKeys", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/tenantUpgrade", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/tenantUpgradeToServerless", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/download", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backup/tenant/restore", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/collStats/unpin", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Intel I", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/globalWrites/customZoneMapping", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/globalWrites/managedNamespaces", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/index", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Developer Tools", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/clusters/{clusterName}/restartPrimaries", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/flexClusters/{name}/backup/download", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Serverless II", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/liveMigrations/{liveMigrationId}/cutover", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Migrations", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/maintenanceWindow/autoDefer", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/maintenanceWindow/defer", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/managedSlowMs/disable", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/managedSlowMs/enable", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Intel II", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/pause", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/resume", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/trigger", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Online Archive II", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/privateEndpoint/endpointService", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serviceAccounts/{clientId}/accessList", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/serviceAccounts/{clientId}/secrets", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/streams/vpcPeeringConnections", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Streams", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/teams", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/userSecurity/customerX509", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/userSecurity/ldap/userToDNMapping", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Dedicated", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/groups/{groupId}/users/{userId}/roles", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/liveMigrations/linkTokens", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "Atlas Migrations", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/accessList", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/secrets", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "apix", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/teams/{teamId}/users", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/orgs/{orgId}/users/{userId}/roles", + "ipa_rule": "xgen-IPA-104-resource-has-GET", + "ipa": "IPA-104", + "severity_level": "error", + "adoption_status": "exempted", + "exception_reason": "API predates IPA validation", + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + }, + { + "component_id": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get", + "ipa_rule": "xgen-IPA-104-valid-operation-id", + "ipa": "IPA-104", + "severity_level": "warn", + "adoption_status": "violated", + "exception_reason": null, + "owner_team": "IAM", + "timestamp": "2025-01-21T16:45:11.681Z" + } +] \ No newline at end of file diff --git a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js index 82f6bb2f01..71df6585a7 100644 --- a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js +++ b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js @@ -24,14 +24,15 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' it('Outputs the expected metrics collection results', async () => { const expectedResults = JSON.parse(fs.readFileSync(expectedResultFilePath, 'utf8')); + console.log(expectedResults[expectedResults.length-1]); const spectral = new Spectral(); const results = await runMetricCollectionJob(testConfig, spectral); expect(results).not.toBe(undefined); - expect(results.length).toEqual(expectedResults.length); + expect(results.metrics.length).toEqual(expectedResults.length); - results.forEach((entry, index) => { + results.metrics.forEach((entry, index) => { const expectedEntry = getEntry(expectedResults, entry['component_id'], entry['ipa_rule']); expect(entry['component_id']).toEqual(expectedEntry['component_id']); expect(entry['adoption_status']).toEqual(expectedEntry['adoption_status']); diff --git a/tools/spectral/ipa/metrics/metricCollection.js b/tools/spectral/ipa/metrics/metricCollection.js index 2254c9ec6a..d8510a8c0f 100644 --- a/tools/spectral/ipa/metrics/metricCollection.js +++ b/tools/spectral/ipa/metrics/metricCollection.js @@ -22,7 +22,7 @@ export async function runMetricCollectionJob( console.log('Extracting team ownership data...'); const ownershipData = extractTeamOwnership(oasContent); - console.log('Getting rule severities...'); + console.log(`Getting rule severities... ${rulesetFilePath}`); const ruleset = await loadRuleset(rulesetFilePath, spectral); const ruleSeverityMap = getSeverityPerRule(ruleset); @@ -32,8 +32,28 @@ export async function runMetricCollectionJob( console.log('Merging results...'); const mergedResults = merge(ownershipData, collectorResults, ruleSeverityMap); + const warningViolations = mergedResults.filter(result => + result.severity_level === 1 && result.adoption_status === 'violated' + ); + + const processedWarnings = warningViolations.map(violation => ({ + code: violation.ipa_rule, + message: `IPA rule ${violation.ipa_rule} violated`, + path: violation.component_id, + source: null + })); + + console.log(`Found ${warningViolations.length} warning-level violations`); + + console.log('Metric collection job complete.'); - return mergedResults; + return { + metrics: mergedResults, + warnings: { + count: warningViolations.length, + violations: processedWarnings + } + }; } catch (error) { console.error('Error during metric collection:', error.message); throw error; diff --git a/tools/spectral/ipa/metrics/scripts/runMetricCollection.js b/tools/spectral/ipa/metrics/scripts/runMetricCollection.js index cd9a2af601..28c9cdf6fb 100644 --- a/tools/spectral/ipa/metrics/scripts/runMetricCollection.js +++ b/tools/spectral/ipa/metrics/scripts/runMetricCollection.js @@ -1,7 +1,13 @@ import fs from 'node:fs'; +import path from 'path'; import { spawnSync } from 'child_process'; import spectral from '@stoplight/spectral-core'; -import { Compression, Table, writeParquet, WriterPropertiesBuilder } from 'parquet-wasm'; +import { + Compression, + Table, + writeParquet, + WriterPropertiesBuilder, +} from 'parquet-wasm'; import { tableFromJSON, tableToIPC } from 'apache-arrow'; import config from '../config.js'; import { runMetricCollectionJob } from '../metricCollection.js'; @@ -53,12 +59,21 @@ runMetricCollectionJob( ) .then((results) => { console.log('Writing results'); - const table = tableFromJSON(results); + const table = tableFromJSON(results.metrics); const wasmTable = Table.fromIPCStream(tableToIPC(table, 'stream')); const parquetUint8Array = writeParquet( wasmTable, new WriterPropertiesBuilder().setCompression(Compression.GZIP).build() ); fs.writeFileSync(config.defaultMetricCollectionResultsFilePath, parquetUint8Array); + fs.writeFileSync( + path.join(config.defaultOutputsDir, 'warning-count.txt'), + results.warnings.count.toString() + ); + + fs.writeFileSync( + path.join(config.defaultOutputsDir, 'warning-violations.json'), + JSON.stringify(results.warnings.violations, null, 2) + ); }) .catch((error) => console.error(error.message)); From 3fc2a2874727e6f7ea21660021b90f202c32ccd3 Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 12:50:13 +0100 Subject: [PATCH 02/12] update slack channel and jira team --- .github/workflows/release-IPA-metrics.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index 42ecd49336..8adb8f8628 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -66,10 +66,10 @@ jobs: if: ${{ steps.metric-collection.outputs.warning_count > 0 }} env: WARNING_COUNT: ${{ steps.metric-collection.outputs.warning_count }} - TEAM_ID: ${{ vars.JIRA_TEAM_ID_APIX_1 }} + TEAM_ID: ${{ vars.JIRA_TEAM_ID_APIX_PLATFORM }} JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} SLACK_BEARER_TOKEN: ${{ secrets.SLACK_BEARER_TOKEN }} - SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_1_DEV }} + SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_PLATFORM_DEV }} run: | chmod +x .github/scripts/handle_warning_violations.sh .github/scripts/handle_warning_violations.sh "$WARNING_COUNT" "$TEAM_ID" "$JIRA_API_TOKEN" "$SLACK_BEARER_TOKEN" "$SLACK_CHANNEL_ID" From 5afdba82084f48eb51d7131777ee14844de602b8 Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 13:29:07 +0100 Subject: [PATCH 03/12] fix --- .../metrics/data/expected-metric-results.json | 2 +- .../ipa/__tests__/metrics/metricCollection.test.js | 10 +++++++++- tools/spectral/ipa/metrics/metricCollection.js | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json b/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json index 0fa42f9741..4c608290b7 100644 --- a/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json +++ b/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json @@ -1755,7 +1755,7 @@ "severity_level": "warn", "adoption_status": "violated", "exception_reason": null, - "owner_team": "IAM", + "owner_team": null, "timestamp": "2025-01-21T16:45:11.681Z" } ] \ No newline at end of file diff --git a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js index 71df6585a7..3545024350 100644 --- a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js +++ b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js @@ -24,7 +24,6 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' it('Outputs the expected metrics collection results', async () => { const expectedResults = JSON.parse(fs.readFileSync(expectedResultFilePath, 'utf8')); - console.log(expectedResults[expectedResults.length-1]); const spectral = new Spectral(); const results = await runMetricCollectionJob(testConfig, spectral); @@ -32,6 +31,15 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' expect(results).not.toBe(undefined); expect(results.metrics.length).toEqual(expectedResults.length); + expect(results.warnings.count).toEqual(1); + const violations= [{ + code: 'xgen-IPA-104-valid-operation-id', + message: 'IPA rule xgen-IPA-104-valid-operation-id violated', + path: 'paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get', + source: null, + }]; + expect(results.warnings.violations).toEqual(violations); + results.metrics.forEach((entry, index) => { const expectedEntry = getEntry(expectedResults, entry['component_id'], entry['ipa_rule']); expect(entry['component_id']).toEqual(expectedEntry['component_id']); diff --git a/tools/spectral/ipa/metrics/metricCollection.js b/tools/spectral/ipa/metrics/metricCollection.js index d8510a8c0f..f3d7cc14f8 100644 --- a/tools/spectral/ipa/metrics/metricCollection.js +++ b/tools/spectral/ipa/metrics/metricCollection.js @@ -22,7 +22,7 @@ export async function runMetricCollectionJob( console.log('Extracting team ownership data...'); const ownershipData = extractTeamOwnership(oasContent); - console.log(`Getting rule severities... ${rulesetFilePath}`); + console.log('Getting rule severities...'); const ruleset = await loadRuleset(rulesetFilePath, spectral); const ruleSeverityMap = getSeverityPerRule(ruleset); @@ -33,7 +33,7 @@ export async function runMetricCollectionJob( const mergedResults = merge(ownershipData, collectorResults, ruleSeverityMap); const warningViolations = mergedResults.filter(result => - result.severity_level === 1 && result.adoption_status === 'violated' + result.severity_level === 'warn' && result.adoption_status === 'violated' ); const processedWarnings = warningViolations.map(violation => ({ From 0adaa4223ae87895cd44b068c97cf60687b15826 Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 13:30:19 +0100 Subject: [PATCH 04/12] fix --- .../metrics/data/expected-metric-results.json | 2 +- .../ipa/__tests__/metrics/metricCollection.test.js | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json b/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json index 4c608290b7..328b6319c5 100644 --- a/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json +++ b/tools/spectral/ipa/__tests__/metrics/data/expected-metric-results.json @@ -1758,4 +1758,4 @@ "owner_team": null, "timestamp": "2025-01-21T16:45:11.681Z" } -] \ No newline at end of file +] diff --git a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js index 3545024350..fc47b351a0 100644 --- a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js +++ b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js @@ -32,12 +32,14 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' expect(results.metrics.length).toEqual(expectedResults.length); expect(results.warnings.count).toEqual(1); - const violations= [{ - code: 'xgen-IPA-104-valid-operation-id', - message: 'IPA rule xgen-IPA-104-valid-operation-id violated', - path: 'paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get', - source: null, - }]; + const violations = [ + { + code: 'xgen-IPA-104-valid-operation-id', + message: 'IPA rule xgen-IPA-104-valid-operation-id violated', + path: 'paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get', + source: null, + }, + ]; expect(results.warnings.violations).toEqual(violations); results.metrics.forEach((entry, index) => { From 85158b20d5f7ac7fd362bc1ae6bc3cef3559aae0 Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 13:36:38 +0100 Subject: [PATCH 05/12] prettier fix --- tools/spectral/ipa/metrics/metricCollection.js | 13 ++++++------- .../ipa/metrics/scripts/runMetricCollection.js | 12 ++---------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/tools/spectral/ipa/metrics/metricCollection.js b/tools/spectral/ipa/metrics/metricCollection.js index f3d7cc14f8..ef63a5dfbd 100644 --- a/tools/spectral/ipa/metrics/metricCollection.js +++ b/tools/spectral/ipa/metrics/metricCollection.js @@ -32,27 +32,26 @@ export async function runMetricCollectionJob( console.log('Merging results...'); const mergedResults = merge(ownershipData, collectorResults, ruleSeverityMap); - const warningViolations = mergedResults.filter(result => - result.severity_level === 'warn' && result.adoption_status === 'violated' + const warningViolations = mergedResults.filter( + (result) => result.severity_level === 'warn' && result.adoption_status === 'violated' ); - const processedWarnings = warningViolations.map(violation => ({ + const processedWarnings = warningViolations.map((violation) => ({ code: violation.ipa_rule, message: `IPA rule ${violation.ipa_rule} violated`, path: violation.component_id, - source: null + source: null, })); console.log(`Found ${warningViolations.length} warning-level violations`); - console.log('Metric collection job complete.'); return { metrics: mergedResults, warnings: { count: warningViolations.length, - violations: processedWarnings - } + violations: processedWarnings, + }, }; } catch (error) { console.error('Error during metric collection:', error.message); diff --git a/tools/spectral/ipa/metrics/scripts/runMetricCollection.js b/tools/spectral/ipa/metrics/scripts/runMetricCollection.js index 28c9cdf6fb..d91f63a72b 100644 --- a/tools/spectral/ipa/metrics/scripts/runMetricCollection.js +++ b/tools/spectral/ipa/metrics/scripts/runMetricCollection.js @@ -2,12 +2,7 @@ import fs from 'node:fs'; import path from 'path'; import { spawnSync } from 'child_process'; import spectral from '@stoplight/spectral-core'; -import { - Compression, - Table, - writeParquet, - WriterPropertiesBuilder, -} from 'parquet-wasm'; +import { Compression, Table, writeParquet, WriterPropertiesBuilder } from 'parquet-wasm'; import { tableFromJSON, tableToIPC } from 'apache-arrow'; import config from '../config.js'; import { runMetricCollectionJob } from '../metricCollection.js'; @@ -66,10 +61,7 @@ runMetricCollectionJob( new WriterPropertiesBuilder().setCompression(Compression.GZIP).build() ); fs.writeFileSync(config.defaultMetricCollectionResultsFilePath, parquetUint8Array); - fs.writeFileSync( - path.join(config.defaultOutputsDir, 'warning-count.txt'), - results.warnings.count.toString() - ); + fs.writeFileSync(path.join(config.defaultOutputsDir, 'warning-count.txt'), results.warnings.count.toString()); fs.writeFileSync( path.join(config.defaultOutputsDir, 'warning-violations.json'), From 31a11b55c254ec1e5a9ae8f4c0584c08a6110a5c Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 14:07:42 +0100 Subject: [PATCH 06/12] shellcheck fixes --- .github/scripts/handle_warning_violations.sh | 16 +++++--------- .github/workflows/release-IPA-metrics.yml | 6 +++--- .../metrics/metricCollection.test.js | 21 +++++++++---------- .../metrics/outputs/warning-violations.json | 8 +++++++ 4 files changed, 26 insertions(+), 25 deletions(-) mode change 100644 => 100755 .github/scripts/handle_warning_violations.sh create mode 100644 tools/spectral/ipa/metrics/outputs/warning-violations.json diff --git a/.github/scripts/handle_warning_violations.sh b/.github/scripts/handle_warning_violations.sh old mode 100644 new mode 100755 index 2e2de16ba7..9bdd34dd93 --- a/.github/scripts/handle_warning_violations.sh +++ b/.github/scripts/handle_warning_violations.sh @@ -28,7 +28,7 @@ if [ "$DRY_RUN" = "true" ]; then echo "Would create Jira ticket with:" echo "Summary: Warning-level IPA violations found - $WARNING_COUNT violations" echo "Description:" - echo "Warning-level violations were found during IPA validation. + echo "Warning-level violations were found during IPA validation. Please review and add exceptions if valid, or address false positives. Violation Summary: $VIOLATION_DETAILS @@ -37,13 +37,10 @@ Total violations: $WARNING_COUNT" echo "" echo "Would send Slack message:" SLACK_SUMMARY=$(echo "$VIOLATION_DETAILS" | head -3) - if [ $(echo "$VIOLATION_DETAILS" | wc -l) -gt 3 ]; then + if [ "$(echo "$VIOLATION_DETAILS" | wc -l)" -gt 3 ]; then SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" fi - echo "Warning-level IPA violations found ($WARNING_COUNT violations). - -Top violations: -$SLACK_SUMMARY + echo "Warning-level IPA violations found ($WARNING_COUNT violations). Jira ticket: [DRY RUN - no ticket created]" exit 0 @@ -90,16 +87,13 @@ if [ "$TICKET_KEY" != "null" ]; then SLACK_SUMMARY="" if [ -n "$VIOLATION_DETAILS" ]; then SLACK_SUMMARY=$(echo "$VIOLATION_DETAILS" | head -3) - if [ $(echo "$VIOLATION_DETAILS" | wc -l) -gt 3 ]; then + if [ "$(echo "$VIOLATION_DETAILS" | wc -l)" -gt 3 ]; then SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" fi fi # Send Slack notification with violation summary - SLACK_MESSAGE="Warning-level IPA violations found ($WARNING_COUNT violations). - -Top violations: -$SLACK_SUMMARY + SLACK_MESSAGE="Warning-level IPA violations found ($WARNING_COUNT violations). Jira ticket: https://jira.mongodb.org/browse/$TICKET_KEY" diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index 8adb8f8628..45a03b042e 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -43,10 +43,10 @@ jobs: run: | node runMetricCollection.js "${{ github.workspace }}/v2.json" if [ -f "../outputs/warning-count.txt" ]; then - warning_count=$(cat ../outputs/warning-count.txt) - echo "warning_count=${warning_count}" >> $GITHUB_OUTPUT + warning_count=$(cat "../outputs/warning-count.txt") + echo "warning_count=${warning_count}" >> "$GITHUB_OUTPUT" else - echo "warning_count=0" >> $GITHUB_OUTPUT + echo "warning_count=0" >> "$GITHUB_OUTPUT" fi - name: aws configure diff --git a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js index fc47b351a0..754a82e389 100644 --- a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js +++ b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js @@ -30,6 +30,16 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' expect(results).not.toBe(undefined); expect(results.metrics.length).toEqual(expectedResults.length); + results.metrics.forEach((entry, index) => { + const expectedEntry = getEntry(expectedResults, entry['component_id'], entry['ipa_rule']); + expect(entry['component_id']).toEqual(expectedEntry['component_id']); + expect(entry['adoption_status']).toEqual(expectedEntry['adoption_status']); + expect(entry['ipa']).toEqual(expectedEntry['ipa']); + expect(entry['ipa_rule']).toEqual(expectedEntry['ipa_rule']); + expect(entry['exception_reason']).toEqual(expectedEntry['exception_reason']); + expect(entry['owner_team']).toEqual(expectedEntry['owner_team']); + expect(entry['severity_level']).toEqual(expectedEntry['severity_level']); + }); expect(results.warnings.count).toEqual(1); const violations = [ @@ -41,17 +51,6 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' }, ]; expect(results.warnings.violations).toEqual(violations); - - results.metrics.forEach((entry, index) => { - const expectedEntry = getEntry(expectedResults, entry['component_id'], entry['ipa_rule']); - expect(entry['component_id']).toEqual(expectedEntry['component_id']); - expect(entry['adoption_status']).toEqual(expectedEntry['adoption_status']); - expect(entry['ipa']).toEqual(expectedEntry['ipa']); - expect(entry['ipa_rule']).toEqual(expectedEntry['ipa_rule']); - expect(entry['exception_reason']).toEqual(expectedEntry['exception_reason']); - expect(entry['owner_team']).toEqual(expectedEntry['owner_team']); - expect(entry['severity_level']).toEqual(expectedEntry['severity_level']); - }); }); }); diff --git a/tools/spectral/ipa/metrics/outputs/warning-violations.json b/tools/spectral/ipa/metrics/outputs/warning-violations.json new file mode 100644 index 0000000000..46ccfe9b2a --- /dev/null +++ b/tools/spectral/ipa/metrics/outputs/warning-violations.json @@ -0,0 +1,8 @@ +[ + { + "code": "xgen-IPA-104-valid-operation-id", + "message": "IPA rule xgen-IPA-104-valid-operation-id violated", + "path": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get", + "source": null + } +] \ No newline at end of file From b5bc24ef091dbcad669b5794734019d76478aa37 Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 14:26:51 +0100 Subject: [PATCH 07/12] tag the oncall person to the slack message --- .github/scripts/handle_warning_violations.sh | 7 ++++--- .github/workflows/release-IPA-metrics.yml | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/scripts/handle_warning_violations.sh b/.github/scripts/handle_warning_violations.sh index 9bdd34dd93..aad762165f 100755 --- a/.github/scripts/handle_warning_violations.sh +++ b/.github/scripts/handle_warning_violations.sh @@ -6,7 +6,8 @@ TEAM_ID=$2 JIRA_API_TOKEN=$3 SLACK_BEARER_TOKEN=$4 SLACK_CHANNEL_ID=$5 -DRY_RUN=${6:-false} # Optional 6th parameter for dry run +ONCALL_USER=$6 +DRY_RUN=${7:-false} # Optional 7th parameter for dry run if [ "$WARNING_COUNT" -eq 0 ]; then echo "No warning violations found, skipping ticket creation" @@ -40,7 +41,7 @@ Total violations: $WARNING_COUNT" if [ "$(echo "$VIOLATION_DETAILS" | wc -l)" -gt 3 ]; then SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" fi - echo "Warning-level IPA violations found ($WARNING_COUNT violations). + echo "Warning-level IPA violations found ($WARNING_COUNT violations) ($ONCALL_USER). Jira ticket: [DRY RUN - no ticket created]" exit 0 @@ -93,7 +94,7 @@ if [ "$TICKET_KEY" != "null" ]; then fi # Send Slack notification with violation summary - SLACK_MESSAGE="Warning-level IPA violations found ($WARNING_COUNT violations). + SLACK_MESSAGE="Warning-level IPA violations found ($WARNING_COUNT violations) ($ONCALL_USER). Jira ticket: https://jira.mongodb.org/browse/$TICKET_KEY" diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index 45a03b042e..e50e3ff3a7 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -70,9 +70,10 @@ jobs: JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} SLACK_BEARER_TOKEN: ${{ secrets.SLACK_BEARER_TOKEN }} SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_PLATFORM_DEV }} + SLACK_ONCALL_USER: ${{ secrets.SLACK_APIX_PLATFORM_ONCALL_USER }} run: | chmod +x .github/scripts/handle_warning_violations.sh - .github/scripts/handle_warning_violations.sh "$WARNING_COUNT" "$TEAM_ID" "$JIRA_API_TOKEN" "$SLACK_BEARER_TOKEN" "$SLACK_CHANNEL_ID" + .github/scripts/handle_warning_violations.sh "$WARNING_COUNT" "$TEAM_ID" "$JIRA_API_TOKEN" "$SLACK_BEARER_TOKEN" "$SLACK_CHANNEL_ID" "$SLACK_ONCALL_USER" failure-handler: name: Failure Handler From 3442793f21da4bc27a080ece44095cadd43927d0 Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 14:28:37 +0100 Subject: [PATCH 08/12] tag the oncall person to the slack message --- .github/scripts/handle_warning_violations.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/handle_warning_violations.sh b/.github/scripts/handle_warning_violations.sh index aad762165f..2e0e2a1075 100755 --- a/.github/scripts/handle_warning_violations.sh +++ b/.github/scripts/handle_warning_violations.sh @@ -27,7 +27,7 @@ fi if [ "$DRY_RUN" = "true" ]; then echo "=== DRY RUN MODE ===" echo "Would create Jira ticket with:" - echo "Summary: Warning-level IPA violations found - $WARNING_COUNT violations" + echo "Summary: Warning-level IPA violations found" echo "Description:" echo "Warning-level violations were found during IPA validation. Please review and add exceptions if valid, or address false positives. @@ -71,7 +71,7 @@ TICKET_RESPONSE=$(curl -s -X POST -H "Authorization: Bearer $JIRA_API_TOKEN" \ -d "{ \"fields\": { \"project\": {\"key\": \"CLOUDP\"}, - \"summary\": \"Warning-level IPA violations found - $WARNING_COUNT violations\", + \"summary\": \"Warning-level IPA violations found\", \"description\": \"$DESCRIPTION\", \"issuetype\": {\"name\": \"Task\"}, \"assignee\": {\"id\": \"$TEAM_ID\"} From 953977c67c95bb8e9cb34e32bc4a3300439e9d0c Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 14:43:33 +0100 Subject: [PATCH 09/12] remove unneeded fields --- .../ipa/__tests__/metrics/metricCollection.test.js | 3 --- tools/spectral/ipa/metrics/metricCollection.js | 3 --- .../spectral/ipa/metrics/outputs/warning-violations.json | 8 -------- 3 files changed, 14 deletions(-) delete mode 100644 tools/spectral/ipa/metrics/outputs/warning-violations.json diff --git a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js index 754a82e389..d3de718b20 100644 --- a/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js +++ b/tools/spectral/ipa/__tests__/metrics/metricCollection.test.js @@ -45,9 +45,6 @@ describe('tools/spectral/ipa/metrics/metricCollection.js runMetricCollectionJob' const violations = [ { code: 'xgen-IPA-104-valid-operation-id', - message: 'IPA rule xgen-IPA-104-valid-operation-id violated', - path: 'paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get', - source: null, }, ]; expect(results.warnings.violations).toEqual(violations); diff --git a/tools/spectral/ipa/metrics/metricCollection.js b/tools/spectral/ipa/metrics/metricCollection.js index ef63a5dfbd..0a8466453b 100644 --- a/tools/spectral/ipa/metrics/metricCollection.js +++ b/tools/spectral/ipa/metrics/metricCollection.js @@ -38,9 +38,6 @@ export async function runMetricCollectionJob( const processedWarnings = warningViolations.map((violation) => ({ code: violation.ipa_rule, - message: `IPA rule ${violation.ipa_rule} violated`, - path: violation.component_id, - source: null, })); console.log(`Found ${warningViolations.length} warning-level violations`); diff --git a/tools/spectral/ipa/metrics/outputs/warning-violations.json b/tools/spectral/ipa/metrics/outputs/warning-violations.json deleted file mode 100644 index 46ccfe9b2a..0000000000 --- a/tools/spectral/ipa/metrics/outputs/warning-violations.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "code": "xgen-IPA-104-valid-operation-id", - "message": "IPA rule xgen-IPA-104-valid-operation-id violated", - "path": "paths./api/atlas/v2/federationSettings/{federationSettingsId}/connectedOrgConfigs/{orgId}.get", - "source": null - } -] \ No newline at end of file From 3406dbe74713d7a6b1a527564e55e7201e68178e Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 17:01:25 +0100 Subject: [PATCH 10/12] address the comments --- .github/scripts/handle_warning_violations.sh | 73 ++++++-------------- .github/workflows/release-IPA-metrics.yml | 5 +- 2 files changed, 24 insertions(+), 54 deletions(-) diff --git a/.github/scripts/handle_warning_violations.sh b/.github/scripts/handle_warning_violations.sh index 2e0e2a1075..b9ad4e7264 100755 --- a/.github/scripts/handle_warning_violations.sh +++ b/.github/scripts/handle_warning_violations.sh @@ -1,15 +1,7 @@ #!/bin/bash set -eou pipefail -WARNING_COUNT=$1 -TEAM_ID=$2 -JIRA_API_TOKEN=$3 -SLACK_BEARER_TOKEN=$4 -SLACK_CHANNEL_ID=$5 -ONCALL_USER=$6 -DRY_RUN=${7:-false} # Optional 7th parameter for dry run - -if [ "$WARNING_COUNT" -eq 0 ]; then +if [ "${WARNING_COUNT}" -eq 0 ]; then echo "No warning violations found, skipping ticket creation" exit 0 fi @@ -24,83 +16,62 @@ if [ -f "tools/spectral/ipa/metrics/outputs/warning-violations.json" ]; then ' tools/spectral/ipa/metrics/outputs/warning-violations.json) fi -if [ "$DRY_RUN" = "true" ]; then - echo "=== DRY RUN MODE ===" - echo "Would create Jira ticket with:" - echo "Summary: Warning-level IPA violations found" - echo "Description:" - echo "Warning-level violations were found during IPA validation. Please review and add exceptions if valid, or address false positives. - -Violation Summary: -$VIOLATION_DETAILS - -Total violations: $WARNING_COUNT" - echo "" - echo "Would send Slack message:" - SLACK_SUMMARY=$(echo "$VIOLATION_DETAILS" | head -3) - if [ "$(echo "$VIOLATION_DETAILS" | wc -l)" -gt 3 ]; then - SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" - fi - echo "Warning-level IPA violations found ($WARNING_COUNT violations) ($ONCALL_USER). - -Jira ticket: [DRY RUN - no ticket created]" - exit 0 -fi - # Check if warning ticket already exists -EXISTING_TICKET=$(curl -s -H "Authorization: Bearer $JIRA_API_TOKEN" \ +EXISTING_TICKET=$(curl -s -H "Authorization: Bearer ${JIRA_API_TOKEN}" \ "https://jira.mongodb.org/rest/api/2/search?jql=project=CLOUDP AND summary~'Warning-level IPA violations' AND status!=Done" \ | jq -r '.issues[0].key // empty') -if [ -n "$EXISTING_TICKET" ]; then - echo "Warning ticket already exists: $EXISTING_TICKET" +if [ -n "${EXISTING_TICKET}" ]; then + echo "Warning ticket already exists: ${EXISTING_TICKET}" exit 0 fi # Create detailed description DESCRIPTION="Warning-level violations were found during IPA validation. Please review and add exceptions if valid, or address false positives. +These warning-level checks are part of the rule rollout process. See the IPA Validation Technical Documentation for details: +https://wiki.corp.mongodb.com/spaces/MMS/pages/315003555/IPA+Validation+Technical+Documentation+Runbook#IPAValidationTechnicalDocumentation%26Runbook-RolloutofNewRule Violation Summary: -$VIOLATION_DETAILS +${VIOLATION_DETAILS} -Total violations: $WARNING_COUNT" +Total violations: ${WARNING_COUNT}" # Create new Jira ticket -TICKET_RESPONSE=$(curl -s -X POST -H "Authorization: Bearer $JIRA_API_TOKEN" \ +TICKET_RESPONSE=$(curl -s -X POST -H "Authorization: Bearer ${JIRA_API_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"fields\": { \"project\": {\"key\": \"CLOUDP\"}, \"summary\": \"Warning-level IPA violations found\", - \"description\": \"$DESCRIPTION\", + \"description\": \"${DESCRIPTION}\", \"issuetype\": {\"name\": \"Task\"}, - \"assignee\": {\"id\": \"$TEAM_ID\"} + \"assignee\": {\"id\": \"${TEAM_ID}\"} } }" \ "https://jira.mongodb.org/rest/api/2/issue/") -TICKET_KEY=$(echo "$TICKET_RESPONSE" | jq -r '.key') +TICKET_KEY=$(echo "${TICKET_RESPONSE}" | jq -r '.key') -if [ "$TICKET_KEY" != "null" ]; then - echo "Created Jira ticket: $TICKET_KEY" +if [ "${TICKET_KEY}" != "null" ]; then + echo "Created Jira ticket: ${TICKET_KEY}" # Create summary for Slack SLACK_SUMMARY="" - if [ -n "$VIOLATION_DETAILS" ]; then - SLACK_SUMMARY=$(echo "$VIOLATION_DETAILS" | head -3) - if [ "$(echo "$VIOLATION_DETAILS" | wc -l)" -gt 3 ]; then - SLACK_SUMMARY="$SLACK_SUMMARY\n... and more" + if [ -n "${VIOLATION_DETAILS}" ]; then + SLACK_SUMMARY=$(echo "${VIOLATION_DETAILS}" | head -3) + if [ "$(echo "${VIOLATION_DETAILS}" | wc -l)" -gt 3 ]; then + SLACK_SUMMARY="${SLACK_SUMMARY}\n... and more" fi fi # Send Slack notification with violation summary - SLACK_MESSAGE="Warning-level IPA violations found ($WARNING_COUNT violations) ($ONCALL_USER). + SLACK_MESSAGE="Warning-level IPA violations found (${WARNING_COUNT} violations) (${SLACK_ONCALL_USER}). -Jira ticket: https://jira.mongodb.org/browse/$TICKET_KEY" +Jira ticket: https://jira.mongodb.org/browse/${TICKET_KEY}" - curl -X POST -H "Authorization: Bearer $SLACK_BEARER_TOKEN" \ + curl -X POST -H "Authorization: Bearer ${SLACK_BEARER_TOKEN}" \ -H "Content-type: application/json" \ - --data "{\"channel\":\"$SLACK_CHANNEL_ID\",\"text\":\"$SLACK_MESSAGE\"}" \ + --data "{\"channel\":\"${SLACK_CHANNEL_ID}\",\"text\":\"${SLACK_MESSAGE}\"}" \ https://slack.com/api/chat.postMessage else echo "Failed to create Jira ticket" diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index e50e3ff3a7..f80af89fff 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -23,6 +23,7 @@ jobs: tools/spectral/ipa package.json package-lock.json + .github/scripts - name: Setup Node uses: actions/setup-node@v4 @@ -71,9 +72,7 @@ jobs: SLACK_BEARER_TOKEN: ${{ secrets.SLACK_BEARER_TOKEN }} SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_PLATFORM_DEV }} SLACK_ONCALL_USER: ${{ secrets.SLACK_APIX_PLATFORM_ONCALL_USER }} - run: | - chmod +x .github/scripts/handle_warning_violations.sh - .github/scripts/handle_warning_violations.sh "$WARNING_COUNT" "$TEAM_ID" "$JIRA_API_TOKEN" "$SLACK_BEARER_TOKEN" "$SLACK_CHANNEL_ID" "$SLACK_ONCALL_USER" + run: .github/scripts/handle_warning_violations.sh failure-handler: name: Failure Handler From aaa22021682c37c72a4819b78d68e03f2fddccbb Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Wed, 20 Aug 2025 17:11:24 +0100 Subject: [PATCH 11/12] comment out git workflow step --- .github/workflows/release-IPA-metrics.yml | 26 +++++++++-------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index f80af89fff..76b6654e9b 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -43,12 +43,6 @@ jobs: working-directory: tools/spectral/ipa/metrics/scripts run: | node runMetricCollection.js "${{ github.workspace }}/v2.json" - if [ -f "../outputs/warning-count.txt" ]; then - warning_count=$(cat "../outputs/warning-count.txt") - echo "warning_count=${warning_count}" >> "$GITHUB_OUTPUT" - else - echo "warning_count=0" >> "$GITHUB_OUTPUT" - fi - name: aws configure uses: aws-actions/configure-aws-credentials@v4 @@ -63,16 +57,16 @@ jobs: working-directory: tools/spectral/ipa/metrics/scripts run: node dataDump.js - - name: Handle Warning Violations - if: ${{ steps.metric-collection.outputs.warning_count > 0 }} - env: - WARNING_COUNT: ${{ steps.metric-collection.outputs.warning_count }} - TEAM_ID: ${{ vars.JIRA_TEAM_ID_APIX_PLATFORM }} - JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - SLACK_BEARER_TOKEN: ${{ secrets.SLACK_BEARER_TOKEN }} - SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_PLATFORM_DEV }} - SLACK_ONCALL_USER: ${{ secrets.SLACK_APIX_PLATFORM_ONCALL_USER }} - run: .github/scripts/handle_warning_violations.sh +# - name: Handle Warning Violations +# if: ${{ steps.metric-collection.outputs.warning_count > 0 }} +# env: +# WARNING_COUNT: ${{ steps.metric-collection.outputs.warning_count }} +# TEAM_ID: ${{ vars.JIRA_TEAM_ID_APIX_PLATFORM }} +# JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} +# SLACK_BEARER_TOKEN: ${{ secrets.SLACK_BEARER_TOKEN }} +# SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID_APIX_PLATFORM_DEV }} +# SLACK_ONCALL_USER: ${{ secrets.SLACK_APIX_PLATFORM_ONCALL_USER }} +# run: .github/scripts/handle_warning_violations.sh failure-handler: name: Failure Handler From 1697e77dd7579a291cd9fdb11d04270aac5cb8ad Mon Sep 17 00:00:00 2001 From: Yeliz Henden Date: Thu, 21 Aug 2025 10:50:12 +0100 Subject: [PATCH 12/12] enablement note --- .github/workflows/release-IPA-metrics.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-IPA-metrics.yml b/.github/workflows/release-IPA-metrics.yml index 76b6654e9b..b70648fe86 100644 --- a/.github/workflows/release-IPA-metrics.yml +++ b/.github/workflows/release-IPA-metrics.yml @@ -57,6 +57,7 @@ jobs: working-directory: tools/spectral/ipa/metrics/scripts run: node dataDump.js +# Enable this step in scope of CLOUDP-339852 # - name: Handle Warning Violations # if: ${{ steps.metric-collection.outputs.warning_count > 0 }} # env: