diff --git a/plugins/NinjaOne/v1/cspell.json b/plugins/NinjaOne/v1/cspell.json new file mode 100644 index 0000000..1cdfbf4 --- /dev/null +++ b/plugins/NinjaOne/v1/cspell.json @@ -0,0 +1,3 @@ +{ + "words": ["ninjarmm", "ninjaone", "bitlocker", "antivirus", "vulnerability", "vulnerabilities", "quarantined", "quarantinedthreatscount", "loggedin", "submask"] +} diff --git a/plugins/NinjaOne/v1/custom_types.json b/plugins/NinjaOne/v1/custom_types.json new file mode 100644 index 0000000..b541981 --- /dev/null +++ b/plugins/NinjaOne/v1/custom_types.json @@ -0,0 +1,23 @@ +[ + { + "name": "NinjaOne Organization", + "sourceType": "NinjaOne", + "icon": "building", + "singular": "Organization", + "plural": "Organizations" + }, + { + "name": "NinjaOne Device", + "sourceType": "NinjaOne", + "icon": "desktop", + "singular": "Device", + "plural": "Devices" + }, + { + "name": "NinjaOne Ticket Board", + "sourceType": "NinjaOne", + "icon": "kanban", + "singular": "Ticket Board", + "plural": "Ticket Boards" + } +] diff --git a/plugins/NinjaOne/v1/dataStreams/activities.json b/plugins/NinjaOne/v1/dataStreams/activities.json new file mode 100644 index 0000000..7330b82 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/activities.json @@ -0,0 +1,30 @@ +{ + "name": "activities", + "displayName": "Activities", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/activities", + "pathToData": "activities", + "getArgs": [], + "headers": [] + }, + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/alerts.json b/plugins/NinjaOne/v1/dataStreams/alerts.json new file mode 100644 index 0000000..56a3c51 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/alerts.json @@ -0,0 +1,30 @@ +{ + "name": "alerts", + "displayName": "Alerts", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/alerts", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/antivirusStatus.json b/plugins/NinjaOne/v1/dataStreams/antivirusStatus.json new file mode 100644 index 0000000..9e2f066 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/antivirusStatus.json @@ -0,0 +1,84 @@ +{ + "name": "antivirusStatus", + "displayName": "Antivirus Status", + "description": "Antivirus product status and definition updates", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/antivirus-status", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "productState", + "displayName": "Product State", + "shape": [ + "state", + { + "map": { + "error": ["disabled", "off"], + "warning": ["partial"], + "success": ["enabled", "on"], + "unknown": [] + } + } + ] + }, + { + "name": "productName", + "displayName": "Product Name", + "shape": "string", + "role": "label" + }, + { + "name": "definitionStatus", + "displayName": "Definition Status", + "shape": "string" + }, + { + "name": "version", + "displayName": "Version", + "shape": "string" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "timestamp", + "displayName": "Last Updated", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/antivirusThreats.json b/plugins/NinjaOne/v1/dataStreams/antivirusThreats.json new file mode 100644 index 0000000..3bf8518 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/antivirusThreats.json @@ -0,0 +1,100 @@ +{ + "name": "antivirusThreats", + "displayName": "Antivirus Threats", + "description": "Detected antivirus threats with quarantine status", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/antivirus-threats", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["active", "detected"], + "warning": ["quarantined", "remediation_failed"], + "success": ["removed", "cleaned"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Threat Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "visible": false + }, + { + "name": "severity", + "displayName": "Severity", + "shape": "string" + }, + { + "name": "category", + "displayName": "Category", + "shape": "string" + }, + { + "name": "path", + "displayName": "File Path", + "shape": "string" + }, + { + "name": "detectedAt", + "displayName": "Detected At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "actionTaken", + "displayName": "Action Taken", + "shape": "string" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/backupUsage.json b/plugins/NinjaOne/v1/dataStreams/backupUsage.json new file mode 100644 index 0000000..993efe1 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/backupUsage.json @@ -0,0 +1,99 @@ +{ + "name": "backupUsage", + "displayName": "Backup Usage", + "description": "Backup storage usage by organization and location", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/backup/usage", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "organizationName", + "displayName": "Organization", + "shape": "string", + "role": "label" + }, + { + "name": "locationId", + "displayName": "Location ID", + "shape": "string" + }, + { + "name": "locationName", + "displayName": "Location", + "shape": "string" + }, + { + "name": "usedBytes", + "displayName": "Used (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "includedBytes", + "displayName": "Included (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "overageBytes", + "displayName": "Overage (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "deviceCount", + "displayName": "Device Count", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/computerSystems.json b/plugins/NinjaOne/v1/dataStreams/computerSystems.json new file mode 100644 index 0000000..1f3a618 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/computerSystems.json @@ -0,0 +1,84 @@ +{ + "name": "computerSystems", + "displayName": "Computer Systems", + "description": "Hardware information including manufacturer, model, and serial number", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/computer-systems", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "manufacturer", + "displayName": "Manufacturer", + "shape": "string", + "role": "label" + }, + { + "name": "model", + "displayName": "Model", + "shape": "string" + }, + { + "name": "serialNumber", + "displayName": "Serial Number", + "shape": "string" + }, + { + "name": "systemType", + "displayName": "System Type", + "shape": "string" + }, + { + "name": "totalPhysicalMemory", + "displayName": "Total Memory (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "domain", + "displayName": "Domain", + "shape": "string" + }, + { + "name": "workgroup", + "displayName": "Workgroup", + "shape": "string" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/deviceGroups.json b/plugins/NinjaOne/v1/dataStreams/deviceGroups.json new file mode 100644 index 0000000..3a59f43 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/deviceGroups.json @@ -0,0 +1,74 @@ +{ + "name": "deviceGroups", + "displayName": "Device Groups", + "description": "Device groups for filtering and organization", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/groups", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "name", + "displayName": "Group Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Group ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "type", + "displayName": "Type", + "shape": "string" + }, + { + "name": "deviceCount", + "displayName": "Device Count", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "isDynamic", + "displayName": "Dynamic", + "shape": "boolean" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/deviceHealth.json b/plugins/NinjaOne/v1/dataStreams/deviceHealth.json new file mode 100644 index 0000000..3cd776f --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/deviceHealth.json @@ -0,0 +1,173 @@ +{ + "name": "deviceHealth", + "displayName": "Device Health", + "description": "Device health overview including threats, patches, and vulnerabilities", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/device-health", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "healthStatus", + "displayName": "Health Status", + "shape": [ + "state", + { + "map": { + "error": ["critical", "unhealthy"], + "warning": ["warning", "attention"], + "success": ["healthy", "good"], + "unknown": [] + } + } + ] + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "activeThreatsCount", + "displayName": "Active Threats", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "quarantinedThreatsCount", + "displayName": "Quarantined Threats", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "failedOSPatchesCount", + "displayName": "Failed OS Patches", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "pendingOSPatchesCount", + "displayName": "Pending OS Patches", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "alertCount", + "displayName": "Alert Count", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "failedSoftwarePatchesCount", + "displayName": "Failed Software Patches", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "pendingSoftwarePatchesCount", + "displayName": "Pending Software Patches", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "criticalVulnerabilityCount", + "displayName": "Critical Vulnerabilities", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "highVulnerabilityCount", + "displayName": "High Vulnerabilities", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "mediumVulnerabilityCount", + "displayName": "Medium Vulnerabilities", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "lowVulnerabilityCount", + "displayName": "Low Vulnerabilities", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "offline", + "displayName": "Offline", + "shape": "boolean" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/devices.json b/plugins/NinjaOne/v1/dataStreams/devices.json new file mode 100644 index 0000000..7bc1209 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/devices.json @@ -0,0 +1,33 @@ +{ + "name": "devices", + "displayName": "Devices", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "/v2/devices", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "matches": "none", + "rowPath": [], + "metadata": [], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} \ No newline at end of file diff --git a/plugins/NinjaOne/v1/dataStreams/disks.json b/plugins/NinjaOne/v1/dataStreams/disks.json new file mode 100644 index 0000000..e7e91dd --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/disks.json @@ -0,0 +1,109 @@ +{ + "name": "disks", + "displayName": "Disks", + "description": "Physical disk inventory with SMART status", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/disks", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["error", "failed", "pred fail"], + "success": ["ok"], + "warning": ["warning"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Disk Name", + "shape": "string", + "role": "label" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "model", + "displayName": "Model", + "shape": "string" + }, + { + "name": "manufacturer", + "displayName": "Manufacturer", + "shape": "string" + }, + { + "name": "mediaType", + "displayName": "Media Type", + "shape": "string" + }, + { + "name": "size", + "displayName": "Size (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "interfaceType", + "displayName": "Interface", + "shape": "string" + }, + { + "name": "smartCapable", + "displayName": "SMART Capable", + "shape": "boolean" + }, + { + "name": "partitionCount", + "displayName": "Partition Count", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/jobs.json b/plugins/NinjaOne/v1/dataStreams/jobs.json new file mode 100644 index 0000000..52f0128 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/jobs.json @@ -0,0 +1,109 @@ +{ + "name": "jobs", + "displayName": "Jobs", + "description": "Script and patch job execution status", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/jobs", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["failed", "error"], + "warning": ["running", "in_progress", "pending"], + "success": ["completed", "success"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Job Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Job ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "type", + "displayName": "Type", + "shape": "string" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string" + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "startedAt", + "displayName": "Started At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "completedAt", + "displayName": "Completed At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "duration", + "displayName": "Duration (seconds)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/locations.json b/plugins/NinjaOne/v1/dataStreams/locations.json new file mode 100644 index 0000000..be46184 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/locations.json @@ -0,0 +1,84 @@ +{ + "name": "locations", + "displayName": "Locations", + "description": "Organization locations and sites", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/locations", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "name", + "displayName": "Location Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Location ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "organizationName", + "displayName": "Organization", + "shape": "string" + }, + { + "name": "description", + "displayName": "Description", + "shape": "string" + }, + { + "name": "address", + "displayName": "Address", + "shape": "string" + }, + { + "name": "city", + "displayName": "City", + "shape": "string" + }, + { + "name": "country", + "displayName": "Country", + "shape": "string" + }, + { + "name": "timezone", + "displayName": "Timezone", + "shape": "string" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/loggedOnUsers.json b/plugins/NinjaOne/v1/dataStreams/loggedOnUsers.json new file mode 100644 index 0000000..ba0392b --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/loggedOnUsers.json @@ -0,0 +1,59 @@ +{ + "name": "loggedOnUsers", + "displayName": "Logged On Users", + "description": "Last logged-on user activity", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/logged-on-users", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "userName", + "displayName": "User Name", + "shape": "string", + "role": "label" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "logonTime", + "displayName": "Logon Time", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/networkInterfaces.json b/plugins/NinjaOne/v1/dataStreams/networkInterfaces.json new file mode 100644 index 0000000..bab63ab --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/networkInterfaces.json @@ -0,0 +1,114 @@ +{ + "name": "networkInterfaces", + "displayName": "Network Interfaces", + "description": "Network adapters with IP, MAC, and link speed", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/network-interfaces", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["down", "disabled"], + "success": ["up", "connected"], + "warning": ["degraded"], + "unknown": [] + } + } + ] + }, + { + "name": "interfaceName", + "displayName": "Interface Name", + "shape": "string", + "role": "label" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "adapterName", + "displayName": "Adapter Name", + "shape": "string" + }, + { + "name": "ipAddress", + "displayName": "IP Address", + "shape": "string" + }, + { + "name": "macAddress", + "displayName": "MAC Address", + "shape": "string" + }, + { + "name": "subnetMask", + "displayName": "Subnet Mask", + "shape": "string" + }, + { + "name": "defaultGateway", + "displayName": "Default Gateway", + "shape": "string" + }, + { + "name": "linkSpeed", + "displayName": "Link Speed", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "interfaceType", + "displayName": "Interface Type", + "shape": "string" + }, + { + "name": "mtu", + "displayName": "MTU", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/operatingSystems.json b/plugins/NinjaOne/v1/dataStreams/operatingSystems.json new file mode 100644 index 0000000..dfd0f0d --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/operatingSystems.json @@ -0,0 +1,94 @@ +{ + "name": "operatingSystems", + "displayName": "Operating Systems", + "description": "OS details with reboot requirements", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/operating-systems", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "needsReboot", + "displayName": "Needs Reboot", + "shape": [ + "state", + { + "map": { + "error": ["true"], + "success": ["false"], + "warning": [], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "OS Name", + "shape": "string", + "role": "label" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "manufacturer", + "displayName": "Manufacturer", + "shape": "string" + }, + { + "name": "architecture", + "displayName": "Architecture", + "shape": "string" + }, + { + "name": "buildNumber", + "displayName": "Build Number", + "shape": "string" + }, + { + "name": "releaseId", + "displayName": "Release ID", + "shape": "string" + }, + { + "name": "lastBootTime", + "displayName": "Last Boot Time", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/organizations.json b/plugins/NinjaOne/v1/dataStreams/organizations.json new file mode 100644 index 0000000..45b5cd8 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/organizations.json @@ -0,0 +1,33 @@ +{ + "name": "organizations", + "displayName": "Organizations", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "/v2/organizations", + "getArgs": [], + "headers": [] + }, + "manualConfigApply": true, + "matches": "none", + "rowPath": [], + "metadata": [], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/osPatches.json b/plugins/NinjaOne/v1/dataStreams/osPatches.json new file mode 100644 index 0000000..fb8286c --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/osPatches.json @@ -0,0 +1,95 @@ +{ + "name": "osPatches", + "displayName": "OS Patches", + "description": "OS patch compliance status including pending, failed, and installed patches", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/os-patches", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["failed", "rejected"], + "warning": ["pending"], + "success": ["installed"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Patch Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "severity", + "displayName": "Severity", + "shape": "string" + }, + { + "name": "type", + "displayName": "Type", + "shape": "string" + }, + { + "name": "kbNumber", + "displayName": "KB Number", + "shape": "string" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "visible": false + }, + { + "name": "installedAt", + "displayName": "Installed At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/policies.json b/plugins/NinjaOne/v1/dataStreams/policies.json new file mode 100644 index 0000000..aece2b3 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/policies.json @@ -0,0 +1,83 @@ +{ + "name": "policies", + "displayName": "Policies", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/policies", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "name", + "displayName": "Policy Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Policy ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "description", + "displayName": "Description", + "shape": "string" + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "enabled", + "displayName": "Enabled", + "shape": "boolean" + }, + { + "name": "created", + "displayName": "Created At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "updated", + "displayName": "Updated At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/policyOverrides.json b/plugins/NinjaOne/v1/dataStreams/policyOverrides.json new file mode 100644 index 0000000..a059917 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/policyOverrides.json @@ -0,0 +1,89 @@ +{ + "name": "policyOverrides", + "displayName": "Policy Overrides", + "description": "Device policy exceptions and overrides", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/policy-overrides", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "policyId", + "displayName": "Policy ID", + "shape": "string" + }, + { + "name": "policyName", + "displayName": "Policy Name", + "shape": "string", + "role": "label" + }, + { + "name": "conditionType", + "displayName": "Condition Type", + "shape": "string" + }, + { + "name": "conditionId", + "displayName": "Condition ID", + "shape": "string" + }, + { + "name": "enabled", + "displayName": "Enabled", + "shape": "boolean" + }, + { + "name": "createdAt", + "displayName": "Created At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "updatedAt", + "displayName": "Updated At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/processors.json b/plugins/NinjaOne/v1/dataStreams/processors.json new file mode 100644 index 0000000..bf374f1 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/processors.json @@ -0,0 +1,99 @@ +{ + "name": "processors", + "displayName": "Processors", + "description": "CPU information and specifications", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/processors", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "name", + "displayName": "Processor Name", + "shape": "string", + "role": "label" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "manufacturer", + "displayName": "Manufacturer", + "shape": "string" + }, + { + "name": "architecture", + "displayName": "Architecture", + "shape": "string" + }, + { + "name": "numCores", + "displayName": "Cores", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "numLogicalCores", + "displayName": "Logical Cores", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "maxClockSpeed", + "displayName": "Max Clock Speed (MHz)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "clockSpeed", + "displayName": "Current Clock Speed (MHz)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/software.json b/plugins/NinjaOne/v1/dataStreams/software.json new file mode 100644 index 0000000..6268e5a --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/software.json @@ -0,0 +1,87 @@ +{ + "name": "software", + "displayName": "Software", + "description": "Installed software inventory", + "baseDataSourceName": "httpRequestScoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/device/{{objects[0].properties.deviceId}}/software", + "getArgs": [], + "headers": [] + }, + "matches": { + "sourceType": { + "type": "oneOf", + "values": ["NinjaOne Device"] + } + }, + "metadata": [ + { + "name": "name", + "displayName": "Software Name", + "shape": "string", + "role": "label" + }, + { + "name": "publisher", + "displayName": "Publisher", + "shape": "string" + }, + { + "name": "version", + "displayName": "Version", + "shape": "string" + }, + { + "name": "installDate", + "displayName": "Install Date", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "size", + "displayName": "Size (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "location", + "displayName": "Location", + "shape": "string" + }, + { + "name": "productCode", + "displayName": "Product Code", + "shape": "string" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/softwarePatches.json b/plugins/NinjaOne/v1/dataStreams/softwarePatches.json new file mode 100644 index 0000000..a81fe9d --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/softwarePatches.json @@ -0,0 +1,100 @@ +{ + "name": "softwarePatches", + "displayName": "Software Patches", + "description": "Third-party software patch compliance status including pending, failed, and installed patches", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/software-patches", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["failed", "rejected"], + "warning": ["pending"], + "success": ["installed"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Patch Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "softwareName", + "displayName": "Software", + "shape": "string" + }, + { + "name": "softwarePublisher", + "displayName": "Publisher", + "shape": "string" + }, + { + "name": "severity", + "displayName": "Severity", + "shape": "string" + }, + { + "name": "version", + "displayName": "Version", + "shape": "string" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "visible": false + }, + { + "name": "installedAt", + "displayName": "Installed At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/tasks.json b/plugins/NinjaOne/v1/dataStreams/tasks.json new file mode 100644 index 0000000..b4b1a7f --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/tasks.json @@ -0,0 +1,104 @@ +{ + "name": "tasks", + "displayName": "Tasks", + "description": "Scheduled and running automation tasks", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/tasks", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": [ + "state", + { + "map": { + "error": ["failed", "cancelled"], + "warning": ["running", "pending"], + "success": ["completed", "success"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Task Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Task ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "type", + "displayName": "Type", + "shape": "string" + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "createdAt", + "displayName": "Created At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "startedAt", + "displayName": "Started At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "completedAt", + "displayName": "Completed At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/ticketBoards.json b/plugins/NinjaOne/v1/dataStreams/ticketBoards.json new file mode 100644 index 0000000..0269fbf --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/ticketBoards.json @@ -0,0 +1,74 @@ +{ + "name": "ticketBoards", + "displayName": "Ticket Boards", + "description": "Ticketing boards for organizing and viewing tickets", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "/v2/ticketing/trigger/boards", + "pathToData": "", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "name", + "displayName": "Board Name", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Board ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "description", + "displayName": "Description", + "shape": "string" + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "isPublic", + "displayName": "Public", + "shape": "boolean" + }, + { + "name": "createdAt", + "displayName": "Created At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/tickets.json b/plugins/NinjaOne/v1/dataStreams/tickets.json new file mode 100644 index 0000000..f6f9493 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/tickets.json @@ -0,0 +1,114 @@ +{ + "name": "tickets", + "displayName": "Tickets", + "description": "Tickets from a specific board", + "baseDataSourceName": "httpRequestScoped", + "config": { + "httpMethod": "post", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "/v2/ticketing/trigger/board/{{objects[0].boardId}}/run", + "pathToData": "data", + "getArgs": [], + "headers": [], + "postBody": { + "pageSize": 100, + "filters": [] + } + }, + "matches": { + "sourceType": { + "type": "oneOf", + "values": ["NinjaOne Ticket Board"] + } + }, + "metadata": [ + { + "name": "status", + "displayName": "Status", + "shape": "string" + }, + { + "name": "subject", + "displayName": "Subject", + "shape": "string", + "role": "label" + }, + { + "name": "id", + "displayName": "Ticket ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "ticketNumber", + "displayName": "Ticket Number", + "shape": "string" + }, + { + "name": "priority", + "displayName": "Priority", + "shape": "string" + }, + { + "name": "type", + "displayName": "Type", + "shape": "string" + }, + { + "name": "requesterName", + "displayName": "Requester", + "shape": "string" + }, + { + "name": "assigneeName", + "displayName": "Assignee", + "shape": "string" + }, + { + "name": "organizationId", + "displayName": "Organization ID", + "shape": "string" + }, + { + "name": "createdAt", + "displayName": "Created At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "name": "updatedAt", + "displayName": "Updated At", + "shape": [ + "date", + { + "timeZone": "Etc/UTC" + } + ] + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/volumes.json b/plugins/NinjaOne/v1/dataStreams/volumes.json new file mode 100644 index 0000000..26840b1 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/volumes.json @@ -0,0 +1,87 @@ +{ + "name": "volumes", + "displayName": "Volumes", + "description": "Disk volumes with capacity, free space, and BitLocker status", + "baseDataSourceName": "httpRequestScoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "/v2/device/{{objects[0].properties.deviceId}}/volumes", + "getArgs": [], + "headers": [] + }, + "matches": { + "sourceType": { + "type": "oneOf", + "values": ["NinjaOne Device"] + } + }, + "metadata": [ + { + "name": "name", + "displayName": "Volume Name", + "shape": "string", + "role": "label" + }, + { + "name": "driveLetter", + "displayName": "Drive Letter", + "shape": "string" + }, + { + "name": "label", + "displayName": "Label", + "shape": "string" + }, + { + "name": "fileSystem", + "displayName": "File System", + "shape": "string" + }, + { + "name": "capacity", + "displayName": "Capacity (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "freeSpace", + "displayName": "Free Space (Bytes)", + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ] + }, + { + "name": "serialNumber", + "displayName": "Serial Number", + "shape": "string" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/dataStreams/windowsServices.json b/plugins/NinjaOne/v1/dataStreams/windowsServices.json new file mode 100644 index 0000000..a7597e1 --- /dev/null +++ b/plugins/NinjaOne/v1/dataStreams/windowsServices.json @@ -0,0 +1,84 @@ +{ + "name": "windowsServices", + "displayName": "Windows Services", + "description": "Windows service status and configurations", + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": false, + "endpointPath": "/v2/queries/windows-services", + "pathToData": "results", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "state", + "displayName": "State", + "shape": [ + "state", + { + "map": { + "error": ["stopped"], + "success": ["running"], + "warning": ["paused", "start pending", "stop pending"], + "unknown": [] + } + } + ] + }, + { + "name": "name", + "displayName": "Service Name", + "shape": "string", + "role": "label" + }, + { + "name": "deviceId", + "displayName": "Device ID", + "shape": "string", + "role": "id", + "visible": false + }, + { + "name": "displayName", + "displayName": "Display Name", + "shape": "string" + }, + { + "name": "startType", + "displayName": "Start Type", + "shape": "string" + }, + { + "name": "userName", + "displayName": "Account", + "shape": "string" + }, + { + "name": "description", + "displayName": "Description", + "shape": "string" + }, + { + "pattern": ".*" + } + ], + "timeframes": [ + "last1hour", + "last12hours", + "last24hours", + "last7days", + "last30days", + "thisMonth", + "thisQuarter", + "thisYear", + "lastMonth", + "lastQuarter", + "lastYear", + "none" + ] +} diff --git a/plugins/NinjaOne/v1/defaultContent/Devices/deviceDetail.dash.json b/plugins/NinjaOne/v1/defaultContent/Devices/deviceDetail.dash.json new file mode 100644 index 0000000..c33222c --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/Devices/deviceDetail.dash.json @@ -0,0 +1,609 @@ +{ + "name": "Device Detail", + "schemaVersion": "1.4", + "path": "devices/device-detail", + "variables": ["{{variables.[NinjaOne Device]}}"], + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "dev-kpi-alerts-001", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.deviceHealth}}", + "name": "deviceHealth", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["alertCount"] + } + ] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Alert Count", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "alertCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "dev-kpi-threats-002", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.deviceHealth}}", + "name": "deviceHealth", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["activeThreatsCount"] + } + ] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Active Threats", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "activeThreatsCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "dev-kpi-patches-003", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.deviceHealth}}", + "name": "deviceHealth", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["pendingOSPatchesCount", "pendingSoftwarePatchesCount"] + } + ] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Pending Patches", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "pendingOSPatchesCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "dev-kpi-vuln-004", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.deviceHealth}}", + "name": "deviceHealth", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["criticalVulnerabilityCount"] + } + ] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Critical Vulnerabilities", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "criticalVulnerabilityCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "dev-bar-storage-001", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.volumes}}", + "name": "volumes" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Storage Volumes", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisData": "driveLetter", + "yAxisData": ["capacity", "freeSpace"], + "xAxisGroup": "none", + "xAxisLabel": "Drive", + "yAxisLabel": "Bytes", + "showXAxisLabel": true, + "showYAxisLabel": true, + "showLegend": true, + "legendPosition": "bottom", + "showGrid": true, + "showValue": false, + "showTotals": false, + "displayMode": "actual", + "horizontalLayout": "vertical", + "grouping": false, + "range": { "type": "auto" } + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "d1a2b3c4-5d6e-7890-abcd-ef12345678d1", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "datastream-properties", + "name": "properties" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Device Properties", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": ["name", "sourceId", "sourceType", "label"], + "hiddenColumns": ["id", "links", "type"], + "transpose": true + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 6, + "i": "d5e6f7890-1234-5678-ef01-12345678d5", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.computerSystems}}", + "name": "computerSystems" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Computer System", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "manufacturer", + "model", + "serialNumber", + "systemType", + "totalPhysicalMemory", + "domain", + "workgroup" + ], + "hiddenColumns": ["deviceId"], + "transpose": true + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 6, + "i": "d2b3c4d5-6e7f-8901-bcde-f12345678d2", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.volumes}}", + "name": "volumes" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Storage Volumes Detail", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "driveLetter", + "label", + "capacity", + "freeSpace", + "fileSystem", + "serialNumber" + ], + "hiddenColumns": [], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 9, + "i": "d4d5e6f7-8901-2345-def0-12345678d4", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.software}}", + "name": "software" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Installed Software", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": ["name", "publisher", "version", "installDate", "size"], + "hiddenColumns": ["location", "productCode"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 9, + "i": "d7g789012-3456-7890-f012-12345678d7", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.processors}}", + "name": "processors" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Processors", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "manufacturer", + "architecture", + "numCores", + "numLogicalCores", + "maxClockSpeed", + "clockSpeed" + ], + "hiddenColumns": ["deviceId"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 13, + "i": "d8h789012-3456-7890-f012-12345678d8", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.disks}}", + "name": "disks" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Physical Disks", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "status", + "model", + "manufacturer", + "mediaType", + "size", + "smartCapable", + "partitionCount" + ], + "hiddenColumns": ["deviceId", "interfaceType"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 13, + "i": "d9i789012-3456-7890-f012-12345678d9", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.networkInterfaces}}", + "name": "networkInterfaces" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Network Interfaces", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "interfaceName", + "status", + "adapterName", + "ipAddress", + "macAddress", + "subnetMask", + "defaultGateway", + "linkSpeed", + "interfaceType", + "mtu" + ], + "hiddenColumns": ["deviceId"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 16, + "i": "d0j789012-3456-7890-f012-12345678d0", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.loggedOnUsers}}", + "name": "loggedOnUsers" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Logged On Users", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": ["userName", "logonTime"], + "hiddenColumns": ["deviceId"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 19, + "i": "d1k789012-3456-7890-f012-12345678k1", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.windowsServices}}", + "name": "windowsServices" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Devices]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Device]}}" + }, + "timeframe": "none", + "title": "Windows Services", + "variables": ["{{variables.[NinjaOne Device]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": ["name", "displayName", "state", "startType", "userName", "description"], + "hiddenColumns": ["deviceId"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/TicketBoards/ticketBoard.dash.json b/plugins/NinjaOne/v1/defaultContent/TicketBoards/ticketBoard.dash.json new file mode 100644 index 0000000..14860e8 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/TicketBoards/ticketBoard.dash.json @@ -0,0 +1,530 @@ +{ + "name": "Ticket Board", + "schemaVersion": "1.4", + "path": "ticket-boards/ticket-board", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "tkt-kpi-total-001", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.tickets}}", + "name": "tickets", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Total Tickets", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "tkt-kpi-open-002", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "open" + } + ] + }, + "id": "{{dataStreams.tickets}}", + "name": "tickets", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Open Tickets", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "tkt-kpi-high-003", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "priority", + "operation": "equals", + "value": "high" + } + ] + }, + "id": "{{dataStreams.tickets}}", + "name": "tickets", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "High Priority", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "tkt-kpi-critical-004", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "priority", + "operation": "equals", + "value": "critical" + } + ] + }, + "id": "{{dataStreams.tickets}}", + "name": "tickets", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Critical", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "tkt-donut-status-001", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.tickets}}", + "name": "tickets", + "metadata": [ + { + "name": "status_uniqueValues", + "displayName": "Status" + } + ], + "group": { + "by": [["status", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Tickets by Status", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "status_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "tkt-donut-priority-001", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.tickets}}", + "name": "tickets", + "metadata": [ + { + "name": "priority_uniqueValues", + "displayName": "Priority" + } + ], + "group": { + "by": [["priority", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + } + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Tickets by Priority", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "priority_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 6, + "i": "t1a2b3c4-5d6e-7890-abcd-ef12345678t1", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "datastream-properties", + "name": "properties" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Board Properties", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": ["name", "sourceId", "sourceType", "label"], + "hiddenColumns": ["id", "links", "type"], + "transpose": true + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 6, + "i": "t2b3c4d5-6e7f-8901-bcde-f12345678t2", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.ticketBoards}}", + "name": "ticketBoards" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Board Information", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": ["name", "description", "organizationId", "isPublic", "createdAt"], + "hiddenColumns": ["id"], + "transpose": true + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 6, + "x": 0, + "y": 9, + "i": "t3c4d5e6-7f89-0123-cdef-12345678t3", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "id": "{{dataStreams.tickets}}", + "name": "tickets" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "All Tickets", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "ticketNumber", + "subject", + "status", + "priority", + "type", + "requesterName", + "assigneeName", + "organizationId", + "createdAt", + "updatedAt" + ], + "hiddenColumns": ["id"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 15, + "i": "t4d5e6f7-8901-2345-def0-12345678t4", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "open" + } + ] + }, + "id": "{{dataStreams.tickets}}", + "name": "tickets" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "Open Tickets", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "ticketNumber", + "subject", + "priority", + "type", + "assigneeName", + "createdAt" + ], + "hiddenColumns": ["id", "status", "requesterName", "organizationId", "updatedAt"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 15, + "i": "t5e6f7890-1234-5678-ef01-12345678t5", + "z": 0, + "config": { + "_type": "tile/data-stream", + "dataStream": { + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "priority", + "operation": "equals", + "value": "critical" + }, + { + "column": "priority", + "operation": "equals", + "value": "high" + } + ] + }, + "id": "{{dataStreams.tickets}}", + "name": "tickets" + }, + "description": "", + "scope": { + "scope": "{{scopes.[NinjaOne Ticket Boards]}}", + "workspace": "{{workspaceId}}", + "variable": "{{variables.[NinjaOne Ticket Board]}}" + }, + "timeframe": "none", + "title": "High Priority Tickets", + "variables": ["{{variables.[NinjaOne Ticket Board]}}"], + "visualisation": { + "config": { + "data-stream-table": { + "columnOrder": [ + "ticketNumber", + "subject", + "status", + "priority", + "assigneeName", + "createdAt" + ], + "hiddenColumns": ["id", "type", "requesterName", "organizationId", "updatedAt"], + "transpose": false + } + }, + "type": "data-stream-table" + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/activityLog.dash.json b/plugins/NinjaOne/v1/defaultContent/activityLog.dash.json new file mode 100644 index 0000000..54400c8 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/activityLog.dash.json @@ -0,0 +1,402 @@ +{ + "name": "Activity Log", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "act-kpi-total-001", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "activities", + "id": "{{dataStreams.activities}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Total Activities", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "act-kpi-failed-002", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "activities", + "id": "{{dataStreams.activities}}", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "failed" + }, + { + "column": "status", + "operation": "equals", + "value": "error" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Failed Activities", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "act-kpi-alerts-003", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "alerts", + "id": "{{dataStreams.alerts}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Alerts", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "act-kpi-warnings-004", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "activities", + "id": "{{dataStreams.activities}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "warning" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Warnings", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "act-bar-type-001", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "activities", + "id": "{{dataStreams.activities}}", + "metadata": [ + { + "name": "activityType_uniqueValues", + "displayName": "Activity Type" + } + ], + "group": { + "by": [["activityType", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "sort": { + "top": 10, + "by": [["count", "desc"]] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Activities by Type", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisData": "activityType_uniqueValues", + "yAxisData": ["count"], + "xAxisGroup": "none", + "xAxisLabel": "Activity Type", + "yAxisLabel": "Count", + "showXAxisLabel": true, + "showYAxisLabel": true, + "showLegend": false, + "legendPosition": "bottom", + "showGrid": true, + "showValue": true, + "showTotals": false, + "displayMode": "actual", + "horizontalLayout": "vertical", + "grouping": false, + "range": { "type": "auto" } + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "act-donut-status-001", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "activities", + "id": "{{dataStreams.activities}}", + "metadata": [ + { + "name": "status_uniqueValues", + "displayName": "Status" + } + ], + "group": { + "by": [["status", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Activities by Status", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "status_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 6, + "x": 0, + "y": 6, + "i": "a1a2b3c4-5d6e-7890-abcd-ef12345678a1", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "activities", + "id": "{{dataStreams.activities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Activities", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "activityType", + "displayName", + "status", + "organizationId", + "deviceId", + "userId", + "createdAt" + ], + "hiddenColumns": ["id"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 12, + "i": "a2b3c4d5-6e7f-8901-bcde-f12345678a2", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "activities", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "failed" + }, + { + "column": "status", + "operation": "equals", + "value": "error" + } + ] + }, + "id": "{{dataStreams.activities}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Failed Activities", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["activityType", "displayName", "status", "organizationId", "createdAt"], + "hiddenColumns": ["id", "deviceId", "userId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 12, + "i": "a3c4d5e6-7f89-0123-cdef-12345678a3", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "alerts", + "id": "{{dataStreams.alerts}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Alerts", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["displayName", "severity", "status", "createdAt"], + "hiddenColumns": ["id", "deviceId", "organizationId"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/backupManagement.dash.json b/plugins/NinjaOne/v1/defaultContent/backupManagement.dash.json new file mode 100644 index 0000000..d759c14 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/backupManagement.dash.json @@ -0,0 +1,381 @@ +{ + "name": "Backup Management", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "backup-kpi-used-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["usedBytes"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Total Storage Used", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "usedBytes_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "backup-kpi-overage-002", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["overageBytes"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Total Overage", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "overageBytes_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "backup-kpi-devices-003", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["deviceCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Devices Backed Up", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "deviceCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "backup-kpi-locations-004", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Backup Locations", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "backup-bar-usage-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Backup Storage by Organization", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisData": "organizationName", + "yAxisData": ["usedBytes", "includedBytes", "overageBytes"], + "xAxisGroup": "none", + "xAxisLabel": "Organization", + "yAxisLabel": "Bytes", + "showXAxisLabel": true, + "showYAxisLabel": true, + "showLegend": true, + "legendPosition": "bottom", + "showGrid": true, + "showValue": false, + "showTotals": false, + "displayMode": "actual", + "horizontalLayout": "vertical", + "grouping": false, + "range": { "type": "auto" } + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 6, + "i": "b1a2b3c4-5d6e-7890-abcd-ef12345678b1", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Backup Storage Usage by Location", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "organizationName", + "locationName", + "usedBytes", + "includedBytes", + "overageBytes", + "deviceCount" + ], + "hiddenColumns": ["organizationId", "locationId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 10, + "i": "b2b3c4d5-6e7f-8901-bcde-f12345678b2", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Device Health Overview", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["healthStatus", "offline", "alertCount"], + "hiddenColumns": [ + "deviceId", + "activeThreatsCount", + "quarantinedThreatsCount", + "pendingOSPatchesCount", + "failedOSPatchesCount", + "pendingSoftwarePatchesCount", + "failedSoftwarePatchesCount", + "criticalVulnerabilityCount", + "highVulnerabilityCount", + "mediumVulnerabilityCount", + "lowVulnerabilityCount" + ], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 10, + "i": "b3c4d5e6-7f89-0123-cdef-12345678b3", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "type", + "operation": "equals", + "value": "backup" + } + ] + }, + "id": "{{dataStreams.jobs}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Backup Jobs", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "status", "startedAt", "completedAt", "duration"], + "hiddenColumns": ["id", "type", "deviceId", "organizationId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 14, + "i": "b4d5e6f7-8901-2345-def0-12345678b4", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "alerts", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "displayName", + "operation": "contains", + "value": "backup" + } + ] + }, + "id": "{{dataStreams.alerts}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Backup-Related Alerts", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["displayName", "severity", "status", "createdAt"], + "hiddenColumns": ["id", "deviceId", "organizationId"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/deviceOverview.dash.json b/plugins/NinjaOne/v1/defaultContent/deviceOverview.dash.json new file mode 100644 index 0000000..2ea05b1 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/deviceOverview.dash.json @@ -0,0 +1,478 @@ +{ + "name": "Device Overview", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "kpi-devices-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Total Devices", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "kpi-offline-002", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "offline", + "operation": "equals", + "value": "true" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Offline Devices", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "kpi-criticalvuln-003", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["criticalVulnerabilityCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Critical Vulnerabilities", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "criticalVulnerabilityCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "kpi-activethreats-004", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["activeThreatsCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Active Threats", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "activeThreatsCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "a1b2c3d4-5e6f-7890-abcd-ef1234567890", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Device Health Status", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "healthStatus", + "activeThreatsCount", + "alertCount", + "pendingOSPatchesCount", + "failedOSPatchesCount", + "pendingSoftwarePatchesCount", + "failedSoftwarePatchesCount", + "criticalVulnerabilityCount", + "highVulnerabilityCount", + "offline" + ], + "hiddenColumns": [ + "deviceId", + "quarantinedThreatsCount", + "mediumVulnerabilityCount", + "lowVulnerabilityCount" + ], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "b2c3d4e5-6f78-9012-cdef-234567890123", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "alerts", + "id": "{{dataStreams.alerts}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Alerts", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["displayName", "severity", "status", "createdAt"], + "hiddenColumns": ["id", "deviceId", "organizationId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 6, + "i": "f1a2b3c4-5d6e-7890-abcd-ef1234567891", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "antivirusThreats", + "id": "{{dataStreams.antivirusThreats}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Antivirus Threats", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "status", "severity", "category", "detectedAt", "actionTaken"], + "hiddenColumns": ["id", "deviceId", "path"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 6, + "i": "f2b3c4d5-6e7f-8901-bcde-f12345678902", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "antivirusStatus", + "id": "{{dataStreams.antivirusStatus}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Antivirus Status", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "productName", + "productState", + "definitionStatus", + "version", + "timestamp" + ], + "hiddenColumns": ["deviceId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 0, + "y": 9, + "i": "c3d4e5f6-7890-1234-def0-345678901234", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "operatingSystems", + "id": "{{dataStreams.operatingSystems}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Operating Systems", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "architecture", "buildNumber", "lastBootTime", "needsReboot"], + "hiddenColumns": ["deviceId", "manufacturer", "releaseId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 3, + "x": 2, + "y": 9, + "i": "f3c4d5e6-7f89-0123-cdef-123456789003", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "computerSystems", + "id": "{{dataStreams.computerSystems}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Computer Systems", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "manufacturer", + "model", + "serialNumber", + "systemType", + "domain", + "workgroup" + ], + "hiddenColumns": ["deviceId", "totalPhysicalMemory"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 12, + "i": "d4e5f678-9012-3456-ef01-456789012345", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "backupUsage", + "id": "{{dataStreams.backupUsage}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Backup Usage by Location", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisData": "locationName", + "yAxisData": ["usedBytes", "includedBytes"], + "xAxisGroup": "none", + "xAxisLabel": "Location", + "yAxisLabel": "Bytes", + "showXAxisLabel": true, + "showYAxisLabel": true, + "showLegend": true, + "legendPosition": "bottom", + "showGrid": true, + "showValue": false, + "showTotals": false, + "displayMode": "actual", + "horizontalLayout": "horizontal", + "grouping": false, + "range": { "type": "auto" } + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 12, + "i": "f6789012-3456-7890-0123-678901234567", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "All Devices", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "displayName", + "systemName", + "offline", + "lastContact", + "organizationId" + ], + "hiddenColumns": ["id", "uid", "nodeClass", "locationId", "policyId"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/jobsTasks.dash.json b/plugins/NinjaOne/v1/defaultContent/jobsTasks.dash.json new file mode 100644 index 0000000..e17dc29 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/jobsTasks.dash.json @@ -0,0 +1,572 @@ +{ + "name": "Jobs & Tasks", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "job-kpi-running-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "jobs", + "id": "{{dataStreams.jobs}}", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "running" + }, + { + "column": "status", + "operation": "equals", + "value": "in_progress" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Running Jobs", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "job-kpi-failed-002", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "id": "{{dataStreams.jobs}}", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "failed" + }, + { + "column": "status", + "operation": "equals", + "value": "error" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Failed Jobs", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "job-kpi-completed-003", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "id": "{{dataStreams.jobs}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "completed" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Completed Jobs", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "job-kpi-activetasks-004", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "tasks", + "id": "{{dataStreams.tasks}}", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "running" + }, + { + "column": "status", + "operation": "equals", + "value": "pending" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Active Tasks", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "job-donut-status-001", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "id": "{{dataStreams.jobs}}", + "metadata": [ + { + "name": "status_uniqueValues", + "displayName": "Status" + } + ], + "group": { + "by": [["status", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Jobs by Status", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "status_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "task-donut-status-001", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "tasks", + "id": "{{dataStreams.tasks}}", + "metadata": [ + { + "name": "status_uniqueValues", + "displayName": "Status" + } + ], + "group": { + "by": [["status", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Tasks by Status", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "status_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 5, + "x": 0, + "y": 6, + "i": "j1a2b3c4-5d6e-7890-abcd-ef12345678j1", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "id": "{{dataStreams.jobs}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Jobs", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "type", + "status", + "organizationId", + "startedAt", + "completedAt", + "duration" + ], + "hiddenColumns": ["id", "deviceId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 5, + "x": 2, + "y": 6, + "i": "j2b3c4d5-6e7f-8901-bcde-f12345678j2", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "tasks", + "id": "{{dataStreams.tasks}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Tasks", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "type", + "status", + "organizationId", + "createdAt", + "startedAt", + "completedAt" + ], + "hiddenColumns": ["id"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 11, + "i": "j3c4d5e6-7f89-0123-cdef-12345678j3", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "failed" + }, + { + "column": "status", + "operation": "equals", + "value": "error" + } + ] + }, + "id": "{{dataStreams.jobs}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Failed Jobs", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "type", "status", "deviceId", "startedAt", "completedAt"], + "hiddenColumns": ["id", "organizationId", "duration"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 11, + "i": "j4d5e6f7-8901-2345-def0-12345678j4", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "tasks", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "failed" + }, + { + "column": "status", + "operation": "equals", + "value": "cancelled" + } + ] + }, + "id": "{{dataStreams.tasks}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Failed Tasks", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "type", "status", "organizationId", "startedAt", "completedAt"], + "hiddenColumns": ["id", "createdAt"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 15, + "i": "j5e6f7890-1234-5678-ef01-12345678j5", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "jobs", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "running" + }, + { + "column": "status", + "operation": "equals", + "value": "in_progress" + }, + { + "column": "status", + "operation": "equals", + "value": "pending" + } + ] + }, + "id": "{{dataStreams.jobs}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Active Jobs", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "type", "status", "deviceId", "startedAt"], + "hiddenColumns": ["id", "organizationId", "completedAt", "duration"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 15, + "i": "j6f789012-3456-7890-f012-12345678j6", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "tasks", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "status", + "operation": "equals", + "value": "running" + }, + { + "column": "status", + "operation": "equals", + "value": "pending" + } + ] + }, + "id": "{{dataStreams.tasks}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Active Tasks", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "type", "status", "organizationId", "startedAt"], + "hiddenColumns": ["id", "createdAt", "completedAt"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/manifest.json b/plugins/NinjaOne/v1/defaultContent/manifest.json new file mode 100644 index 0000000..e48f42f --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/manifest.json @@ -0,0 +1,40 @@ +{ + "items": [ + { + "name": "deviceOverview", + "type": "dashboard" + }, + { + "name": "patchManagement", + "type": "dashboard" + }, + { + "name": "securityOverview", + "type": "dashboard" + }, + { + "name": "backupManagement", + "type": "dashboard" + }, + { + "name": "organizationOverview", + "type": "dashboard" + }, + { + "name": "jobsTasks", + "type": "dashboard" + }, + { + "name": "activityLog", + "type": "dashboard" + }, + { + "name": "Devices/deviceDetail", + "type": "dashboard" + }, + { + "name": "TicketBoards/ticketBoard", + "type": "dashboard" + } + ] +} diff --git a/plugins/NinjaOne/v1/defaultContent/organizationOverview.dash.json b/plugins/NinjaOne/v1/defaultContent/organizationOverview.dash.json new file mode 100644 index 0000000..a20a9dc --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/organizationOverview.dash.json @@ -0,0 +1,439 @@ +{ + "name": "Organization Overview", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "org-kpi-orgs-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "organizations", + "id": "{{dataStreams.organizations}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Organizations", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "org-kpi-locations-002", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "locations", + "id": "{{dataStreams.locations}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Locations", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "org-kpi-devices-003", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Total Devices", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "org-kpi-policies-004", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "policies", + "id": "{{dataStreams.policies}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Policies", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "org-bar-groups-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceGroups", + "id": "{{dataStreams.deviceGroups}}", + "sort": { + "top": 10, + "by": [["deviceCount", "desc"]] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Device Groups by Size", + "visualisation": { + "type": "data-stream-bar-chart", + "config": { + "data-stream-bar-chart": { + "xAxisData": "name", + "yAxisData": ["deviceCount"], + "xAxisGroup": "none", + "xAxisLabel": "Group", + "yAxisLabel": "Devices", + "showXAxisLabel": true, + "showYAxisLabel": true, + "showLegend": false, + "legendPosition": "bottom", + "showGrid": true, + "showValue": true, + "showTotals": false, + "displayMode": "actual", + "horizontalLayout": "horizontal", + "grouping": false, + "range": { "type": "auto" } + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "org-bar-tickets-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "ticketBoards", + "id": "{{dataStreams.ticketBoards}}", + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Ticket Boards", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 6, + "i": "o1a2b3c4-5d6e-7890-abcd-ef12345678o1", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "organizations", + "id": "{{dataStreams.organizations}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Organizations", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "id", "description"], + "hiddenColumns": [], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 6, + "i": "o2b3c4d5-6e7f-8901-bcde-f12345678o2", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "locations", + "id": "{{dataStreams.locations}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Locations", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "organizationName", "city", "country", "timezone"], + "hiddenColumns": ["id", "organizationId", "description", "address"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 10, + "i": "o3c4d5e6-7f89-0123-cdef-12345678o3", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceGroups", + "id": "{{dataStreams.deviceGroups}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Device Groups", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "organizationId", "type", "deviceCount", "isDynamic"], + "hiddenColumns": ["id"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 10, + "i": "o4d5e6f7-8901-2345-def0-12345678o4", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "policies", + "id": "{{dataStreams.policies}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Policies", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "id", "description"], + "hiddenColumns": [], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 14, + "i": "o5e6f7890-1234-5678-ef01-12345678o5", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "devices", + "id": "{{dataStreams.devices}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "All Devices", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "displayName", + "systemName", + "organizationId", + "locationId", + "policyId", + "offline", + "lastContact" + ], + "hiddenColumns": ["id", "uid", "nodeClass"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 14, + "i": "o6f789012-3456-7890-f012-12345678o6", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "ticketBoards", + "id": "{{dataStreams.ticketBoards}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Ticket Boards", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "organizationId", "description", "isPublic", "createdAt"], + "hiddenColumns": ["id"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/patchManagement.dash.json b/plugins/NinjaOne/v1/defaultContent/patchManagement.dash.json new file mode 100644 index 0000000..9b28fe3 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/patchManagement.dash.json @@ -0,0 +1,515 @@ +{ + "name": "Patch Management", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "patch-kpi-pendingos-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["pendingOSPatchesCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Pending OS Patches", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "pendingOSPatchesCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "patch-kpi-failedos-002", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["failedOSPatchesCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Failed OS Patches", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "failedOSPatchesCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "patch-kpi-pendingsoft-003", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["pendingSoftwarePatchesCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Pending Software Patches", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "pendingSoftwarePatchesCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "patch-kpi-reboot-004", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "operatingSystems", + "id": "{{dataStreams.operatingSystems}}", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "needsReboot", + "operation": "equals", + "value": "true" + } + ] + }, + "group": { + "by": [], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Need Reboot", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "count", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "patch-donut-osstatus-001", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "osPatches", + "id": "{{dataStreams.osPatches}}", + "metadata": [ + { + "name": "status_uniqueValues", + "displayName": "Status" + } + ], + "group": { + "by": [["status", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "OS Patches by Status", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "status_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "patch-donut-softstatus-002", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "softwarePatches", + "id": "{{dataStreams.softwarePatches}}", + "metadata": [ + { + "name": "status_uniqueValues", + "displayName": "Status" + } + ], + "group": { + "by": [["status", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Software Patches by Status", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "status_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 5, + "x": 0, + "y": 6, + "i": "a1b2c3d4-5e6f-7890-abcd-ef1234567891", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "osPatches", + "id": "{{dataStreams.osPatches}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "OS Patch Status", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "status", "severity", "type", "kbNumber", "installedAt"], + "hiddenColumns": ["id", "deviceId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 5, + "x": 2, + "y": 6, + "i": "b2c3d4e5-6f78-9012-cdef-234567890124", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "softwarePatches", + "id": "{{dataStreams.softwarePatches}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Software Patch Status", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "softwareName", + "softwarePublisher", + "status", + "severity", + "version", + "installedAt" + ], + "hiddenColumns": ["id", "deviceId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 11, + "i": "c3d4e5f6-7890-1234-def0-345678901235", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "operatingSystems", + "filter": { + "multiOperation": "and", + "filters": [ + { + "column": "needsReboot", + "operation": "equals", + "value": "true" + } + ] + }, + "id": "{{dataStreams.operatingSystems}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Devices Needing Reboot", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "buildNumber", "lastBootTime", "needsReboot"], + "hiddenColumns": ["deviceId", "manufacturer", "architecture", "releaseId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 11, + "i": "p1a2b3c4-5d6e-7890-abcd-ef12345678a1", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Patch Compliance Summary", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "healthStatus", + "pendingOSPatchesCount", + "failedOSPatchesCount", + "pendingSoftwarePatchesCount", + "failedSoftwarePatchesCount" + ], + "hiddenColumns": [ + "deviceId", + "activeThreatsCount", + "quarantinedThreatsCount", + "alertCount", + "criticalVulnerabilityCount", + "highVulnerabilityCount", + "mediumVulnerabilityCount", + "lowVulnerabilityCount", + "offline" + ], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 15, + "i": "p2b3c4d5-6e7f-8901-bcde-f12345678a2", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "policyOverrides", + "id": "{{dataStreams.policyOverrides}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Policy Overrides", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["policyName", "conditionType", "enabled", "createdAt", "updatedAt"], + "hiddenColumns": ["deviceId", "policyId", "conditionId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 15, + "i": "d4e5f678-9012-3456-ef01-456789012346", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "jobs", + "filter": { + "multiOperation": "or", + "filters": [ + { + "column": "type", + "operation": "equals", + "value": "patch" + }, + { + "column": "type", + "operation": "equals", + "value": "os_patch" + }, + { + "column": "type", + "operation": "equals", + "value": "software_patch" + } + ] + }, + "id": "{{dataStreams.jobs}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Patch Jobs", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["name", "type", "status", "startedAt", "completedAt", "duration"], + "hiddenColumns": ["id", "deviceId", "organizationId"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/defaultContent/scopes.json b/plugins/NinjaOne/v1/defaultContent/scopes.json new file mode 100644 index 0000000..a45a4f7 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/scopes.json @@ -0,0 +1,32 @@ +[ + { + "matches": { + "sourceType": { + "type": "oneOf", + "values": ["NinjaOne Device"] + } + }, + "name": "NinjaOne Devices", + "variable": { + "allowMultipleSelection": false, + "default": "none", + "name": "NinjaOne Device", + "type": "object" + } + }, + { + "matches": { + "sourceType": { + "type": "oneOf", + "values": ["NinjaOne Ticket Board"] + } + }, + "name": "NinjaOne Ticket Boards", + "variable": { + "allowMultipleSelection": false, + "default": "none", + "name": "NinjaOne Ticket Board", + "type": "object" + } + } +] diff --git a/plugins/NinjaOne/v1/defaultContent/securityOverview.dash.json b/plugins/NinjaOne/v1/defaultContent/securityOverview.dash.json new file mode 100644 index 0000000..f4df800 --- /dev/null +++ b/plugins/NinjaOne/v1/defaultContent/securityOverview.dash.json @@ -0,0 +1,463 @@ +{ + "name": "Security Overview", + "schemaVersion": "1.4", + "dashboard": { + "_type": "layout/grid", + "columns": 4, + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "sec-kpi-activethreats-001", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["activeThreatsCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Active Threats", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "activeThreatsCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "sec-kpi-alertcount-002", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["alertCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Total Alerts", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "alertCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "sec-kpi-criticalvuln-003", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["criticalVulnerabilityCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Critical Vulnerabilities", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "criticalVulnerabilityCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "sec-kpi-highvuln-004", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "group": { + "by": [], + "aggregate": [ + { + "type": "sum", + "names": ["highVulnerabilityCount"] + } + ] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "High Vulnerabilities", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "highVulnerabilityCount_sum", + "comparisonColumn": "none", + "formatted": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 2, + "i": "sec-donut-threats-001", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "antivirusThreats", + "id": "{{dataStreams.antivirusThreats}}", + "metadata": [ + { + "name": "severity_uniqueValues", + "displayName": "Severity" + } + ], + "group": { + "by": [["severity", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Threats by Severity", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "severity_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 2, + "i": "sec-donut-alerts-002", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "alerts", + "id": "{{dataStreams.alerts}}", + "metadata": [ + { + "name": "severity_uniqueValues", + "displayName": "Severity" + } + ], + "group": { + "by": [["severity", "uniqueValues"]], + "aggregate": [{ "type": "count" }] + }, + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Alerts by Severity", + "visualisation": { + "type": "data-stream-donut-chart", + "config": { + "data-stream-donut-chart": { + "labelColumn": "severity_uniqueValues", + "valueColumn": "count", + "showValuesAsPercentage": true, + "hideCenterValue": false, + "legendPosition": "auto", + "legendMode": "inline" + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 6, + "i": "s1a2b3c4-5d6e-7890-abcd-ef12345678s1", + "z": 0, + "config": { + "timeframe": "last7days", + "dataStream": { + "name": "antivirusThreats", + "id": "{{dataStreams.antivirusThreats}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Antivirus Threats", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "status", + "severity", + "category", + "detectedAt", + "actionTaken", + "path" + ], + "hiddenColumns": ["id", "deviceId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 6, + "i": "s2b3c4d5-6e7f-8901-bcde-f12345678s2", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "antivirusStatus", + "id": "{{dataStreams.antivirusStatus}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Antivirus Product Status", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "productName", + "productState", + "definitionStatus", + "version", + "timestamp" + ], + "hiddenColumns": ["deviceId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 0, + "y": 10, + "i": "s3c4d5e6-7f89-0123-cdef-12345678s3", + "z": 0, + "config": { + "timeframe": "last24hours", + "dataStream": { + "name": "alerts", + "id": "{{dataStreams.alerts}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Recent Security Alerts", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": ["displayName", "severity", "status", "createdAt"], + "hiddenColumns": ["id", "deviceId", "organizationId"], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 2, + "moved": false, + "h": 4, + "x": 2, + "y": 10, + "i": "s4d5e6f7-8901-2345-def0-12345678s4", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "deviceHealth", + "id": "{{dataStreams.deviceHealth}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Device Security Health", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "healthStatus", + "activeThreatsCount", + "quarantinedThreatsCount", + "alertCount", + "criticalVulnerabilityCount", + "highVulnerabilityCount" + ], + "hiddenColumns": [ + "deviceId", + "pendingOSPatchesCount", + "failedOSPatchesCount", + "pendingSoftwarePatchesCount", + "failedSoftwarePatchesCount", + "mediumVulnerabilityCount", + "lowVulnerabilityCount", + "offline" + ], + "transpose": false + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 4, + "x": 0, + "y": 14, + "i": "s5e6f7890-1234-5678-ef01-12345678s5", + "z": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "disks", + "id": "{{dataStreams.disks}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": ["{{configId}}"], + "title": "Disk Health (SMART Status)", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "status", + "model", + "manufacturer", + "mediaType", + "size", + "smartCapable", + "partitionCount" + ], + "hiddenColumns": ["deviceId", "interfaceType"], + "transpose": false + } + } + } + } + } + ] + } +} diff --git a/plugins/NinjaOne/v1/docs/README.md b/plugins/NinjaOne/v1/docs/README.md new file mode 100644 index 0000000..58a992e --- /dev/null +++ b/plugins/NinjaOne/v1/docs/README.md @@ -0,0 +1,101 @@ +# Before you start + +To use this data source, you will need to create OAuth2 API credentials in your NinjaOne portal. + +## Create NinjaOne API Credentials + +1. Log in to your NinjaOne portal +2. Navigate to **Administration** > **API** > **Add Application** +3. Configure the application: + - **Application Name**: Enter a descriptive name (e.g., "SquaredUp Integration") + - **Allowed Grant Types**: Ensure "Client Credentials" is enabled + - **Scopes**: Select the following scopes: + - `monitoring` - Required for device monitoring data + - `management` - Required for management operations + - `control` - Required for control operations + - `offline_access` - Required for refresh tokens +4. Click **Create Application** +5. Copy the **Client ID** and **Client Secret** - you will need these when configuring the plugin in SquaredUp + +## Configure the Plugin in SquaredUp + +When adding the NinjaOne data source in SquaredUp, you will need to provide: + +1. **Region**: Select your NinjaOne instance region + + - US + - EU + - Canada + - OC + +2. **API Region**: Select your NinjaOne API region (should match your instance region) + + - US + - EU + - Canada + - OC + +3. **Client ID**: Paste the Client ID from your NinjaOne API application + +4. **Client Secret**: Paste the Client Secret from your NinjaOne API application + +That's it! The plugin will automatically authenticate using Client Credentials flow when you save the configuration. + +## Available Data Streams + +This plugin provides the following data streams for monitoring your NinjaOne environment: + +### Core Monitoring + +- **Devices** - All managed devices with status and organization details +- **Alerts** - Active alerts across all devices +- **Policies** - Configuration policies applied to devices +- **Organizations** - Customer/organization information +- **Activities** - Recent activity log +- **Device Groups** - Device groups for filtering and organization +- **Locations** - Organization locations and sites + +### Health & Security + +- **Device Health** - Comprehensive health overview including threats, patches, and vulnerabilities +- **Antivirus Status** - Antivirus product status and definition updates +- **Antivirus Threats** - Detected antivirus threats with quarantine status +- **OS Patches** - OS patch compliance with pending, failed, and installed status +- **Software Patches** - Third-party software patch compliance (Chrome, Adobe, etc.) +- **Volumes** - Disk volumes with capacity, free space, and BitLocker status +- **Backup Usage** - Backup storage usage by organization and location + +### System Information + +- **Disks** - Physical disk inventory with SMART status +- **Network Interfaces** - Network adapters with IP, MAC, and link speed +- **Processors** - CPU information and specifications +- **Operating Systems** - OS details with reboot requirements +- **Computer Systems** - Hardware information including manufacturer, model, and serial number +- **Software** - Installed software inventory +- **Windows Services** - Windows service status and configurations +- **Logged On Users** - Last logged-on user activity + +### Operations & Automation + +- **Tasks** - Scheduled and running automation tasks +- **Jobs** - Script and patch job execution status +- **Policy Overrides** - Device policy exceptions and overrides + +### Ticketing + +- **Ticket Boards** - Ticketing boards for organizing and viewing tickets +- **Tickets** - Tickets from a specific board (scoped to Ticket Board) + +## Troubleshooting + +**Authentication Failed**: Ensure your Client ID and Client Secret are correct and that "Client Credentials" is enabled as an allowed grant type in your NinjaOne API application. + +**No Data Returned**: Verify that the selected API Region matches your NinjaOne instance region. + +**Insufficient Permissions**: Ensure the API application has all required scopes (`monitoring`, `management`, `control`, `offline_access`). + +## Additional Resources + +- [NinjaOne API Documentation](https://app.ninjarmm.com/apidocs/) +- [NinjaOne Support](https://support.ninjaone.com/) diff --git a/plugins/NinjaOne/v1/icon.png b/plugins/NinjaOne/v1/icon.png new file mode 100644 index 0000000..fa9f594 Binary files /dev/null and b/plugins/NinjaOne/v1/icon.png differ diff --git a/plugins/NinjaOne/v1/indexDefinitions/default.json b/plugins/NinjaOne/v1/indexDefinitions/default.json new file mode 100644 index 0000000..f6c7a89 --- /dev/null +++ b/plugins/NinjaOne/v1/indexDefinitions/default.json @@ -0,0 +1,49 @@ +{ + "steps": [ + { + "name": "organizations", + "dataStream": { + "name": "organizations" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "NinjaOne Organization" }, + "properties": [{ "organizationId": "id" }, "description", "nodeApprovalMode"] + } + }, + { + "name": "devices", + "dataStream": { + "name": "devices" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "systemName", + "type": { "value": "NinjaOne Device" }, + "properties": [ + { "deviceId": "id" }, + { "organizationId": "organizationId" }, + { "locationId": "locationId" }, + "systemName", + "offline" + ] + } + }, + { + "name": "ticketBoards", + "dataStream": { + "name": "ticketBoards" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "NinjaOne Ticket Board" }, + "properties": [{ "boardId": "id" }, "description", "organizationId"] + } + } + ] +} diff --git a/plugins/NinjaOne/v1/metadata.json b/plugins/NinjaOne/v1/metadata.json new file mode 100644 index 0000000..3289e06 --- /dev/null +++ b/plugins/NinjaOne/v1/metadata.json @@ -0,0 +1,41 @@ +{ + "name": "ninja-one", + "displayName": "NinjaOne", + "version": "1.1.0", + "author": { + "name": "Dan Watts", + "type": "community" + }, + "description": "Monitor device health, patch compliance, security status, and system information across your NinjaOne environment", + "category": "Monitoring", + "type": "cloud", + "schemaVersion": "2.0", + "base": { + "plugin": "WebAPI", + "majorVersion": "1", + "config": { + "queryArgs": [], + "headers": [], + "authMode": "oauth2", + "oauth2GrantType": "clientCredentials", + "baseUrl": "{{apiBaseUrl}}", + "oauth2ClientId": "{{clientId}}", + "oauth2ClientSecret": "{{clientSecret}}", + "oauth2TokenUrl": "{{instanceUrl}}/oauth/token", + "oauth2ClientSecretLocationDuringAuth": "body", + "oauth2Scope": "monitoring management control offline_access" + } + }, + "links": [ + { + "category": "documentation", + "url": "https://github.com/squaredup/plugins/blob/main/plugins/NinjaOne/v1/docs/README.md", + "label": "Help adding this plugin" + }, + { + "category": "source", + "url": "https://github.com/squaredup/plugins/tree/main/plugins/NinjaOne/v1", + "label": "Repository" + } + ] +} diff --git a/plugins/NinjaOne/v1/ui.json b/plugins/NinjaOne/v1/ui.json new file mode 100644 index 0000000..d860048 --- /dev/null +++ b/plugins/NinjaOne/v1/ui.json @@ -0,0 +1,78 @@ +[ + { + "type": "radio", + "name": "instanceUrl", + "label": "Region", + "help": "Select your NinjaOne instance region", + "defaultValue": "https://ca.ninjarmm.com", + "options": [ + { + "value": "https://app.ninjarmm.com", + "label": "US" + }, + { + "value": "https://eu.ninjarmm.com", + "label": "EU" + }, + { + "value": "https://ca.ninjarmm.com", + "label": "Canada" + }, + { + "value": "https://oc.ninjarmm.com", + "label": "OC" + } + ], + "validation": { + "required": true + } + }, + { + "type": "radio", + "name": "apiBaseUrl", + "label": "API Region", + "help": "Select your NinjaOne API region (should match your instance region)", + "defaultValue": "https://ca-api.ninjarmm.com", + "options": [ + { + "value": "https://api.ninjarmm.com", + "label": "US" + }, + { + "value": "https://eu-api.ninjarmm.com", + "label": "EU" + }, + { + "value": "https://ca-api.ninjarmm.com", + "label": "Canada" + }, + { + "value": "https://oc-api.ninjarmm.com", + "label": "OC" + } + ], + "validation": { + "required": true + } + }, + { + "type": "text", + "name": "clientId", + "label": "Client ID", + "help": "Enter the Client ID from your NinjaOne API credentials", + "validation": { + "required": true + }, + "placeholder": "Enter your Client ID" + }, + { + "type": "password", + "name": "clientSecret", + "label": "Client Secret", + "help": "Enter the Client Secret from your NinjaOne API credentials", + "validation": { + "required": true + }, + "placeholder": "Enter your Client Secret" + } +]