{"id":20445897,"url":"https://github.com/rapid7/icon-integrations-validators","last_synced_at":"2026-04-02T02:05:21.167Z","repository":{"id":38976685,"uuid":"192946795","full_name":"rapid7/icon-integrations-validators","owner":"rapid7","description":"Validator tooling for InsightConnection integrations","archived":false,"fork":false,"pushed_at":"2025-09-17T13:06:06.000Z","size":1563,"stargazers_count":8,"open_issues_count":3,"forks_count":2,"subscribers_count":56,"default_branch":"master","last_synced_at":"2025-10-20T04:43:39.012Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rapid7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-20T15:42:17.000Z","updated_at":"2025-09-17T13:04:15.000Z","dependencies_parsed_at":"2023-10-03T02:19:48.654Z","dependency_job_id":"9e83c928-dd0b-4c9c-8e4c-906062f3f540","html_url":"https://github.com/rapid7/icon-integrations-validators","commit_stats":null,"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"purl":"pkg:github/rapid7/icon-integrations-validators","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapid7%2Ficon-integrations-validators","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapid7%2Ficon-integrations-validators/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapid7%2Ficon-integrations-validators/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapid7%2Ficon-integrations-validators/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rapid7","download_url":"https://codeload.github.com/rapid7/icon-integrations-validators/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rapid7%2Ficon-integrations-validators/sbom","scorecard":{"id":762051,"data":{"date":"2025-08-11","repo":{"name":"github.com/rapid7/icon-integrations-validators","commit":"4889c00e7bf82a1460ffa368d8466069436bbad1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":1,"reason":"2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/markdown_lint.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi_prod_publish.yml:1","Warn: no topLevel permission defined: .github/workflows/pypi_test_publish.yml:1","Warn: no topLevel permission defined: .github/workflows/python_lint.yml:1","Warn: no topLevel permission defined: .github/workflows/unit_test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/markdown_lint.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/markdown_lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/markdown_lint.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/markdown_lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi_prod_publish.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/pypi_prod_publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi_prod_publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/pypi_prod_publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi_test_publish.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/pypi_test_publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pypi_test_publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/pypi_test_publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_lint.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/python_lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python_lint.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/python_lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_test.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/unit_test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit_test.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/rapid7/icon-integrations-validators/unit_test.yml/master?enable=pin","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_bad_docker_image/Dockerfile:1","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_dockerfile_apt_apk/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-38-slim-plugin:4 to rapid7/insightconnect-python-3-38-slim-plugin:4@sha256:40767f02134d5009cf4427661fdca2158d43955274e5665200ab451df4bdece2","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_enable_cache_true/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-38-slim-plugin:4 to rapid7/insightconnect-python-3-38-slim-plugin:4@sha256:40767f02134d5009cf4427661fdca2158d43955274e5665200ab451df4bdece2","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_system_command/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-38-slim-plugin:4 to rapid7/insightconnect-python-3-38-slim-plugin:4@sha256:40767f02134d5009cf4427661fdca2158d43955274e5665200ab451df4bdece2","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_user_root/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-38-slim-plugin:4 to rapid7/insightconnect-python-3-38-slim-plugin:4@sha256:40767f02134d5009cf4427661fdca2158d43955274e5665200ab451df4bdece2","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_no_required_key_in_output/Dockerfile:1: pin your Docker image by updating komand/python-pypy3-plugin:2 to komand/python-pypy3-plugin:2@sha256:0941f28773058511d0bda9328516f37fefe5ce4190d4bf6647aafcc0e3ad1a33","Warn: containerImage not pinned by hash: unit_test/plugin_examples/bad_plugin_validate_email/Dockerfile:1: pin your Docker image by updating komand/python-pypy3-plugin:2 to komand/python-pypy3-plugin:2@sha256:0941f28773058511d0bda9328516f37fefe5ce4190d4bf6647aafcc0e3ad1a33","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin/Dockerfile:1: pin your Docker image by updating komand/python-pypy3-plugin:2 to komand/python-pypy3-plugin:2@sha256:0941f28773058511d0bda9328516f37fefe5ce4190d4bf6647aafcc0e3ad1a33","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin_cloud_ready/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-slim-plugin:5 to rapid7/insightconnect-python-3-slim-plugin:5@sha256:cf366766d4ecb9ce7b61350e7d033d6727499df8b8d2da3974876082fb5659be","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin_validate_email/Dockerfile:1: pin your Docker image by updating komand/python-pypy3-plugin:2 to komand/python-pypy3-plugin:2@sha256:0941f28773058511d0bda9328516f37fefe5ce4190d4bf6647aafcc0e3ad1a33","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin_warning_keywords/Dockerfile:1: pin your Docker image by updating komand/python-pypy3-plugin:2 to komand/python-pypy3-plugin:2@sha256:0941f28773058511d0bda9328516f37fefe5ce4190d4bf6647aafcc0e3ad1a33","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin_with_cache/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-slim-plugin:latest to rapid7/insightconnect-python-3-slim-plugin:latest@sha256:ddcf05443adeb48950cdb917460523bf4b5e506b43719cfd911bdcdd807af269","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin_with_task/Dockerfile:1: pin your Docker image by updating rapid7/insightconnect-python-3-plugin:latest to rapid7/insightconnect-python-3-plugin:latest@sha256:020cef60cd38457196681609fd3e7f8cbc52b3c31eced26f3e89f5204a9cfeb5","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_plugin_with_task_sdk_not_latest/Dockerfile:1","Warn: containerImage not pinned by hash: unit_test/plugin_examples/good_test/Dockerfile:1: pin your Docker image by updating komand/python-3-37-plugin:3 to komand/python-3-37-plugin:3@sha256:cee6045be49499e14b7c7806cb0318003245d6d4c10ab10366066f64eb5beda7","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_bad_docker_image/Dockerfile:19","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_dockerfile_apt_apk/Dockerfile:19","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_enable_cache_true/Dockerfile:19","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_system_command/Dockerfile:19","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_cloud_ready_user_root/Dockerfile:19","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_no_required_key_in_output/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/bad_plugin_validate_email/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin_cloud_ready/Dockerfile:19","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin_validate_email/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin_warning_keywords/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin_with_cache/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin_with_task/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_plugin_with_task_sdk_not_latest/Dockerfile:17","Warn: pipCommand not pinned by hash: unit_test/plugin_examples/good_test/Dockerfile:19","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:15","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:16","Warn: pipCommand not pinned by hash: .github/workflows/pypi_prod_publish.yml:17","Warn: pipCommand not pinned by hash: .github/workflows/pypi_prod_publish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/pypi_test_publish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/pypi_test_publish.yml:19","Warn: pipCommand not pinned by hash: .github/workflows/python_lint.yml:15","Warn: pipCommand not pinned by hash: .github/workflows/unit_test.yml:15","Warn: pipCommand not pinned by hash: .github/workflows/unit_test.yml:16","Warn: pipCommand not pinned by hash: .github/workflows/unit_test.yml:17","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  15 containerImage dependencies pinned","Info:   0 out of  25 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T23:43:55.691Z","repository_id":38976685,"created_at":"2025-08-22T23:43:55.691Z","updated_at":"2025-08-22T23:43:55.691Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31294398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:43:37.129Z","status":"online","status_checked_at":"2026-04-02T02:00:08.535Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T10:15:37.489Z","updated_at":"2026-04-02T02:05:21.143Z","avatar_url":"https://github.com/rapid7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# InsightConnect Integrations Validators\n\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n![Markdown Lint](https://github.com/rapid7/icon-integrations-validators/workflows/Markdown%20Lint/badge.svg)\n![Unit testing](https://github.com/rapid7/icon-integrations-validators/workflows/Unit%20testing/badge.svg)\n\nTooling with a bundled suite of validator rules for\nensuring quality across\n[Rapid7 InsightConnect](https://www.rapid7.com/products/insightconnect/) integrations.\n\n## Installation\n\n```\npip install insightconnect-integrations-validators\n```\n\n## Use\n\nSimple!\n\n### Command\n\n```\nicon-validate my_plugin_directory/\n```\n\nor\n\n```\nicon-validate my_plugin_directory/ --all\n```\n\nto run entire set of validators used in our CI.\nOmitting `--all` is often helpful when developing.\n\n### Python\n\n```\nfrom icon_validator.validate import validate\n\n\nvalidate(\"/path/to/plugin/directory\")\n```\n\nor\n\n```\nvalidate(\"/path/to/plugin/directory\", run_all=True)\n```\n\nto simulate the `--all` flag.\n\n## Contributions\n\nContributions are welcome! This project utilizes [black](https://github.com/psf/black)\nand [pre-commit](https://pre-commit.com/) for handling code\nstyle. Simply follow the instructions for installing pre-commit and \nrun `pre-commit install` in the repository after cloning and you will\nbe on your way to contributing!\n\n## Changelog\n\n* 2.47.28 - `version_pin_validator` updated to better handle non-requirements\n* 2.47.27 - `SpecPropertiesValidator` - Update to allow `action_type` field in `components`\n* 2.47.26 - Update validators list for connector plugins | Update `HelpInputOutputValidator` to escape values | Update `VersionPinValidator` to address inline comments\n* 2.47.25 - `RunTimeValidator` - Update check for setup includes | `HelpValidator` Update to warn instead of raise validator issue for invalid name casing\n* 2.47.24 - `RunTimeValidator` - Updated SDK version validator for new Dockerfile structure\n* 2.47.23 - `RegenerationValidator` - Show file names of mismatched checksums\n* 2.47.22 - `VersionBumpValidator` - Skipping remote validation for newly created local plugins\n* 2.47.21 - `RuntimeValidator` - Fixed issue where validator failed if plugin contained a cache files\n* 2.47.20 - Bumping `requests` in requirements.txt and bumping `ldap` in the `version_pin_validator` requirements.txt\n* 2.47.19 - `VersionBumpValidator` - Fixed issue where validator failed if plugin contained no actions or triggers\n* 2.47.18 - `HelpInputOutputValidator` | `SpecPropertiesValidator` - Update to enable `placeholder` and `tooltip` validation | `RuntimeValidator` - Added SDK version validation\n* 2.47.17 - `SpecPropertiesValidator` - Added new excludeProduct field validator\n* 2.47.16 - `HelpInputOutputValidator` - Update error message from `icon-plugin` to `insight-plugin` | `DockerValidator` - Print full error message and change instances of `icon-plugin` to `insight-plugin`\n* 2.47.15 - `TitleValidator` - Change validator to print all issues rather than break on the first \n* 2.47.14 - `OutputValidator` - Fix issue where `schema.py` files from the venv folder were being validated\n* 2.47.13 - `HelpInputOutputValidator` - Fix validator to change single quotes to double quotes when an input field uses list values so that it does not break\n* 2.47.12 - `VersionBumpValidator` - update validation for connection versions| Updated `GitPython` to version 3.1.41.\n* 2.47.11 - Update PyYaml version to fix unrelated tooling installation bug.\n* 2.47.10 - `HelpInputOutputValidator` - Improved error messaging around invalid action/trigger/task headings\n* 2.47.9 - `DockerfileParentValidator` | `CloudReadyValidator` - update to support cloud plugins and SDK image with specified `--platform` flag | `VersionBumpValidator` - add validation for connection versions.\n* 2.47.8 - `DockerfileParentValidator` | `RuntimeValidator` - update supported SDK images | Updated `GitPython` to version 3.1.37\n* 2.47.7 - `ConfidentialValidator` - Changed email violation to a warning\n* 2.47.6 - Updated `GitPython` to version 3.1.32\n* 2.47.5 - Updated `requests` to version 2.31.0 | Updated `GitPython` to version 3.1.30\n* 2.47.4 - New help validator to handle `Custom Types` title\n* 2.47.3 - Fix HelpInputOutputValidator when output in plugin.spec.yaml not contain an example field | Fix validation when example contains list in object in HelpExampleValidator\n* 2.47.2 - Allow hyphens in WorkflowTitleValidator\n* 2.47.1 - Fix plugin spec properties validator for tasks\n* 2.47.0 - Add name validator to ensure plugin name conforms to standards\n* 2.46.4 - Fix InputOutputValidator so that it does not break on datetime input examples\n* 2.46.3 - Update version validator to check v2 api call\n* 2.46.2 - Fixed VersionValidator regex failing to validate x0.x.x semantic version strings\n* 2.46.1 - Add null variable check to example input validator\n* 2.46.0 - Add new help.md validator to ensure there are key features, links, and examples\n* 2.45.0 - Separated UseCaseValidator for workflows as plugins and workflows now have different usecase tags\n* 2.44.2 - Fixed (and tested) VersionBumpValidator on new plugin\n* 2.44.1 - Fixed VersionBumpValidator bug on new plugins\n* 2.44.0 - Update WorkflowTitleValidator to validate titles in `.icon` file\n* 2.43.2 - Fixed breaking change that caused VersionBumpValidator to not get remote changes, made code safer\n* 2.43.1 - Add GitPython dependency for using VersionBumpValidator\n* 2.43.0 - Add VersionBumpValidator to check if a major or minor version increment is needed\n* 2.42.0 - Add in WorkflowScreenshotValidator to check parenthesis in screenshot title\n* 2.41.1 - Exit with proper return codes when ran independently via CLI \n* 2.41.0 - Add SupportedVersionValidator\n* 2.40.0 - Add PythonScriptUseValidator for workflows\n* 2.39.0 - Add HelpExampleValidator | Improve EncodingValidator by printing all forbidden characters at one time\n* 2.38.0 - Remove LoggingValidator | Update dependency versions\n* 2.37.0 - Add UnapprovedKeywordsValidator | Add unit tests for AcronymValidator\n* 2.36.0 - Add CloudReadyValidator\n* 2.35.0 - Update DescriptionValidator to print list of missing description field | Update VersionPinValidator to not fail when `git+` is in requirements.txt\n* 2.34.0 - Fix issue where WorkflowParametersKeywordValidator was not being called\n* 2.33.0 - Update HelpValidator to identify duplicate headings | Update ConfidentialValidator to allow more e-mail examples\n* 2.32.0 - Fix problem when ExampleInputValidator fail if in `example` field are 0, False or None | Update WorkflowHelpPluginUtilizationValidator to not fail when plugin not in `help.md` and in `.icon` file\n* 2.31.0 - Update UseCaseValidator to print valid use cases | Update UseCaseValidator to identify duplicate use cases in keywords\n* 2.30.0 - Add WorkflowParametersKeywordValidator\n* 2.29.0 - Remove Workflow Description Validator to validate that the workflow `description` in workflow .icon file matches the description in workflow.spec.yaml\n* 2.28.0 - Add Encoding Validators to look for problematic characters | Update Workflow Description Validator to validate existence of `description` in workflow .icon file | Update Workflow Description Validator to validate that the workflow `description` in workflow .icon file matches the description in workflow.spec.yaml | Update `title_validation_list` | Change error message in `title_validator` for capitalized word when it should not\n* 2.27.0 - Add CloudReadyConnectionCredentialToken Validator\n* 2.26.0 - Add Example Input Validator to validate if example field exist in plugin.spec | Remove Mitre from AcronymValidator\n* 2.25.0 - Add Version Pin Validator to validate if dependency versions are pinned in requirements.txt\n* 2.24.0 - Update validators to support validation of plugin tasks.\n* 2.23.0 - Add Plugin Validator to identify missing version bump\n* 2.22.2 - Fix incorrect detection of 'array' in help.md\n* 2.22.1 - Revise Workflow Screenshots Validator\n* 2.22.0 - Add workflow directory name and workflow file match validator | Fix incorrect detection of 'lowercase' numbers in filenames | Add additional words to title list\n* 2.21.2 - Fix issue where numeric words in a title would break the title validator\n* 2.21.1 - Update HelpInputOutputValidator to validate on new Example inputs\n* 2.21.0 - Add new runtime validator to align with 4.0.0 release of InsightConnect Python Plugin Runtime \n* 2.20.0 - Add plugin utilization workflow validator | Fix issue where numbers in screenshot titles would cause validation to fail\n* 2.19.0 - Add new `example` input to whitelist in SpecPropertiesValidator\n* 2.18.0 - Add .icon file validator\n* 2.17.2 - Fix to remove some common words from the profanity validator\n* 2.17.1 - Fix broken package import\n* 2.17.0 - Add workflow name validator, Bug fix for title filters\n* 2.16.2 - Fix title validator where it would fail on titles with numbers in it.\n* 2.16.1 - Fix profanity filters and title filters to pull from once place\n* 2.16.0 - Add workflow description validator\n* 2.15.0 - Fix issue in title validator, Add title validator for workflows, clean up requirements\n* 2.14.0 - Fix issue where InputOutput validator would fail when missing required key\n* 2.13.0 - Add screenshot validator\n* 2.12.0 - Add validator to check that .icon filenames do not contain spaces\n* 2.11.0 - Add PNG Hash validator\n* 2.10.0 - Refactor of validate.py. Updates the validate method to use ValidationException and rework print statements to clean up unit testing\n* 2.9.0 - Add unit testing support. Add support, workflow files, workflow vendor, workflow version, workflow changelog and workflow extension validators\n* 2.8.1 - Bug fix for URLValidator when opening files\n* 2.8.0 - Update ChangelogValidator to validate plugin's version history with latest version number |\nUpdate HelpInputOutputValidator error messaging\n* 2.7.0 - Add URL Validator\n* 2.6.9 - Update HelpInputOutputValidator to fix error messaging |\nFix issue with HelpInputOutputValidator when help.md has action and trigger with same name\n* 2.6.8 - Docker Validator to run with -a command line argument | Helpful message on failure\n* 2.6.7 - Fix issue where OutputValidator was throwing error for plugins without any action\n* 2.6.6 - Fix issue where HelpInputOutputValidator was not extracting complete output section of an action or trigger\n* 2.6.5 - Update IconValidator to check for extension.png\n* 2.6.4 - Remove invalid \"JQ\" entry from the Acronym Validator\n* 2.6.3 - Update AcronymValidator and HelpValidator to skip validating example outputs of help.md\n* 2.6.2 - Syntax error bug fix in validator order\n* 2.6.1 - Fix issue where SSDEEP was listed as an acronym | Run the DockerValidator last\n* 2.6.0 - Update to support workflow's help.md validation\n* 2.5.0 - Add help input output validator\n* 2.4.0 - Update to turn off ConfidentialValidator in code | Revised use case list \nfor UseCase Validator\n* 2.3.0 - Add changelog validator\n* 2.2.0 - Using argparse module to handle arguments and provide -h option\n* 2.1.6 - Fix issue where ID was an acronym\n* 2.1.5 - Fix issue where confidential validator was not checking against provided whitelist\n* 2.1.4 - Fix issue where confidential validator was triggering on remediated findings and updated formatting\n* 2.1.3 - Update Exception Validator to throw warning\n* 2.1.2 - Fix issue where resources validator would always raise an exception\n* 2.1.1 - Update RequiredKeysValidator to validate the correct products key and empty resources keys\n* 2.1.0 - Update Golang RegenerationValidator\n* 2.0.2 - Update HelpValidator to fix error messaging\n* 2.0.1 - Update UseCaseValidator valid use case list\n* 2.0.0 - Update Help Validator to use new help format |\nUpdate RequiredKeys Validator for new spec fields |\nAdd validator rule: use case validation\n* 1.3.0 - Add --all flag to run entire set of validators,\nadd Confidential Validator, Regeneration Validator clean up\n* 1.2.0 - Add regeneration validator jenkins support\n* 1.1.8 - Add regeneration validator\n* 1.1.7 - Remove false positive \"SPAM\" entry from the Acronym Validator\n* 1.1.6 - Improved Output validator\n* 1.1.5 - Remove Makefile validator rule, fix rules import\n* 1.1.4 - Move `rules` package inside `icon_validator`\n* 1.1.3 - Ignore unit test directories (/unit_test \u0026 /unit_tests) in Exception Validator\n* 1.1.2 - Fix for Acronym and Output validators\n* 1.1.1 - Removed breaking changes to Makefile validator\n* 1.1.0 - Add validator rules: check for help.md, profanity check,\nacronym capitalization check,\n`print` usage check, JSON tests, exceptions, credentials, passwords\n| Updated rules: Makefiles, logging\n* 1.0.0 - Initial release\n\nPyPi.org link: [https://pypi.org/project/insightconnect-integrations-validators/](https://pypi.org/project/insightconnect-integrations-validators/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frapid7%2Ficon-integrations-validators","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frapid7%2Ficon-integrations-validators","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frapid7%2Ficon-integrations-validators/lists"}