Add ManageEngine EndpointCentral plugin v1 for monitoring patches#75
Add ManageEngine EndpointCentral plugin v1 for monitoring patches#75PieOPah75 wants to merge 1 commit into
Conversation
📝 WalkthroughWalkthroughAdds Endpoint Central plugin metadata and OAuth2 UI inputs, defines shared patch data streams, and creates dashboard content for patch status, vulnerability, and reboot-required views. ChangesEndpoint Central content
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
There was a problem hiding this comment.
Actionable comments posted: 16
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@ManageEngine-EndpointCentral/dataStreams/endpointCentralAllPatches.json`:
- Line 4: The description for the endpointCentralAllPatches stream is copied
from All Systems and is incorrect for this patch feed. Update the JSON
description field in the endpointCentralAllPatches definition so it clearly
states that this stream lists patches from the allpatches endpoint, using the
stream’s existing name and endpoint context to locate it.
In `@ManageEngine-EndpointCentral/dataStreams/httprequestunscoped.json`:
- Line 3: The displayName in the unscoped HTTP request stream still uses
leftover Segment boilerplate and should be replaced with a name that matches
Endpoint Central and the stream’s purpose. Update the JSON entry for
httprequestunscoped to a descriptive, consistent label like the other
dataStreams so it clearly identifies an unscoped HTTP request instead of a
tenant query metric.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/patchStatus.dash.json:
- Around line 496-510: The metadata in the Breakdown chart is pointing at a
column name that the SQL does not return. Update the metadata in the patchStatus
dashboard config so it matches the actual query output from the Breakdown query
(`value` and `label`), or change the query to emit a numeric `critical_pct` that
the existing `shape` can target; use the `metadata` block and the Breakdown
query result shape as the reference points.
- Around line 433-443: The Moderate tile is wired to the wrong metric column, so
update the data-stream-scalar configuration for the Moderate visualisation to
reference the SQL-emitted field `percent_not_missing_moderate` instead of
`percent_not_missing_critical`. Use the `visualisation` block for the Moderate
tile in `patchStatus.dash.json` and verify the `value` property matches the
corresponding metric name produced by the query, just like the other severity
tiles.
- Around line 316-326: The Important tile is wired to the wrong data field: the
query for this section emits percent_not_missing_important, but the
data-stream-scalar config in the visualisation still references
percent_not_missing_critical. Update the visualisation value in the relevant
patchStatus tile configuration to match the emitted SQL column so the tile
renders the correct metric.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/patchVulnerabilty.dash.json:
- Around line 264-272: The “Moderately Vulnerable Systems” tile has mismatched
table configuration: `data-stream-table.columnOrder` is empty and
`resizedColumns` still refers to `Critical`, `Important`, and
`critical_patch_count` instead of the columns emitted by this tile’s SQL. Update
the `data-stream-table` config for this tile so `columnOrder` matches the actual
output columns from the relevant query and replace the stale width entries with
the correct `Moderate` and `Low` column keys (and any other real columns used by
this tile).
- Around line 619-620: The Healthy Systems tile description is incorrect because
it was copied from the reboot-related view. Update the description in the
affected dashboard JSON entry so it matches the Healthy Systems metric, and
verify the surrounding tile definition (the tile/data-stream object in
patchVulnerabilty.dash.json) uses wording specific to healthy machines rather
than reboot requirements.
- Around line 299-359: The “Systems Offline for 15+ Days” tile is using a 14-day
threshold in the configurableHttpRequestV2 filter, so the title and query are
inconsistent. Update the datemorethan value in the filter (or adjust the tile
title) so both the threshold and the title match, and verify the change in the
tile definition that contains the agent_last_contact_time condition.
- Line 490: The SQL used by the tile is not filtering the dataset, so it returns
all systems instead of only the intended subset. Update the query in the
patchVulnerabilty.dash.json tile definition, using the existing dataset1 select
pattern, to add the correct WHERE predicate for the “Deployment Failed” status
(and make sure the corresponding “Healthy Systems” tile uses a different
filter). Keep the current selected columns and ordering, but ensure the query is
tied to the title by filtering on the appropriate status field such as
deployment_status or resource_health_status.
- Line 2: The dashboard title is misspelled in the `name` field, so update
`Patch Vulnerabilty` to the correct user-facing spelling `Patch Vulnerability`;
also align the JSON asset name `patchVulnerabilty.dash.json` with the same
corrected spelling if this file is referenced elsewhere, using the `name` field
in this dashboard definition as the primary location to fix.
- Around line 165-171: The column casing is inconsistent in the dashboard
configuration, which can break exact-name matching with the SQL output. Update
the `columnOrder` entries that currently use `owner` in the affected dashboard
sections so they use `Owner` instead, matching the other views like `Highly
Vulnerable Systems`. Use the `columnOrder` arrays in the relevant JSON blocks as
the reference points and keep the column names consistent everywhere.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/rebootRequired.dash.json:
- Line 357: The tile title value is not following the dashboard naming contract
because the string in the title field is not title case. Update the title in the
relevant dashboard definition to use proper title casing, and verify the same
naming style is used consistently for any related tile labels or headings around
the dashboard content.
- Around line 94-96: The date format for agent_last_bootup_time is using the
wrong month token in rebootRequired.dash.json; update the existing format value
in the boot time widget to use dd/MM/yyyy instead of dd/mm/yyyy. Locate the
affected JSON entry by the agent_last_bootup_time field and correct the format
string so the dashboard renders the boot date with month, not minutes.
In `@ManageEngine-EndpointCentral/metadata.json`:
- Around line 1-44: The metadata manifest is missing the standard links section
for a community plugin. Update the metadata.json object to add a top-level links
block with both source and documentation entries, keeping the rest of the
manifest unchanged and matching the existing plugin metadata structure.
- Around line 5-8: The community metadata author name is using a human-readable
display name instead of the required GitHub username/org. Update the author.name
field in the metadata JSON to use Simon Argent’s GitHub username or organization
name, keeping the author object structure intact and matching the existing
community metadata convention.
- Around line 24-26: The OAuth client secret is currently configured to be sent
in the query string, which should be changed to a safer transport. Update the
metadata entry for oauth2ClientSecretLocationDuringAuth in
ManageEngine-EndpointCentral’s metadata configuration to use body or header
instead of query, keeping the existing oauth2ClientSecret and oauth2AuthUrl
fields intact.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: e096481e-05e3-4a65-a648-dd780b58b51f
⛔ Files ignored due to path filters (1)
ManageEngine-EndpointCentral/icon.pngis excluded by!**/*.png
📒 Files selected for processing (12)
ManageEngine-EndpointCentral/dataStreams/endpointCentralAllPatches.jsonManageEngine-EndpointCentral/dataStreams/endpointCentralAllSystems.jsonManageEngine-EndpointCentral/dataStreams/endpointCentralPatchSummary.jsonManageEngine-EndpointCentral/dataStreams/httprequestunscoped.jsonManageEngine-EndpointCentral/defaultContent/Endpoint Central/manifest.jsonManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchStatus.dash.jsonManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchVulnerabilty.dash.jsonManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.jsonManageEngine-EndpointCentral/defaultContent/manifest.jsonManageEngine-EndpointCentral/defaultContent/scopes.jsonManageEngine-EndpointCentral/metadata.jsonManageEngine-EndpointCentral/ui.json
| { | ||
| "name": "endpointCentralAllPatches", | ||
| "displayName": "Endpoint Central - All Patches", | ||
| "description": "Lists all the systems and their patch status.", |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Incorrect description (copied from All Systems).
This stream lists patches (/api/1.4/patch/allpatches), but the description says it lists systems.
✏️ Suggested fix
- "description": "Lists all the systems and their patch status.",
+ "description": "Lists all patches and their deployment status.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "description": "Lists all the systems and their patch status.", | |
| "description": "Lists all patches and their deployment status.", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/dataStreams/endpointCentralAllPatches.json` at
line 4, The description for the endpointCentralAllPatches stream is copied from
All Systems and is incorrect for this patch feed. Update the JSON description
field in the endpointCentralAllPatches definition so it clearly states that this
stream lists patches from the allpatches endpoint, using the stream’s existing
name and endpoint context to locate it.
| "visualisation": { | ||
| "type": "data-stream-scalar", | ||
| "config": { | ||
| "data-stream-scalar": { | ||
| "comparisonColumn": "none", | ||
| "label": "Important", | ||
| "value": "percent_not_missing_critical", | ||
| "labelPosition": "top", | ||
| "formatted": true | ||
| } | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win
Bug: "Important" tile renders the wrong (missing) column.
The SQL for this tile produces only percent_not_missing_important (Line 255), but the visualisation value points at percent_not_missing_critical, which this query does not emit. The tile will show no/empty value.
🐛 Proposed fix
- "value": "percent_not_missing_critical",
+ "value": "percent_not_missing_important",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "visualisation": { | |
| "type": "data-stream-scalar", | |
| "config": { | |
| "data-stream-scalar": { | |
| "comparisonColumn": "none", | |
| "label": "Important", | |
| "value": "percent_not_missing_critical", | |
| "labelPosition": "top", | |
| "formatted": true | |
| } | |
| } | |
| "visualisation": { | |
| "type": "data-stream-scalar", | |
| "config": { | |
| "data-stream-scalar": { | |
| "comparisonColumn": "none", | |
| "label": "Important", | |
| "value": "percent_not_missing_important", | |
| "labelPosition": "top", | |
| "formatted": true | |
| } | |
| } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/patchStatus.dash.json around lines 316 - 326, The Important tile is
wired to the wrong data field: the query for this section emits
percent_not_missing_important, but the data-stream-scalar config in the
visualisation still references percent_not_missing_critical. Update the
visualisation value in the relevant patchStatus tile configuration to match the
emitted SQL column so the tile renders the correct metric.
| "visualisation": { | ||
| "type": "data-stream-scalar", | ||
| "config": { | ||
| "data-stream-scalar": { | ||
| "comparisonColumn": "none", | ||
| "label": "Moderate", | ||
| "value": "percent_not_missing_critical", | ||
| "labelPosition": "top", | ||
| "formatted": true | ||
| } | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win
Bug: "Moderate" tile renders the wrong (missing) column.
Same issue as the Important tile. The SQL emits percent_not_missing_moderate (Line 372), but value references percent_not_missing_critical.
🐛 Proposed fix
- "value": "percent_not_missing_critical",
+ "value": "percent_not_missing_moderate",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "visualisation": { | |
| "type": "data-stream-scalar", | |
| "config": { | |
| "data-stream-scalar": { | |
| "comparisonColumn": "none", | |
| "label": "Moderate", | |
| "value": "percent_not_missing_critical", | |
| "labelPosition": "top", | |
| "formatted": true | |
| } | |
| } | |
| "visualisation": { | |
| "type": "data-stream-scalar", | |
| "config": { | |
| "data-stream-scalar": { | |
| "comparisonColumn": "none", | |
| "label": "Moderate", | |
| "value": "percent_not_missing_moderate", | |
| "labelPosition": "top", | |
| "formatted": true | |
| } | |
| } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/patchStatus.dash.json around lines 433 - 443, The Moderate tile is wired
to the wrong metric column, so update the data-stream-scalar configuration for
the Moderate visualisation to reference the SQL-emitted field
`percent_not_missing_moderate` instead of `percent_not_missing_critical`. Use
the `visualisation` block for the Moderate tile in `patchStatus.dash.json` and
verify the `value` property matches the corresponding metric name produced by
the query, just like the other severity tiles.
| "metadata": [ | ||
| { | ||
| "shape": [ | ||
| "percent", | ||
| { | ||
| "decimalPlaces": 2, | ||
| "asZeroToOne": false | ||
| } | ||
| ], | ||
| "name": "critical_pct" | ||
| }, | ||
| { | ||
| "pattern": ".*" | ||
| } | ||
| ], |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Metadata references a column the SQL never produces.
The Breakdown query outputs only value (a formatted % string) and label, but the metadata declares "name": "critical_pct" with a percent shape. This shaping won't apply to any output column. Declare metadata for value/label (note value is a string from printf, not a numeric percent), or change the SQL to emit a numeric critical_pct.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/patchStatus.dash.json around lines 496 - 510, The metadata in the
Breakdown chart is pointing at a column name that the SQL does not return.
Update the metadata in the patchStatus dashboard config so it matches the actual
query output from the Breakdown query (`value` and `label`), or change the query
to emit a numeric `critical_pct` that the existing `shape` can target; use the
`metadata` block and the Breakdown query result shape as the reference points.
| "format": "dd/mm/yyyy", | ||
| "timeZone": "Etc/UTC" | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check date-format token usage in dashboard files to find canonical casing in this repo.
fd -e json ".dash" ManageEngine-EndpointCentral/defaultContent \
| xargs rg -n --no-heading '"format"\s*:\s*"[^"]+"|"shape"\s*:\s*\[\s*"date"'Repository: squaredup/plugins
Length of output: 657
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Top-level relevant files:\n'
git ls-files 'ManageEngine-EndpointCentral/defaultContent/**.dash.json' | sed -n '1,20p'
printf '\nDate-format usages in Endpoint Central dashboards:\n'
rg -n --no-heading '"format"\s*:\s*"[^"]+"' ManageEngine-EndpointCentral/defaultContent/Endpoint\ Central/*.dash.json
printf '\nagent_last_bootup_time context:\n'
rg -n --no-heading -A3 -B3 'agent_last_bootup_time|dd/mm/yyyy|dd/MM/yyyy|mm/dd/yyyy' ManageEngine-EndpointCentral/defaultContent/Endpoint\ Central/*.dash.jsonRepository: squaredup/plugins
Length of output: 9116
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the target file with exact path handling.
FILE='ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json'
printf 'File exists: '; test -f "$FILE" && echo yes || echo no
printf 'Line count: '; wc -l < "$FILE"
printf '\nRelevant excerpt:\n'
sed -n '80,110p' "$FILE"
printf '\nAll date formats in nearby dashboard files:\n'
for f in 'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchStatus.dash.json' \
'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchVulnerabilty.dash.json' \
'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json'; do
echo "--- $f"
rg -n --no-heading '"format"\s*:\s*"[^"]+"' "$f" || true
doneRepository: squaredup/plugins
Length of output: 1968
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Top-level relevant files:\n'
git ls-files 'ManageEngine-EndpointCentral/defaultContent/**.dash.json' | sed -n '1,20p'
printf '\nDate-format usages in Endpoint Central dashboards:\n'
rg -n --no-heading '"format"\s*:\s*"[^"]+"' 'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/'*.dash.json
printf '\nagent_last_bootup_time context:\n'
rg -n --no-heading -A3 -B3 'agent_last_bootup_time|dd/mm/yyyy|dd/MM/yyyy|mm/dd/yyyy' 'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/'*.dash.jsonRepository: squaredup/plugins
Length of output: 9116
🏁 Script executed:
#!/bin/bash
set -euo pipefail
FILE='ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json'
printf 'File exists: '; test -f "$FILE" && echo yes || echo no
printf 'Line count: '; wc -l < "$FILE"
printf '\nRelevant excerpt:\n'
sed -n '80,110p' "$FILE"
printf '\nAll date formats in nearby dashboard files:\n'
for f in 'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchStatus.dash.json' \
'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchVulnerabilty.dash.json' \
'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json'; do
echo "--- $f"
rg -n --no-heading '"format"\s*:\s*"[^"]+"' "$f" || true
doneRepository: squaredup/plugins
Length of output: 1968
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Date format tokens across repository:\n'
rg -n --no-heading '"format"\s*:\s*"(?:[^"]*yyyy[^"]*|[^"]*MM[^"]*|[^"]*mm[^"]*)"' .
printf '\nCanonical-looking date formats (MM vs mm):\n'
rg -n --no-heading '"format"\s*:\s*"[^"]*(dd/MM/yyyy|dd/mm/yyyy|MM/dd/yyyy|yyyy-MM-dd|dd-MM-yyyy)[^"]*"' .Repository: squaredup/plugins
Length of output: 1753
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Repo-wide date-format examples:\n'
rg -n --no-heading '"format"\s*:\s*"[^"]+"' . \
| rg 'dd/MM/yyyy|dd/mm/yyyy|MM/dd/yyyy|mm/dd/yyyy|yyyy-MM-dd|dd-MM-yyyy|YYYY' || true
printf '\nManageEngine Endpoint Central date-related fields:\n'
rg -n --no-heading -A2 -B2 'agent_last_bootup_time|last_patched_time|format' 'ManageEngine-EndpointCentral/defaultContent/Endpoint Central/'*.dash.jsonRepository: squaredup/plugins
Length of output: 12958
Use dd/MM/yyyy for agent_last_bootup_time. Lowercase mm is minutes, not month, so update ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json:94 to dd/MM/yyyy.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/rebootRequired.dash.json around lines 94 - 96, The date format for
agent_last_bootup_time is using the wrong month token in
rebootRequired.dash.json; update the existing format value in the boot time
widget to use dd/MM/yyyy instead of dd/mm/yyyy. Locate the affected JSON entry
by the agent_last_bootup_time field and correct the format string so the
dashboard renders the boot date with month, not minutes.
| "activePluginConfigIds": [ | ||
| "{{configId}}" | ||
| ], | ||
| "title": "Windows Laptops >7Days", |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use title case for the tile name.
"Windows Laptops >7Days" is not title case per the dashboard naming contract.
Suggested fix
- "title": "Windows Laptops >7Days",
+ "title": "Windows Laptops > 7 Days",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "title": "Windows Laptops >7Days", | |
| "title": "Windows Laptops > 7 Days", |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/defaultContent/Endpoint`
Central/rebootRequired.dash.json at line 357, The tile title value is not
following the dashboard naming contract because the string in the title field is
not title case. Update the title in the relevant dashboard definition to use
proper title casing, and verify the same naming style is used consistently for
any related tile labels or headings around the dashboard content.
| { | ||
| "name": "endpoint-central", | ||
| "displayName": "Endpoint Central", | ||
| "version": "1.0.0", | ||
| "author": { | ||
| "name": "Simon Argent", | ||
| "type": "community" | ||
| }, | ||
| "description": "Provides summaries for patch module like health status summary, scan summary etc.", | ||
| "category": "Monitoring", | ||
| "type": "hybrid", | ||
| "schemaVersion": "2.0", | ||
| "base": { | ||
| "plugin": "WebAPI", | ||
| "majorVersion": "1", | ||
| "config": { | ||
| "queryArgs": [ | ||
| { | ||
| "value": "300", | ||
| "key": "pagelimit" | ||
| } | ||
| ], | ||
| "oauth2TokenExtraArgs": [], | ||
| "oauth2ClientSecret": "{{clientsecret}}", | ||
| "oauth2ClientSecretLocationDuringAuth": "query", | ||
| "oauth2AuthUrl": "https://accounts.zoho.eu/oauth/v2/auth", | ||
| "oauth2TokenExtraHeaders": [], | ||
| "oauth2AuthExtraArgs": [ | ||
| { | ||
| "value": "offline", | ||
| "key": "access_type" | ||
| } | ||
| ], | ||
| "ignoreCertificateErrors": false, | ||
| "oauth2SendTokenInParameters": false, | ||
| "headers": [], | ||
| "authMode": "oauth2", | ||
| "oauth2GrantType": "authCode", | ||
| "baseUrl": "https://endpointcentral.manageengine.eu", | ||
| "oauth2TokenUrl": "https://accounts.zoho.eu/oauth/v2/token", | ||
| "oauth2ClientId": "{{clientid}}", | ||
| "oauth2Scope": "DesktopCentralCloud.PatchMgmt.READ" | ||
| } | ||
| } |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add the standard links block.
This manifest omits the source/documentation links expected for community plugin metadata. As per coding guidelines, include source and documentation links in links.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/metadata.json` around lines 1 - 44, The metadata
manifest is missing the standard links section for a community plugin. Update
the metadata.json object to add a top-level links block with both source and
documentation entries, keeping the rest of the manifest unchanged and matching
the existing plugin metadata structure.
Source: Coding guidelines
| "author": { | ||
| "name": "Simon Argent", | ||
| "type": "community" | ||
| }, |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use a GitHub username/org for author.name.
Simon Argent doesn't match the repo convention for community metadata. As per coding guidelines, author.name should be a GitHub username or organization.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ManageEngine-EndpointCentral/metadata.json` around lines 5 - 8, The community
metadata author name is using a human-readable display name instead of the
required GitHub username/org. Update the author.name field in the metadata JSON
to use Simon Argent’s GitHub username or organization name, keeping the author
object structure intact and matching the existing community metadata convention.
Source: Coding guidelines
clarkd
left a comment
There was a problem hiding this comment.
The biggest issue here is the dashboards using Web API data streams directly - see comments.
| @@ -0,0 +1,23 @@ | |||
| { | |||
| "name": "endpointCentralPatchSummary", | |||
| "displayName": "Endpoint Central - Patch Summary", | |||
There was a problem hiding this comment.
I would remove 'Endpoint Central - ' from all the data stream names - we don't need to repeat the plugin name for each one.
| @@ -0,0 +1,654 @@ | |||
| { | |||
| "name": "Patch Vulnerabilty", | |||
| "{{configId}}" | ||
| ], | ||
| "dataStream": { | ||
| "name": "configurableHttpRequestV2", |
There was a problem hiding this comment.
Unfortunately most of these dashboards use the Web API data streams directly - rather than using a saved data stream. You'll need to update these to use a saved data stream prior to exporting.
| { | ||
| "type": "password", | ||
| "name": "clientsecret", | ||
| "label": "Client Secret", |
There was a problem hiding this comment.
| "label": "Client Secret", | |
| "label": "Client secret", |
🔌 Plugin overview
🖼️ Plugin screenshots
Plugin configuration
Default dashboards
🧪 Testing
📚 Checklist
Summary by CodeRabbit