Skip to content

Add ManageEngine EndpointCentral plugin v1 for monitoring patches#75

Open
PieOPah75 wants to merge 1 commit into
squaredup:mainfrom
PieOPah75:add-ManageEngine-plugin
Open

Add ManageEngine EndpointCentral plugin v1 for monitoring patches#75
PieOPah75 wants to merge 1 commit into
squaredup:mainfrom
PieOPah75:add-ManageEngine-plugin

Conversation

@PieOPah75

@PieOPah75 PieOPah75 commented Jun 25, 2026

Copy link
Copy Markdown

🔌 Plugin overview

  • Plugin name: Endpoint Central
  • Purpose / problem solved: Easilly view the status of patch deployment and laptop status
  • Primary audience (e.g. platform teams, SREs, product teams): Patch Management Teams
  • Authentication method(s) (e.g. OAuth, Username/Password, API Key): OAuth

🖼️ Plugin screenshots

Plugin configuration

image

Default dashboards

image image image

🧪 Testing


⚠️ Known limitations


📚 Checklist

  • Plugin, datastream and UI naming follow SquaredUp guidelines
  • Logo added
  • One or more dashboards added
  • README added including configuration guidance
  • No secrets or credentials included
  • I agree to the Code of Conduct

Summary by CodeRabbit

  • New Features
    • Added new Endpoint Central dashboards for patch status, patch vulnerability, and reboot-required systems.
    • Introduced patch summary and “all patches” views, including top missing patches and severity breakdowns.
    • Added a tenant-level query view and new sign-in/setup fields for connecting the plugin.
    • Included Endpoint Central plugin metadata and navigation structure for the new content.

@PieOPah75 PieOPah75 requested a review from a team June 25, 2026 11:01
@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds 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.

Changes

Endpoint Central content

Layer / File(s) Summary
Plugin setup and content shell
ManageEngine-EndpointCentral/metadata.json, ManageEngine-EndpointCentral/ui.json, ManageEngine-EndpointCentral/defaultContent/manifest.json, ManageEngine-EndpointCentral/defaultContent/scopes.json
Defines plugin metadata and OAuth2 UI inputs, adds the top-level Endpoint Central folder manifest, and clears configured scopes.
Shared patch data streams
ManageEngine-EndpointCentral/dataStreams/httprequestunscoped.json, ManageEngine-EndpointCentral/dataStreams/endpointCentralAllSystems.json, ManageEngine-EndpointCentral/dataStreams/endpointCentralPatchSummary.json, ManageEngine-EndpointCentral/dataStreams/endpointCentralAllPatches.json
Adds reusable HTTP data streams for unscoped requests, all systems, patch summary, and all patches, including response paths, paging, and field metadata.
Patch Status dashboard
ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchStatus.dash.json
Creates the Patch Status dashboard with summary, KPI, breakdown, severity donut, and top-missing-patches tiles wired to the new patch data streams.
Patch Vulnerabilty dashboard
ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchVulnerabilty.dash.json
Creates the Patch Vulnerabilty dashboard with six table tiles covering vulnerable, unknown, offline, deployment failed, and healthy system views.
Reboot Required dashboard
ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json
Creates the Reboot Required dashboard with three table tiles for Windows servers and laptops filtered by reboot-required status.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the PR’s main change: adding a new Endpoint Central plugin for patch monitoring.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The PR description is well structured with overview, screenshots, testing, limitations, and checklist, and only minor fields remain unfilled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 9b65fc5 and 5575827.

⛔ Files ignored due to path filters (1)
  • ManageEngine-EndpointCentral/icon.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • ManageEngine-EndpointCentral/dataStreams/endpointCentralAllPatches.json
  • ManageEngine-EndpointCentral/dataStreams/endpointCentralAllSystems.json
  • ManageEngine-EndpointCentral/dataStreams/endpointCentralPatchSummary.json
  • ManageEngine-EndpointCentral/dataStreams/httprequestunscoped.json
  • ManageEngine-EndpointCentral/defaultContent/Endpoint Central/manifest.json
  • ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchStatus.dash.json
  • ManageEngine-EndpointCentral/defaultContent/Endpoint Central/patchVulnerabilty.dash.json
  • ManageEngine-EndpointCentral/defaultContent/Endpoint Central/rebootRequired.dash.json
  • ManageEngine-EndpointCentral/defaultContent/manifest.json
  • ManageEngine-EndpointCentral/defaultContent/scopes.json
  • ManageEngine-EndpointCentral/metadata.json
  • ManageEngine-EndpointCentral/ui.json

{
"name": "endpointCentralAllPatches",
"displayName": "Endpoint Central - All Patches",
"description": "Lists all the systems and their patch status.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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.

Suggested change
"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.

Comment thread ManageEngine-EndpointCentral/dataStreams/httprequestunscoped.json
Comment on lines +316 to +326
"visualisation": {
"type": "data-stream-scalar",
"config": {
"data-stream-scalar": {
"comparisonColumn": "none",
"label": "Important",
"value": "percent_not_missing_critical",
"labelPosition": "top",
"formatted": true
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
"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.

Comment on lines +433 to +443
"visualisation": {
"type": "data-stream-scalar",
"config": {
"data-stream-scalar": {
"comparisonColumn": "none",
"label": "Moderate",
"value": "percent_not_missing_critical",
"labelPosition": "top",
"formatted": true
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
"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.

Comment on lines +496 to +510
"metadata": [
{
"shape": [
"percent",
{
"decimalPlaces": 2,
"asZeroToOne": false
}
],
"name": "critical_pct"
},
{
"pattern": ".*"
}
],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Comment on lines +94 to +96
"format": "dd/mm/yyyy",
"timeZone": "Etc/UTC"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.json

Repository: 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
done

Repository: 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.json

Repository: 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
done

Repository: 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.json

Repository: 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",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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.

Suggested change
"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.

Comment on lines +1 to +44
{
"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"
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment on lines +5 to +8
"author": {
"name": "Simon Argent",
"type": "community"
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 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

Comment thread ManageEngine-EndpointCentral/metadata.json

@clarkd clarkd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove 'Endpoint Central - ' from all the data stream names - we don't need to repeat the plugin name for each one.

Comment thread ManageEngine-EndpointCentral/dataStreams/httprequestunscoped.json
@@ -0,0 +1,654 @@
{
"name": "Patch Vulnerabilty",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same for the filename

"{{configId}}"
],
"dataStream": {
"name": "configurableHttpRequestV2",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread ManageEngine-EndpointCentral/metadata.json
{
"type": "password",
"name": "clientsecret",
"label": "Client Secret",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"label": "Client Secret",
"label": "Client secret",

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants