From 8f1c23a13337c1048574860b933675352c866936 Mon Sep 17 00:00:00 2001 From: Dave Clarke Date: Thu, 15 Oct 2026 12:30:29 +0100 Subject: [PATCH 1/3] Remove plugin-declared Ignore certificate errors fields SquaredUp now adds an Ignore certificate errors toggle to every plugin built on WebAPI, unless the plugin declares the field or sets the key in base.config. Ten plugins still declared their own checkbox, so they showed it instead of the platform toggle. Remove the ui.json field and the base.config mapping together (leaving the mapping would stop the platform adding its toggle), and bump each plugin's patch version. Stored data sources keep their value because the toggle uses the same config key. Phare keeps its literal false opt-out. Co-Authored-By: Claude Opus 5.5 --- plugins/EcoStruxureIT-DCE/v1/docs/README.md | 4 ++-- plugins/EcoStruxureIT-DCE/v1/metadata.json | 3 +-- plugins/EcoStruxureIT-DCE/v1/ui.json | 6 ------ plugins/Healthchecks.io/v1/metadata.json | 5 ++--- plugins/Healthchecks.io/v1/ui.json | 7 ------- plugins/Ivanti-ITSM/v1/metadata.json | 5 ++--- plugins/Ivanti-ITSM/v1/ui.json | 6 ------ plugins/Jaeger/v1/metadata.json | 5 ++--- plugins/Jaeger/v1/ui.json | 7 ------- plugins/Kubernetes/v1/metadata.json | 2 +- plugins/Kubernetes/v1/ui.json | 6 ------ plugins/NetBox/v1/docs/README.md | 2 +- plugins/NetBox/v1/metadata.json | 5 ++--- plugins/NetBox/v1/ui.json | 6 ------ plugins/OpenSearch/v1/metadata.json | 5 ++--- plugins/OpenSearch/v1/ui.json | 6 ------ plugins/ProxmoxVE/v1/metadata.json | 2 +- plugins/ProxmoxVE/v1/ui.json | 6 ------ plugins/TeamDynamix/v1/metadata.json | 2 +- plugins/TeamDynamix/v1/ui.json | 6 ------ plugins/VeeamBackupReplication/v1/metadata.json | 3 +-- plugins/VeeamBackupReplication/v1/ui.json | 6 ------ 22 files changed, 18 insertions(+), 87 deletions(-) diff --git a/plugins/EcoStruxureIT-DCE/v1/docs/README.md b/plugins/EcoStruxureIT-DCE/v1/docs/README.md index f42a08d9..497d4060 100644 --- a/plugins/EcoStruxureIT-DCE/v1/docs/README.md +++ b/plugins/EcoStruxureIT-DCE/v1/docs/README.md @@ -9,7 +9,7 @@ You will need a Data Center Expert **user account** and network access to the se 1. Sign in to the Data Center Expert client as an administrator and create (or choose) a user for SquaredUp. Give it access to the **device groups** you want to monitor. The plugin only reads data, so a view-only user is enough. 2. Check the REST API is available by browsing to `https:///isxg/dce-rest-api.html`. You should see the **DCE REST API UI** page. Optionally, click **Authorize** and sign in with the new user to confirm the credentials work. 3. In SquaredUp, enter the server address in **Server URL**, and the user's credentials in **Username** and **Password**. -4. If the server uses a self-signed certificate (the default for Data Center Expert), tick **Ignore certificate errors**. +4. If the server uses a self-signed certificate (the default for Data Center Expert), turn on **Ignore certificate errors**. ## Configuration fields @@ -18,7 +18,7 @@ You will need a Data Center Expert **user account** and network access to the se | **Server URL** | Address of the Data Center Expert server, for example `https://dce.example.com`. The `/isxg` REST API path is added automatically. | The address you use to open the Data Center Expert web interface. | Yes | | **Username** | Data Center Expert user the plugin signs in as. | Data Center Expert client → user management. | Yes | | **Password** | Password for that user. | Set when the user is created. | Yes | -| **Ignore certificate errors** | Skips HTTPS certificate checks. | Tick this when the server uses a self-signed certificate. | No | +| **Ignore certificate errors** | Skips HTTPS certificate checks. | Turn this on when the server uses a self-signed certificate. | No | | **OAuth client ID** | OAuth client sent when requesting an access token. Leave blank unless sign-in fails (see below). | See [If sign-in fails](#if-sign-in-fails). | No | | **OAuth client secret** | Secret for the OAuth client above. | See [If sign-in fails](#if-sign-in-fails). | No | diff --git a/plugins/EcoStruxureIT-DCE/v1/metadata.json b/plugins/EcoStruxureIT-DCE/v1/metadata.json index 74d6af6a..d17ef699 100644 --- a/plugins/EcoStruxureIT-DCE/v1/metadata.json +++ b/plugins/EcoStruxureIT-DCE/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "ecostruxure-it-dce", "displayName": "EcoStruxure IT Data Center Expert", - "version": "1.0.0", + "version": "1.0.1", "author": { "name": "@shawn149", "type": "community" @@ -55,7 +55,6 @@ "oauth2Scope": "", "oauth2TokenExtraArgs": [], "oauth2TokenExtraHeaders": [], - "ignoreCertificateErrors": "{{ignoreCertificateErrors}}", "headers": [ { "key": "Accept", diff --git a/plugins/EcoStruxureIT-DCE/v1/ui.json b/plugins/EcoStruxureIT-DCE/v1/ui.json index e09dbf4d..7ad9d4bd 100644 --- a/plugins/EcoStruxureIT-DCE/v1/ui.json +++ b/plugins/EcoStruxureIT-DCE/v1/ui.json @@ -32,12 +32,6 @@ "required": true } }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable when the Data Center Expert server uses a self-signed certificate." - }, { "type": "fieldGroup", "name": "advanced", diff --git a/plugins/Healthchecks.io/v1/metadata.json b/plugins/Healthchecks.io/v1/metadata.json index c22b35f7..7791071e 100644 --- a/plugins/Healthchecks.io/v1/metadata.json +++ b/plugins/Healthchecks.io/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "healthchecks-io", "displayName": "Healthchecks.io", - "version": "1.0.0", + "version": "1.0.1", "author": { "name": "@adamkinniburgh", "type": "community" @@ -52,8 +52,7 @@ "value": "application/json" } ], - "queryArgs": [], - "ignoreCertificateErrors": "{{ typeof ignoreCertificateErrors !== 'undefined' && ignoreCertificateErrors === true }}" + "queryArgs": [] } } } diff --git a/plugins/Healthchecks.io/v1/ui.json b/plugins/Healthchecks.io/v1/ui.json index be7f0b6c..759f894a 100644 --- a/plugins/Healthchecks.io/v1/ui.json +++ b/plugins/Healthchecks.io/v1/ui.json @@ -23,12 +23,5 @@ "message": "Enter the full address of the Healthchecks instance, e.g. https://healthchecks.example.com" } } - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "defaultValue": false, - "help": "Enable when connecting to a self-hosted instance that uses a self-signed or private CA certificate." } ] diff --git a/plugins/Ivanti-ITSM/v1/metadata.json b/plugins/Ivanti-ITSM/v1/metadata.json index 4cba21a1..97574ce5 100644 --- a/plugins/Ivanti-ITSM/v1/metadata.json +++ b/plugins/Ivanti-ITSM/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "ivanti-itsm", "displayName": "Ivanti ITSM", - "version": "1.0.0", + "version": "1.0.1", "author": { "name": "@shawn149", "type": "community" @@ -58,8 +58,7 @@ "value": "application/json" } ], - "queryArgs": [], - "ignoreCertificateErrors": "{{ignoreCertificateErrors}}" + "queryArgs": [] } } } diff --git a/plugins/Ivanti-ITSM/v1/ui.json b/plugins/Ivanti-ITSM/v1/ui.json index 38f6107f..b95ddc33 100644 --- a/plugins/Ivanti-ITSM/v1/ui.json +++ b/plugins/Ivanti-ITSM/v1/ui.json @@ -70,12 +70,6 @@ "label": "Configuration item filter", "placeholder": "Status eq 'Active'", "help": "Narrows which configuration items are imported, using the OData `$filter` syntax. Leave empty to import the whole CMDB." - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable only for an on-premises instance presenting a self-signed or otherwise untrusted certificate." } ] } diff --git a/plugins/Jaeger/v1/metadata.json b/plugins/Jaeger/v1/metadata.json index 14acdff9..e5284378 100644 --- a/plugins/Jaeger/v1/metadata.json +++ b/plugins/Jaeger/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "jaeger", "displayName": "Jaeger", - "version": "1.1.0", + "version": "1.1.1", "author": { "name": "SquaredUp Labs", "type": "labs" @@ -47,8 +47,7 @@ "config": { "headers": [], "authMode": "none", - "baseUrl": "{{url}}", - "ignoreCertificateErrors": "{{ignoreCertificateErrors}}" + "baseUrl": "{{url}}" } } } diff --git a/plugins/Jaeger/v1/ui.json b/plugins/Jaeger/v1/ui.json index 0d0905ee..795431a0 100644 --- a/plugins/Jaeger/v1/ui.json +++ b/plugins/Jaeger/v1/ui.json @@ -9,13 +9,6 @@ "required": true } }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "defaultValue": false, - "help": "Enable when connecting to a Jaeger instance that uses a self-signed certificate." - }, { "type": "radio", "name": "dependencyStorage", diff --git a/plugins/Kubernetes/v1/metadata.json b/plugins/Kubernetes/v1/metadata.json index d4bae04d..cc6b95b7 100644 --- a/plugins/Kubernetes/v1/metadata.json +++ b/plugins/Kubernetes/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "kubernetes", "displayName": "Kubernetes", - "version": "1.0.0", + "version": "1.0.1", "author": { "name": "SquaredUp Labs", "type": "labs" diff --git a/plugins/Kubernetes/v1/ui.json b/plugins/Kubernetes/v1/ui.json index 5681c8aa..803e616a 100644 --- a/plugins/Kubernetes/v1/ui.json +++ b/plugins/Kubernetes/v1/ui.json @@ -18,11 +18,5 @@ "validation": { "required": true } - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable when connecting to a cluster with a self-signed API server certificate (e.g. a local kind/minikube cluster)." } ] diff --git a/plugins/NetBox/v1/docs/README.md b/plugins/NetBox/v1/docs/README.md index 1b52d67e..4548479c 100644 --- a/plugins/NetBox/v1/docs/README.md +++ b/plugins/NetBox/v1/docs/README.md @@ -22,7 +22,7 @@ The token inherits the permissions of the user that owns it. Objects the user ca | **Token version** | The NetBox API token format. **v2** sends `Authorization: Bearer nbt_.`. **v1** sends `Authorization: Token `. | v2 tokens require NetBox 4.5 or later. | Yes | | **Token** | The API token. For v2, paste the full value NetBox shows (`Bearer nbt_.`). The `Bearer` prefix is optional. For v1, paste the 40-character token. | NetBox → user menu → **API Tokens**. | Yes | | **Key** | The public key of a v2 token. Only needed if **Token** contains just the secret, without the `nbt_.` prefix. Shown only when **Token version** is v2. | NetBox → user menu → **API Tokens**. | No | -| **Ignore certificate errors** | Skips TLS certificate validation. Only tick this for self-managed instances that use a self-signed or private CA certificate (common on new NetBox Enterprise installs). | n/a | No | +| **Ignore certificate errors** | Skips TLS certificate validation. Only turn this on for self-managed instances that use a self-signed or private CA certificate (common on new NetBox Enterprise installs). | n/a | No | When you save, the plugin checks two things: 1. It calls the NetBox status endpoint. A failure here means the address is unreachable, the token is invalid, expired or disabled, or the token's **Allowed IPs** blocks SquaredUp. diff --git a/plugins/NetBox/v1/metadata.json b/plugins/NetBox/v1/metadata.json index 921888b8..c1c029bf 100644 --- a/plugins/NetBox/v1/metadata.json +++ b/plugins/NetBox/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "netbox", "displayName": "NetBox", - "version": "1.0.0", + "version": "1.0.1", "author": { "name": "@shawn149", "type": "community" @@ -62,8 +62,7 @@ "value": "application/json" } ], - "queryArgs": [], - "ignoreCertificateErrors": "{{ignoreCertificateErrors}}" + "queryArgs": [] } } } diff --git a/plugins/NetBox/v1/ui.json b/plugins/NetBox/v1/ui.json index 1cda6ecd..acda4328 100644 --- a/plugins/NetBox/v1/ui.json +++ b/plugins/NetBox/v1/ui.json @@ -62,11 +62,5 @@ "validation": { "required": true } } ] - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable when connecting to a self-managed NetBox instance that uses a self-signed or private CA certificate." } ] diff --git a/plugins/OpenSearch/v1/metadata.json b/plugins/OpenSearch/v1/metadata.json index bd6419bf..d6b8729f 100644 --- a/plugins/OpenSearch/v1/metadata.json +++ b/plugins/OpenSearch/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "open-search", "displayName": "OpenSearch", - "version": "1.0.4", + "version": "1.0.5", "author": { "name": "SquaredUp Labs", "type": "labs" @@ -26,8 +26,7 @@ "value": "application/json" } ], - "baseUrl": "{{instanceUrl}}", - "ignoreCertificateErrors": "{{ignoreCertificateErrors}}" + "baseUrl": "{{instanceUrl}}" } }, "links": [ diff --git a/plugins/OpenSearch/v1/ui.json b/plugins/OpenSearch/v1/ui.json index 8ec9c709..60ef90e6 100644 --- a/plugins/OpenSearch/v1/ui.json +++ b/plugins/OpenSearch/v1/ui.json @@ -48,11 +48,5 @@ "placeholder": "Enter a password" } ] - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Ignore certificate errors when connecting to an OpenSearch instance with a self-signed certificate" } ] diff --git a/plugins/ProxmoxVE/v1/metadata.json b/plugins/ProxmoxVE/v1/metadata.json index 8f0613b8..917a4b4a 100644 --- a/plugins/ProxmoxVE/v1/metadata.json +++ b/plugins/ProxmoxVE/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "proxmox-ve", "displayName": "Proxmox VE", - "version": "1.3.1", + "version": "1.3.2", "author": { "name": "@iBePixel", "type": "community" }, "description": "Monitor your Proxmox VE cluster and Proxmox Backup Server — import nodes, VMs, containers, backup datastores, and backup groups, and track resource utilisation and backup health.", "category": "Infrastructure", diff --git a/plugins/ProxmoxVE/v1/ui.json b/plugins/ProxmoxVE/v1/ui.json index 3033c7f8..0590bc7b 100644 --- a/plugins/ProxmoxVE/v1/ui.json +++ b/plugins/ProxmoxVE/v1/ui.json @@ -23,12 +23,6 @@ "placeholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "validation": { "required": true } }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable when connecting to a Proxmox VE instance with a self-signed certificate." - }, { "type": "toggle", "name": "monitorBackupServer", diff --git a/plugins/TeamDynamix/v1/metadata.json b/plugins/TeamDynamix/v1/metadata.json index 19e5bcfe..a9a188d0 100644 --- a/plugins/TeamDynamix/v1/metadata.json +++ b/plugins/TeamDynamix/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "teamdynamix", "displayName": "TeamDynamix", - "version": "1.0.2", + "version": "1.0.3", "author": { "name": "@shawn149", "type": "community" diff --git a/plugins/TeamDynamix/v1/ui.json b/plugins/TeamDynamix/v1/ui.json index 19d4c0c4..dc7db6f6 100644 --- a/plugins/TeamDynamix/v1/ui.json +++ b/plugins/TeamDynamix/v1/ui.json @@ -53,12 +53,6 @@ "max": 10000, "valueAsNumber": true } - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable only if the Web API endpoint presents a self-signed or otherwise untrusted certificate. A self-hosted instance can still have a properly trusted certificate and should not need this." } ] } diff --git a/plugins/VeeamBackupReplication/v1/metadata.json b/plugins/VeeamBackupReplication/v1/metadata.json index 01c77183..4c0c8c83 100644 --- a/plugins/VeeamBackupReplication/v1/metadata.json +++ b/plugins/VeeamBackupReplication/v1/metadata.json @@ -1,7 +1,7 @@ { "name": "veeam-backup-replication", "displayName": "Veeam Backup & Replication", - "version": "1.0.1", + "version": "1.0.2", "author": { "name": "SquaredUp Labs", "type": "labs" @@ -39,7 +39,6 @@ "oauth2PasswordGrantUserName": "{{username}}", "oauth2PasswordGrantPassword": "{{password}}", "oauth2Scope": "", - "ignoreCertificateErrors": "{{ignoreCertificateErrors}}", "oauth2TokenExtraHeaders": [ { "key": "x-api-version", diff --git a/plugins/VeeamBackupReplication/v1/ui.json b/plugins/VeeamBackupReplication/v1/ui.json index 5b1eb914..f8128069 100644 --- a/plugins/VeeamBackupReplication/v1/ui.json +++ b/plugins/VeeamBackupReplication/v1/ui.json @@ -53,11 +53,5 @@ { "value": "1.1-rev0", "label": "1.1-rev0 (Veeam 12.0)" } ] } - }, - { - "type": "checkbox", - "name": "ignoreCertificateErrors", - "label": "Ignore certificate errors", - "help": "Enable when connecting to a server that uses a self-signed certificate." } ] From c01099c870ad9743a49fd13b4523d67a7dc228c1 Mon Sep 17 00:00:00 2001 From: Dave Clarke Date: Thu, 15 Oct 2026 12:30:29 +0100 Subject: [PATCH 2/3] Explain removing an old Ignore certificate errors field Tell build-plugin to remove the ui.json field and base.config mapping together when editing a plugin that still has one, and ask reviewers to flag either in new plugins. Co-Authored-By: Claude Opus 5.5 --- .claude/skills/build-plugin/references/ui.md | 2 +- REVIEW.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.claude/skills/build-plugin/references/ui.md b/.claude/skills/build-plugin/references/ui.md index 7a67ad20..3cc92768 100644 --- a/.claude/skills/build-plugin/references/ui.md +++ b/.claude/skills/build-plugin/references/ui.md @@ -70,7 +70,7 @@ A **data stream** has its own `ui` array — the **tile-editor parameters** show } ``` -**`ignoreCertificateErrors`** — don't add this. The platform adds an "Ignore certificate errors" toggle to every plugin built on WebAPI, and passes the value to the WebAPI base plugin, so you don't need a ui.json field or a `base.config` mapping. +**`ignoreCertificateErrors`** — don't add this. The platform adds an "Ignore certificate errors" toggle to every plugin built on WebAPI, and passes the value to the WebAPI base plugin, so you don't need a ui.json field or a `base.config` mapping. When you change an existing plugin that still has its own field, remove the ui.json field and any `"ignoreCertificateErrors": "{{...}}"` mapping in `base.config` together. Removing only the field leaves the mapping, which stops the platform adding its toggle, so the option disappears. Existing data sources keep their value, because the toggle uses the same config key. Declaring a field named `ignoreCertificateErrors`, or setting the key in `base.config`, stops the platform adding its toggle. This only hides the option on the form: a value the user supplies (for example through the API) still overrides `base.config`. So only do it for an API where offering the option makes no sense: diff --git a/REVIEW.md b/REVIEW.md index 95d6cf37..d53f0b38 100644 --- a/REVIEW.md +++ b/REVIEW.md @@ -67,6 +67,7 @@ When suggesting changes: - Generally prefer API tokens or OAuth where possible, flag usage of username/password unless the API offers no alternative. - Check that only strictly required fields are marked as `required: true`. Advanced options should never block first-time success. +- Flag any field named `ignoreCertificateErrors`, and any `ignoreCertificateErrors` mapping in `base.config` in metadata.json. The platform adds this toggle to every plugin built on WebAPI. The only exception is a literal `false` in `base.config`, which deliberately hides it. - For each field in the array: - displayName - First word uppercase, then lowercase (e.g. “Table name", or "API key"). Single value: singular. Multiple values: “(s)" (e.g. Tables name(s)). Do not use “you" “Your" in display names. Keep text neutral, concise, and descriptive. - name - Should typically be the camel-cased version of the displayName. From 336927f8f63f8afa3a8c2f58804466196a7067ae Mon Sep 17 00:00:00 2001 From: Dave Clarke Date: Thu, 15 Oct 2026 12:44:41 +0100 Subject: [PATCH 3/3] Update ui.md to clarify 'ignoreCertificateErrors' usage Clarified instructions regarding the 'ignoreCertificateErrors' field and its impact on plugin configuration. --- .claude/skills/build-plugin/references/ui.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.claude/skills/build-plugin/references/ui.md b/.claude/skills/build-plugin/references/ui.md index 3cc92768..c42d5707 100644 --- a/.claude/skills/build-plugin/references/ui.md +++ b/.claude/skills/build-plugin/references/ui.md @@ -70,9 +70,7 @@ A **data stream** has its own `ui` array — the **tile-editor parameters** show } ``` -**`ignoreCertificateErrors`** — don't add this. The platform adds an "Ignore certificate errors" toggle to every plugin built on WebAPI, and passes the value to the WebAPI base plugin, so you don't need a ui.json field or a `base.config` mapping. When you change an existing plugin that still has its own field, remove the ui.json field and any `"ignoreCertificateErrors": "{{...}}"` mapping in `base.config` together. Removing only the field leaves the mapping, which stops the platform adding its toggle, so the option disappears. Existing data sources keep their value, because the toggle uses the same config key. - -Declaring a field named `ignoreCertificateErrors`, or setting the key in `base.config`, stops the platform adding its toggle. This only hides the option on the form: a value the user supplies (for example through the API) still overrides `base.config`. So only do it for an API where offering the option makes no sense: +**`ignoreCertificateErrors`** — don't add this. The platform adds an "Ignore certificate errors" toggle to every plugin built on WebAPI, and passes the value to the WebAPI base plugin, so you don't need a ui.json field or a `base.config` mapping. Declaring a field named `ignoreCertificateErrors`, or setting the key in `base.config`, stops the platform adding its toggle. This only hides the option on the form: a value the user supplies (for example through the API) still overrides `base.config`. So only do it for an API where offering the option makes no sense: ```json "base": {