diff --git a/plugins/Checkly/v1/README.md b/plugins/Checkly/v1/README.md new file mode 100644 index 0000000..46d9a68 --- /dev/null +++ b/plugins/Checkly/v1/README.md @@ -0,0 +1,3 @@ +# Checkly plugin + +A simple data source for [Checkly](https://www.checklyhq.com). \ No newline at end of file diff --git a/plugins/Checkly/v1/configValidation.json b/plugins/Checkly/v1/configValidation.json new file mode 100644 index 0000000..f9a989f --- /dev/null +++ b/plugins/Checkly/v1/configValidation.json @@ -0,0 +1,13 @@ +{ + "steps": [ + { + "displayName": "API access", + "dataStream": { + "name": "account" + }, + "success": "Successfully connected to Checkly API", + "error": "Check your Checkly API key is valid", + "required": true + } + ] +} \ No newline at end of file diff --git a/plugins/Checkly/v1/cspell.json b/plugins/Checkly/v1/cspell.json new file mode 100644 index 0000000..f3599a8 --- /dev/null +++ b/plugins/Checkly/v1/cspell.json @@ -0,0 +1,5 @@ +{ + "words": [ + "checkly" + ] +} diff --git a/plugins/Checkly/v1/dataStreams/account.json b/plugins/Checkly/v1/dataStreams/account.json new file mode 100644 index 0000000..042cae6 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/account.json @@ -0,0 +1,22 @@ +{ + "name": "account", + "displayName": "Account", + "tags": [ + "Advanced" + ], + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "accounts/me", + "getArgs": [], + "headers": [] + }, + "timeframes": false, + "visibility": { + "type": "hidden" + } +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/alerts.json b/plugins/Checkly/v1/dataStreams/alerts.json new file mode 100644 index 0000000..ff00aef --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/alerts.json @@ -0,0 +1,48 @@ +{ + "name": "alerts", + "displayName": "Summary – Alerts", + "tags": [ + "Summary" + ], + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "nextUrl", + "pageSize": { + "realm": "queryArg", + "path": "limit", + "value": "100" + }, + "in": { + "realm": "webLink", + "path": "next" + } + }, + "expandInnerObjects": true, + "endpointPath": "check-alerts", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "name": "CheckName", + "sourceId": "checkId", + "objectPropertyPath": "Name", + "sourceType": "check" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "responseTime" + }, + { + "pattern": ".*" + } + ], + "timeframes": false +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsApi.json b/plugins/Checkly/v1/dataStreams/analyticsApi.json new file mode 100644 index 0000000..6a8faf6 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsApi.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsApiChecks", + "displayName": "Analytics – API Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "API" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "API" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/api-checks/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsBrowser.json b/plugins/Checkly/v1/dataStreams/analyticsBrowser.json new file mode 100644 index 0000000..56dae20 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsBrowser.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsBrowserChecks", + "displayName": "Analytics – Browser Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "BROWSER" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "BROWSER" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/browser-checks/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsDns.json b/plugins/Checkly/v1/dataStreams/analyticsDns.json new file mode 100644 index 0000000..16c2145 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsDns.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsDns", + "displayName": "Analytics – DNS Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "DNS" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "DNS" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/dns/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsHeartbeat.json b/plugins/Checkly/v1/dataStreams/analyticsHeartbeat.json new file mode 100644 index 0000000..a84d2b0 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsHeartbeat.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsHeartbeatChecks", + "displayName": "Analytics – Heartbeat Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "HEARTBEAT" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "HEARTBEAT" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/heartbeat-checks/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsIcmp.json b/plugins/Checkly/v1/dataStreams/analyticsIcmp.json new file mode 100644 index 0000000..f0b09b8 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsIcmp.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsIcmp", + "displayName": "Analytics – ICMP Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "ICMP" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "ICMP" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/icmp/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsMultiStepCheck.json b/plugins/Checkly/v1/dataStreams/analyticsMultiStepCheck.json new file mode 100644 index 0000000..143beff --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsMultiStepCheck.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsMultiStepChecks", + "displayName": "Analytics – Multi-Step Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "MULTI_STEP" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "MULTI_STEP" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/multistep-checks/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsPlaywrightCheck.json b/plugins/Checkly/v1/dataStreams/analyticsPlaywrightCheck.json new file mode 100644 index 0000000..9751680 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsPlaywrightCheck.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsPlaywrightChecks", + "displayName": "Analytics – Playwright Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "PLAYWRIGHT" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "PLAYWRIGHT" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/playwright-checks/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsTcpCheck.json b/plugins/Checkly/v1/dataStreams/analyticsTcpCheck.json new file mode 100644 index 0000000..2586c8d --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsTcpCheck.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsTcpChecks", + "displayName": "Analytics – TCP Check", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "TCP" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "TCP" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/tcp-checks/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/analyticsUrlMonitor.json b/plugins/Checkly/v1/dataStreams/analyticsUrlMonitor.json new file mode 100644 index 0000000..d0f6f26 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/analyticsUrlMonitor.json @@ -0,0 +1,98 @@ +{ + "name": "analyticsUrlMonitors", + "displayName": "Analytics – URL Monitor", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + }, + "checkType": { + "type": "equals", + "value": "URL" + } + }, + "tags": [ + "Analytics" + ], + "ui": [ + { + "type": "autocomplete", + "name": "metric", + "label": "Metric", + "validation": { + "required": true + }, + "isMulti": false, + "data": { + "source": "dataStream", + "dataStreamName": "availableMetrics", + "dataSourceConfig": { + "checkType": "URL" + } + } + } + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/url-monitors/{{object.checkId}}", + "getArgs": [ + { + "key": "metrics", + "value": "{{metric}}" + }, + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "limit", + "value": "100" + } + ], + "postRequestScript": "analytics-post.js", + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "attempts" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "statusCode" + }, + { + "pattern": ".*" + } + ], + "timeframes": true +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/availableMetrics.json b/plugins/Checkly/v1/dataStreams/availableMetrics.json new file mode 100644 index 0000000..97684e7 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/availableMetrics.json @@ -0,0 +1,82 @@ +{ + "name": "availableMetrics", + "displayName": "Available Metrics", + "baseDataSourceName": "httpRequestUnscoped", + "tags": [ + "Advanced" + ], + "ui": [ + { + "type": "autocomplete", + "name": "checkType", + "label": "Check Type", + "validation": { + "required": true + }, + "allowCustomValues": false, + "isMulti": false, + "data": { + "source": "fixed", + "values": [ + { + "value": "API" + }, + { + "value": "BROWSER" + }, + { + "value": "HEARTBEAT" + }, + { + "value": "ICMP" + }, + { + "value": "MULTI_STEP" + }, + { + "value": "TCP" + }, + { + "value": "PLAYWRIGHT" + }, + { + "value": "URL" + }, + { + "value": "DNS" + } + ] + } + } + ] + , + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "analytics/metrics", + "getArgs": [ + { + "key": "checkType", + "value": "{{checkType}}" + } + ], + "headers": [] + }, + "metadata": [ + { + "role": "value", + "shape": "string", + "name": "name" + }, + { + "pattern": ".*" + } + ], + "timeframes": false, + "visibility": { + "type": "hidden" + } +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/checkStatus.json b/plugins/Checkly/v1/dataStreams/checkStatus.json new file mode 100644 index 0000000..fc3fa7b --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/checkStatus.json @@ -0,0 +1,50 @@ +{ + "name": "checkStatus", + "displayName": "Summary – Status", + "tags": [ + "Summary" + ], + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": {}, + "expandInnerObjects": true, + "endpointPath": "check-statuses", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "name": "status", + "valueExpression": "{{ $['isDegraded'] ? 'error' : 'success' }}", + "shape": [ + "state", + { + "map": { + "warning": [], + "unmonitored": [], + "error": [], + "success": [], + "unknown": [] + } + } + ], + "computed": true, + "displayName": "Status" + }, + { + "pattern": ".*" + } + ], + "timeframes": false +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/checkStatusSingle.json b/plugins/Checkly/v1/dataStreams/checkStatusSingle.json new file mode 100644 index 0000000..4b1f011 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/checkStatusSingle.json @@ -0,0 +1,58 @@ +{ + "name": "checkStatusSingle", + "displayName": "Check – Status", + "baseDataSourceName": "httpRequestScopedSingle", + "matches": { + "sourceType": { + "type": "equals", + "value": "check" + } + }, + "tags": [ + "Status" + ], + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "check-statuses/{{object.checkId}}", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "name": "status", + "valueExpression": "{{ $['isDegraded'] ? 'error' : 'success' }}", + "shape": [ + "state", + { + "map": { + "warning": [], + "unmonitored": [], + "error": [], + "success": [], + "unknown": [] + } + } + ], + "computed": true, + "displayName": "Status" + }, + { + "pattern": ".*" + } + ], + "timeframes": false +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/checks.json b/plugins/Checkly/v1/dataStreams/checks.json new file mode 100644 index 0000000..0be5413 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/checks.json @@ -0,0 +1,134 @@ +{ + "name": "checks", + "displayName": "Checks", + "tags": [ + "Advanced" + ], + "baseDataSourceName": "httpRequestUnscoped", + "config": { + "httpMethod": "get", + "paging": { + "mode": "nextUrl", + "pageSize": { + "realm": "queryArg", + "path": "limit", + "value": "100" + }, + "in": { + "realm": "webLink", + "path": "next" + } + }, + "expandInnerObjects": true, + "endpointPath": "checks", + "getArgs": [], + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "id" + }, + { + "shape": [ + "minutes", + { + "formatDuration": true, + "decimalPlaces": 0 + } + ], + "name": "frequency" + }, + { + "shape": [ + "minutes", + { + "formatDuration": true, + "decimalPlaces": 0 + } + ], + "name": "frequencyOffset" + }, + { + "shape": [ + "minutes", + { + "formatDuration": true, + "decimalPlaces": 0 + } + ], + "name": "alertSettings.reminders.interval" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "alertSettings.runBasedEscalation.failedRunThreshold" + }, + { + "shape": [ + "minutes", + { + "formatDuration": true, + "decimalPlaces": 0 + } + ], + "name": "alertSettings.timeBasedEscalation.minutesFailingThreshold" + }, + { + "shape": [ + "percent", + { + "decimalPlaces": 0, + "asZeroToOne": false + } + ], + "name": "alertSettings.parallelRunFailureThreshold.percentage" + }, + { + "shape": [ + "milliseconds", + { + "formatDuration": false, + "decimalPlaces": 0 + } + ], + "name": "degradedResponseTime" + }, + { + "shape": [ + "milliseconds", + { + "formatDuration": false, + "decimalPlaces": 0 + } + ], + "name": "maxResponseTime" + }, + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "alertChannelSubscriptions.0.alertChannelId" + }, + { + "pattern": ".*" + } + ], + "timeframes": false, + "visibility": { + "type": "hidden" + } +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/report.json b/plugins/Checkly/v1/dataStreams/report.json new file mode 100644 index 0000000..0d943c4 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/report.json @@ -0,0 +1,101 @@ +{ + "name": "report", + "displayName": "Summary – Report", + "baseDataSourceName": "httpRequestUnscoped", + "tags": [ + "Summary" + ], + "ui": [ + { + "name": "tags", + "type": "autocomplete", + "label": "Filter by tag", + "validation": { + "required": false + }, + "placeholder": "tag", + "isMulti": true, + "defaultValue": [], + "allowCustomValues": true + } + ], + "timeframes": true, + "config": { + "httpMethod": "get", + "paging": { + "mode": "none" + }, + "expandInnerObjects": true, + "endpointPath": "reporting", + "getArgs": [ + { + "key": "from", + "value": "{{timeframe.unixStart}}" + }, + { + "key": "to", + "value": "{{timeframe.unixEnd}}" + }, + { + "key": "filterByTags", + "value": "{{tags}}" + } + ], + "headers": [] + }, + "metadata": [ + { + "shape": "string", + "name": "name", + "sourceId": "checkId", + "sourceType": "check" + }, + { + "shape": "string", + "name": "checkId" + }, + { + "shape": [ + "percent", + { + "decimalPlaces": 2, + "asZeroToOne": false + } + ], + "name": "aggregate.successRatio" + }, + { + "shape": [ + "milliseconds", + { + "formatDuration": false, + "decimalPlaces": 0 + } + ], + "name": "aggregate.avg" + }, + { + "shape": [ + "milliseconds", + { + "formatDuration": false, + "decimalPlaces": 0 + } + ], + "name": "aggregate.p95" + }, + { + "shape": [ + "milliseconds", + { + "formatDuration": false, + "decimalPlaces": 0 + } + ], + "name": "aggregate.p99" + }, + { + "pattern": ".*" + } + ] +} \ No newline at end of file diff --git a/plugins/Checkly/v1/dataStreams/scripts/analytics-post.js b/plugins/Checkly/v1/dataStreams/scripts/analytics-post.js new file mode 100644 index 0000000..a778526 --- /dev/null +++ b/plugins/Checkly/v1/dataStreams/scripts/analytics-post.js @@ -0,0 +1,9 @@ +result = _.flatMap(data.series, s => { + return s.data.map(d => { + return { + name: data.name, + checkId: data.checkId, + ...d + } + }); +}); \ No newline at end of file diff --git a/plugins/Checkly/v1/defaultContent/Analytics/manifest.json b/plugins/Checkly/v1/defaultContent/Analytics/manifest.json new file mode 100644 index 0000000..f0e47d5 --- /dev/null +++ b/plugins/Checkly/v1/defaultContent/Analytics/manifest.json @@ -0,0 +1,8 @@ +{ + "items": [ + { + "name": "urlMonitor", + "type": "dashboard" + } + ] +} \ No newline at end of file diff --git a/plugins/Checkly/v1/defaultContent/Analytics/urlMonitor.dash.json b/plugins/Checkly/v1/defaultContent/Analytics/urlMonitor.dash.json new file mode 100644 index 0000000..1a5c0c5 --- /dev/null +++ b/plugins/Checkly/v1/defaultContent/Analytics/urlMonitor.dash.json @@ -0,0 +1,569 @@ +{ + "name": "URL Monitor", + "schemaVersion": "1.5", + "variables": [ + "{{variables.[URL Check]}}" + ], + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 0, + "i": "4827604a-b996-425b-a817-f6bbb40bbdb3", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "availability" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Availability", + "visualisation": { + "type": "data-stream-gauge", + "config": { + "data-stream-gauge": { + "value": { + "type": "mean", + "columns": [ + "availability" + ] + }, + "minimum": 0, + "maximum": 100 + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 1, + "y": 0, + "i": "fb48ccec-e88d-43f5-ac58-c0062bf57fbe", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "responseTime_avg" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 0, + "formatDuration": false + } + ], + "name": "responseTime_avg" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Response Time Avg", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "responseTime_avg", + "comparisonColumn": "none", + "label": "ms" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 2, + "y": 0, + "i": "e5fd9f27-55d8-4539-869a-a1dcd486bb49", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "responseTime_p95" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 0, + "formatDuration": false + } + ], + "name": "responseTime_p95" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Response Time P95", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "responseTime_p95", + "comparisonColumn": "none", + "label": "ms" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 3, + "y": 0, + "i": "5ee52a14-163b-4b9c-8e80-f79ccbd64c58", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "responseTime_p99" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 0, + "formatDuration": false + } + ], + "name": "responseTime_p99" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Response Time P99", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "responseTime_p99", + "comparisonColumn": "none", + "label": "ms" + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 2, + "i": "dcd6150e-ca99-4dd2-bb17-cdd541c94514", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "responseTime" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 2, + "formatDuration": false + } + ], + "name": "responseTime" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Response Time", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "name", + "xAxisColumn": "startedAt", + "yAxisColumn": [ + "responseTime" + ] + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 4, + "i": "f0b422d1-6dc5-4fc7-a284-267b872cb341", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "dns" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 2, + "formatDuration": false + } + ], + "name": "dns" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "DNS", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "name", + "xAxisColumn": "startedAt", + "yAxisColumn": [ + "dns" + ] + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 6, + "i": "b3279e80-807d-492f-b875-097f0ecb3c10", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "tcp" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 2, + "formatDuration": false + } + ], + "name": "tcp" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "TCP", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "name", + "xAxisColumn": "startedAt", + "yAxisColumn": [ + "tcp" + ] + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 8, + "i": "7ad155ff-4d37-4be0-8fa4-c2bb7c9e6c69", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "firstByte" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 2, + "formatDuration": false + } + ], + "name": "firstByte" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "First Byte", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "name", + "xAxisColumn": "startedAt", + "yAxisColumn": [ + "firstByte" + ] + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 10, + "i": "a2722ae8-cc71-4f12-8845-cdc8acdd92ae", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "download" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 2, + "formatDuration": false + } + ], + "name": "download" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Download", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "name", + "xAxisColumn": "startedAt", + "yAxisColumn": [ + "download" + ] + } + } + } + } + }, + { + "static": false, + "w": 4, + "moved": false, + "h": 2, + "x": 0, + "y": 12, + "i": "35612d03-2136-413b-bef5-81395daf1087", + "z": 0, + "config": { + "variables": [ + "{{variables.[URL Check]}}" + ], + "dataStream": { + "name": "analyticsUrlMonitors", + "dataSourceConfig": { + "metric": "wait" + }, + "id": "{{dataStreams.analyticsUrlMonitors}}", + "metadata": [ + { + "shape": [ + "milliseconds", + { + "decimalPlaces": 2, + "formatDuration": false + } + ], + "name": "wait" + } + ] + }, + "scope": { + "variable": "{{variables.[URL Check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[URL Checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Wait", + "visualisation": { + "type": "data-stream-line-graph", + "config": { + "data-stream-line-graph": { + "seriesColumn": "name", + "xAxisColumn": "startedAt", + "yAxisColumn": [ + "wait" + ] + } + } + } + } + } + ], + "version": 66, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Checkly/v1/defaultContent/checkDetails.dash.json b/plugins/Checkly/v1/defaultContent/checkDetails.dash.json new file mode 100644 index 0000000..dea4f8a --- /dev/null +++ b/plugins/Checkly/v1/defaultContent/checkDetails.dash.json @@ -0,0 +1,160 @@ +{ + "name": "Check Details", + "schemaVersion": "1.5", + "variables": ["{{variables.[All check]}}"], + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "static": false, + "w": 4, + "moved": false, + "h": 1, + "x": 0, + "y": 0, + "i": "9eb2f317-b364-4e7f-a592-93c616550bbe", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All check]}}" + ], + "dataStream": { + "name": "checkStatusSingle", + "id": "{{dataStreams.checkStatusSingle}}" + }, + "scope": { + "variable": "{{variables.[All check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Check – Status", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "status", + "linkColumn": "name", + "labelColumn": "name" + } + } + } + } + }, + { + "static": false, + "w": 1, + "moved": false, + "h": 2, + "x": 0, + "y": 1, + "i": "1059ca06-d246-4d76-b2f0-71893e96aad3", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All check]}}" + ], + "dataStream": { + "name": "checkStatusSingle", + "metadata": [ + { + "shape": [ + "number", + { + "decimalPlaces": 0 + } + ], + "name": "sslDaysRemaining" + } + ], + "id": "{{dataStreams.checkStatusSingle}}" + }, + "scope": { + "variable": "{{variables.[All check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "SSL Days Remaining", + "visualisation": { + "type": "data-stream-scalar", + "config": { + "data-stream-scalar": { + "value": "sslDaysRemaining", + "comparisonColumn": "none" + } + } + } + } + }, + { + "static": false, + "w": 3, + "moved": false, + "h": 2, + "x": 1, + "y": 1, + "i": "32a83189-da37-4a9f-89ca-0d5d470fecc2", + "z": 0, + "config": { + "timeframe": "none", + "variables": [ + "{{variables.[All check]}}" + ], + "dataStream": { + "name": "checkStatusSingle", + "id": "{{dataStreams.checkStatusSingle}}" + }, + "scope": { + "variable": "{{variables.[All check]}}", + "workspace": "{{workspaceId}}", + "scope": "{{scopes.[All checks]}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Check – Status", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "checkId", + "created_at", + "updated_at" + ], + "hiddenColumns": [ + "hasErrors", + "hasFailures", + "longestRun", + "shortestRun", + "lastRunLocation", + "lastCheckRunId", + "sslDaysRemaining", + "isDegraded", + "status" + ], + "transpose": true + } + } + } + } + } + ], + "version": 14, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Checkly/v1/defaultContent/manifest.json b/plugins/Checkly/v1/defaultContent/manifest.json new file mode 100644 index 0000000..bfcddf4 --- /dev/null +++ b/plugins/Checkly/v1/defaultContent/manifest.json @@ -0,0 +1,16 @@ +{ + "items": [ + { + "name": "summary", + "type": "dashboard" + }, + { + "name": "checkDetails", + "type": "dashboard" + }, + { + "name": "Analytics", + "type": "folder" + } + ] +} \ No newline at end of file diff --git a/plugins/Checkly/v1/defaultContent/scopes.json b/plugins/Checkly/v1/defaultContent/scopes.json new file mode 100644 index 0000000..bbb96a9 --- /dev/null +++ b/plugins/Checkly/v1/defaultContent/scopes.json @@ -0,0 +1,42 @@ +[ + { + "name": "All checks", + "matches": { + "sourceType": { + "type": "oneOf", + "values": [ + "check" + ] + } + }, + "variable": { + "name": "All check", + "type": "object", + "default": "none", + "allowMultipleSelection": false + } + }, + { + "name": "URL Checks", + "matches": { + "sourceType": { + "type": "oneOf", + "values": [ + "check" + ] + }, + "checkType": { + "type": "oneOf", + "values": [ + "URL" + ] + } + }, + "variable": { + "name": "URL Check", + "type": "object", + "default": "none", + "allowMultipleSelection": false + } + } +] \ No newline at end of file diff --git a/plugins/Checkly/v1/defaultContent/summary.dash.json b/plugins/Checkly/v1/defaultContent/summary.dash.json new file mode 100644 index 0000000..725c9d2 --- /dev/null +++ b/plugins/Checkly/v1/defaultContent/summary.dash.json @@ -0,0 +1,115 @@ +{ + "name": "Summary", + "schemaVersion": "1.5", + "dashboard": { + "_type": "layout/grid", + "contents": [ + { + "x": 0, + "h": 2, + "i": "9fc6dfc3-47e1-46e7-ac56-8c9e000721ee", + "y": 0, + "config": { + "timeframe": "none", + "dataStream": { + "name": "alerts", + "id": "{{dataStreams.alerts}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Alerts", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [], + "hiddenColumns": [] + } + } + } + }, + "w": 4 + }, + { + "x": 0, + "h": 2, + "i": "1ca44b16-3e26-4a44-ad91-b6b0eaa2d8c0", + "y": 4, + "config": { + "dataStream": { + "name": "report", + "dataSourceConfig": { + "tags": [] + }, + "id": "{{dataStreams.report}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Summary – Report", + "visualisation": { + "type": "data-stream-table", + "config": { + "data-stream-table": { + "columnOrder": [ + "name", + "aggregate.successRatio", + "aggregate.avg", + "aggregate.p95", + "aggregate.p99" + ], + "hiddenColumns": [ + "tags.0", + "deactivated", + "checkType", + "checkId" + ] + } + } + } + }, + "w": 4 + }, + { + "x": 0, + "h": 2, + "i": "4a571ee9-0c5a-4840-ae4a-2695c288847e", + "y": 2, + "config": { + "timeframe": "none", + "dataStream": { + "name": "checkStatus", + "id": "{{dataStreams.checkStatus}}", + "pluginConfigId": "{{configId}}" + }, + "_type": "tile/data-stream", + "description": "", + "activePluginConfigIds": [ + "{{configId}}" + ], + "title": "Summary – Status", + "visualisation": { + "type": "data-stream-blocks", + "config": { + "data-stream-blocks": { + "stateColumn": "status", + "linkColumn": "name", + "labelColumn": "name" + } + } + } + }, + "w": 4 + } + ], + "version": 11, + "columns": 4 + } +} \ No newline at end of file diff --git a/plugins/Checkly/v1/docs/setup.md b/plugins/Checkly/v1/docs/setup.md new file mode 100644 index 0000000..a28342d --- /dev/null +++ b/plugins/Checkly/v1/docs/setup.md @@ -0,0 +1,15 @@ +# Before you start + +## Create an API Key + +The Checkly data source authenticates using an API key. + +To create an API key, go to Checkly > User settings > API keys. + +Create an API key and copy the value. + +## Find your Account ID + +The API key page also shows your Account ID in the curl example. + +Alternatively, your Account ID can be found in Account Settings > General or in the Checkly URL. \ No newline at end of file diff --git a/plugins/Checkly/v1/icon.png b/plugins/Checkly/v1/icon.png new file mode 100644 index 0000000..cb05cb1 Binary files /dev/null and b/plugins/Checkly/v1/icon.png differ diff --git a/plugins/Checkly/v1/indexDefinitions/default.json b/plugins/Checkly/v1/indexDefinitions/default.json new file mode 100644 index 0000000..94eadab --- /dev/null +++ b/plugins/Checkly/v1/indexDefinitions/default.json @@ -0,0 +1,20 @@ +{ + "steps": [ + { + "name": "checks", + "dataStream": { + "name": "checks" + }, + "timeframe": "none", + "objectMapping": { + "id": "id", + "name": "name", + "type": { "value": "check" }, + "properties": [ + "checkType", + { "checkId": "id" } + ] + } + } + ] +} diff --git a/plugins/Checkly/v1/metadata.json b/plugins/Checkly/v1/metadata.json new file mode 100644 index 0000000..e3598b4 --- /dev/null +++ b/plugins/Checkly/v1/metadata.json @@ -0,0 +1,44 @@ +{ + "name": "checkly", + "displayName": "Checkly", + "version": "1.0.0", + "author": { + "name": "@agoodthing.org.uk", + "type": "community" + }, + "description": "Integrate Checkly (checklyhq.com) synthetic monitoring data into your dashboards.", + "category": "Monitoring", + "type": "cloud", + "schemaVersion": "2.0", + "base": { + "plugin": "WebAPI", + "majorVersion": "1", + "config": { + "authMode": "none", + "headers": [ + { + "value": "{{accountId}}", + "key": "X-Checkly-Account" + }, + { + "value": "Bearer {{apiKey}}", + "key": "Authorization" + } + ], + "queryArgs": [], + "baseUrl": "https://api.checklyhq.com/v1/" + } + }, + "links": [ + { + "category": "documentation", + "url": "https://github.com/squaredup/plugins/blob/main/plugins/Checkly/v1/docs/setup.md", + "label": "Help adding this plugin" + }, + { + "category": "source", + "url": "https://github.com/squaredup/plugins/tree/main/plugins/Checkly/v1", + "label": "Repository" + } + ] +} \ No newline at end of file diff --git a/plugins/Checkly/v1/ui.json b/plugins/Checkly/v1/ui.json new file mode 100644 index 0000000..35b07cb --- /dev/null +++ b/plugins/Checkly/v1/ui.json @@ -0,0 +1,20 @@ +[ + { + "type": "text", + "name": "accountId", + "label": "Account ID", + "validation": { + "required": true + }, + "placeholder": "Enter Account ID" + }, + { + "type": "password", + "name": "apiKey", + "label": "API key", + "validation": { + "required": true + }, + "placeholder": "Enter API Key" + } +]