{"id":19435553,"url":"https://github.com/cssnr/virustotal-action","last_synced_at":"2026-03-10T04:31:48.951Z","repository":{"id":242815958,"uuid":"810638734","full_name":"cssnr/virustotal-action","owner":"cssnr","description":"VirusTotal GitHub Action","archived":false,"fork":false,"pushed_at":"2025-11-09T07:12:52.000Z","size":264,"stargazers_count":6,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-09T09:11:26.313Z","etag":null,"topics":["actions"],"latest_commit_sha":null,"homepage":"https://actions.cssnr.com/virustotal","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cssnr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"cssnr"}},"created_at":"2024-06-05T04:54:53.000Z","updated_at":"2025-11-09T07:11:07.000Z","dependencies_parsed_at":"2024-07-25T03:13:45.431Z","dependency_job_id":"9743e8a0-7847-4327-a4e5-7f78b80f2190","html_url":"https://github.com/cssnr/virustotal-action","commit_stats":null,"previous_names":["cssnr/virustotal-action"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/cssnr/virustotal-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fvirustotal-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fvirustotal-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fvirustotal-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fvirustotal-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cssnr","download_url":"https://codeload.github.com/cssnr/virustotal-action/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cssnr%2Fvirustotal-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30324411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"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":["actions"],"created_at":"2024-11-10T15:07:01.207Z","updated_at":"2026-03-10T04:31:48.935Z","avatar_url":"https://github.com/cssnr.png","language":"JavaScript","funding_links":["https://ko-fi.com/cssnr"],"categories":[],"sub_categories":[],"readme":"[![GitHub Tag Major](https://img.shields.io/github/v/tag/cssnr/virustotal-action?sort=semver\u0026filter=!v*.*\u0026logo=git\u0026logoColor=white\u0026labelColor=585858\u0026label=%20)](https://github.com/cssnr/virustotal-action/tags)\n[![GitHub Tag Minor](https://img.shields.io/github/v/tag/cssnr/virustotal-action?sort=semver\u0026filter=!v*.*.*\u0026logo=git\u0026logoColor=white\u0026labelColor=585858\u0026label=%20)](https://github.com/cssnr/virustotal-action/releases)\n[![GitHub Release Version](https://img.shields.io/github/v/release/cssnr/virustotal-action?logo=git\u0026logoColor=white\u0026labelColor=585858\u0026label=%20)](https://github.com/cssnr/virustotal-action/releases/latest)\n[![GitHub Dist Size](https://img.shields.io/github/size/cssnr/virustotal-action/dist%2Findex.js?logo=bookstack\u0026logoColor=white\u0026label=dist%20size)](https://github.com/cssnr/virustotal-action/blob/master/src)\n[![Workflow Release](https://img.shields.io/github/actions/workflow/status/cssnr/virustotal-action/release.yaml?logo=cachet\u0026label=release)](https://github.com/cssnr/virustotal-action/actions/workflows/release.yaml)\n[![Workflow Test](https://img.shields.io/github/actions/workflow/status/cssnr/virustotal-action/test.yaml?logo=cachet\u0026label=test)](https://github.com/cssnr/virustotal-action/actions/workflows/test.yaml)\n[![Workflow Lint](https://img.shields.io/github/actions/workflow/status/cssnr/virustotal-action/lint.yaml?logo=cachet\u0026label=lint)](https://github.com/cssnr/virustotal-action/actions/workflows/lint.yaml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=cssnr_virustotal-action\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=cssnr_virustotal-action)\n[![GitHub Last Commit](https://img.shields.io/github/last-commit/cssnr/virustotal-action?logo=github\u0026label=updated)](https://github.com/cssnr/virustotal-action/pulse)\n[![Codeberg Last Commit](https://img.shields.io/gitea/last-commit/cssnr/virustotal-action/master?gitea_url=https%3A%2F%2Fcodeberg.org%2F\u0026logo=codeberg\u0026logoColor=white\u0026label=updated)](https://codeberg.org/cssnr/virustotal-action)\n[![GitHub Contributors](https://img.shields.io/github/contributors/cssnr/virustotal-action?logo=github)](https://github.com/cssnr/virustotal-action/graphs/contributors)\n[![GitHub Repo Size](https://img.shields.io/github/repo-size/cssnr/virustotal-action?logo=bookstack\u0026logoColor=white\u0026label=repo%20size)](https://github.com/cssnr/virustotal-action?tab=readme-ov-file#readme)\n[![GitHub Top Language](https://img.shields.io/github/languages/top/cssnr/virustotal-action?logo=htmx)](https://github.com/cssnr/virustotal-action)\n[![GitHub Discussions](https://img.shields.io/github/discussions/cssnr/virustotal-action?logo=github)](https://github.com/cssnr/virustotal-action/discussions)\n[![GitHub Forks](https://img.shields.io/github/forks/cssnr/virustotal-action?style=flat\u0026logo=github)](https://github.com/cssnr/virustotal-action/forks)\n[![GitHub Repo Stars](https://img.shields.io/github/stars/cssnr/virustotal-action?style=flat\u0026logo=github)](https://github.com/cssnr/virustotal-action/stargazers)\n[![GitHub Org Stars](https://img.shields.io/github/stars/cssnr?style=flat\u0026logo=github\u0026label=org%20stars)](https://cssnr.github.io/)\n[![Discord](https://img.shields.io/discord/899171661457293343?logo=discord\u0026logoColor=white\u0026label=discord\u0026color=7289da)](https://discord.gg/wXy6m2X8wY)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-72a5f2?logo=kofi\u0026label=support)](https://ko-fi.com/cssnr)\n\n# VirusTotal Action\n\n- [Features](#Features)\n  - [VirusTotal Badges](#virustotal-badges)\n- [Inputs](#Inputs)\n  - [Permissions](#Permissions)\n- [Outputs](#Outputs)\n- [Examples](#Examples)\n- [Tags](#Tags)\n- [Support](#Support)\n- [Contributing](#Contributing)\n\nSubmit file globs or release assets to the VirusTotal API for scanning.\n\nOn release events the [Release Notes](#Release-Notes) will optionally be updated with links to the scan results.\n\nYou can now customize the links display and release notes heading. See the [Features](#Features) for more details.\n\nThe /files/ endpoint is used for files under 32MB, otherwise, the /files/upload_url/ endpoint is used\nproviding support for files up to **650MB**. Therefore, files over 32MB will consume 2 API calls.\n\nWith no inputs this will automatically process release assets.\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n```\n\nMake sure to review the [Inputs](#inputs) and checkout more [Examples](#examples).\n\nThis is a fairly simple action, for more details see [src/index.js](src/index.js) and [src/vt.js](src/vt.js).\n\n\u003e [!TIP]  \n\u003e A new Documentation site is currently being developed:  \n\u003e https://actions.cssnr.com/virustotal/\n\n## Features\n\n- Supports files up to 650MB\n- Upload Release Assets or File Globs\n- Automatically add Results to Release Notes\n  - Customize Release Notes Heading\n- Rate Limited for Free Accounts\n- Option to specify the Release ID\n\n### Planned\n\n- Add options to customize release update/output format (next on the roadmap).\n- Add release body parsing to properly process new files on edited activity.\n- Add option to apply file_globs to release assets.\n\n\u003e [!NOTE]  \n\u003e Please submit a [Feature Request](https://github.com/cssnr/virustotal-action/discussions/categories/feature-requests)\n\u003e for new features or [Open an Issue](https://github.com/cssnr/virustotal-action/issues) if you find any bugs.\n\n### VirusTotal Badges\n\n[![VT Release](https://badges.cssnr.com/vt/cssnr/zipline-android/app-release.apk)](https://badges.cssnr.com/vt/cssnr/zipline-android/app-release.apk)\n\nWe are also working on a [Badge Server](https://github.com/smashedr/node-badges) (similar to [shields.io](https://shields.io/)) that supports VirusTotal Badges.  \nFor more details see the [Website](https://smashedr.github.io/node-badges-docs/guides/get-started), the [README.md](https://github.com/smashedr/node-badges?tab=readme-ov-file#virustotal-release-and-files) or the [Discussion](https://github.com/cssnr/virustotal-action/discussions/27) in this repo.\n\nThese badges may be eventually added to this action as an option for release notes.\nAny feedback is helpful during this phase of development.\n\n## Inputs\n\n| Input\u0026nbsp;Name   | Default\u0026nbsp;Value            | Description\u0026nbsp;of\u0026nbsp;the\u0026nbsp;Input\u0026nbsp;Value |\n| :---------------- | :---------------------------- | :------------------------------------------------- |\n| `vt_api_key`      | _Required_                    | VirusTotal API Key [⤵️](#vt_api_key)               |\n| `file_globs`      | -                             | File Globs to Process [⤵️](#file_globs)            |\n| `rate_limit`      | `4`                           | API Calls Per Minute [⤵️](#rate_limit)             |\n| `release_id`      | -                             | Release ID to Process [⤵️](#release_id)            |\n| `sha256`          | `false`                       | Calculate File SHA256 [⤵️](#sha256)                |\n| `update_release`  | `true`                        | Update the [Release Notes](#Release-Notes)         |\n| `release_heading` | _[see below](#Release-Notes)_ | Release Notes Heading [⤵️](#release_heading)       |\n| `collapsed`       | `false`                       | Show Links Collapsed. [⤵️](#collapsed)             |\n| `file_name`       | `name`                        | File Name Display: [`name`, `id`] [⤵️](#file_name) |\n| `summary`         | `true`                        | Add Summary to Job [⤵️](#summary)                  |\n| `github_token`    | `github.token`                | For use with a PAT                                 |\n\n\u003e For more details on inputs, see the VirusTotal API [documentation](https://docs.virustotal.com/reference/overview).\n\n#### vt_api_key\n\nGet your API key from: https://www.virustotal.com/gui/my-apikey\n\n#### file_globs\n\nIf provided, will process matching files instead of release assets.  \nFor glob pattern, see [examples](#examples) and the [docs](https://github.com/actions/toolkit/tree/main/packages/glob#patterns).\n\n#### rate_limit\n\nRate limit for file uploads. Set to `0` to disable if you know what you are doing.\n\n#### release_id\n\nIf provided, will process the corresponding release.\nThe release ID can be generated from a previous step.\nBy providing a release ID, this action does not need to run on a release event to process a release.\n\n#### sha256\n\nIf enabled this will calculate the file's SHA256 hash, and include it in the output.\n\n#### summary\n\nWill add result details to the job summary in the workflow.\n\n\u003cdetails\u003e\u003csummary\u003e👀 View Job Summary Example\u003c/summary\u003e\n\n---\n\n\u003ctable\u003e\u003ctr\u003e\u003cth\u003eFile\u003c/th\u003e\u003cth\u003eID\u003c/th\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://www.virustotal.com/gui/file-analysis/YmFmZTVlZjIzMDRkMjRlMTcwNjk1Yzg0MTgyN2FmMmM6MTc0MjExMjY5Mw==\"\u003eREADME.md\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eYmFmZTVlZjIzMDRkMjRlMTcwNjk1Yzg0MTgyN2FmMmM6MTc0MjExMjY5Mw==\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003e\u003ca href=\"https://www.virustotal.com/gui/file-analysis/ZTM4MjBkOGFhYmRhNjBiMTY0MTEwZjZkNDE1YjViODc6MTc0MjExMjY5Mw==\"\u003e.gitignore\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eZTM4MjBkOGFhYmRhNjBiMTY0MTEwZjZkNDE1YjViODc6MTc0MjExMjY5Mw==\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u003cdetails\u003e\u003csummary\u003eOutputs\u003c/summary\u003e\n\u003cpre lang=\"json\"\u003e\u003ccode\u003e[\n  {\n    \"id\": \"MGM1YTkxMzc5OGU3Y2UyNjViNTkxYzY5OTZmNTg3NjI6MTc2MDEyMzYzOA==\",\n    \"name\": \"README.md\",\n    \"link\": \"https://www.virustotal.com/gui/file-analysis/MGM1YTkxMzc5OGU3Y2UyNjViNTkxYzY5OTZmNTg3NjI6MTc2MDEyMzYzOA==\",\n    \"sha256\": \"75f762919859572abf753008cc5a1f5b75e05e9d0876080c0d28b2338ca46c26\"\n  },\n  {\n    \"id\": \"ZmIzNTcyMDI5NTAxN2VkYzRiZmRmMTg4NzhjNWJjY2Y6MTc2MDEyMzYzOQ==\",\n    \"name\": \".gitignore\",\n    \"link\": \"https://www.virustotal.com/gui/file-analysis/ZmIzNTcyMDI5NTAxN2VkYzRiZmRmMTg4NzhjNWJjY2Y6MTc2MDEyMzYzOQ==\",\n    \"sha256\": \"4c534768e93cc21269fecf0dea55eb9191ab649cb2fff8952f40cbf7a21057fe\"\n  }\n]\n\u003c/code\u003e\u003c/pre\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003eREADME.md/MGM1YTkxMzc5OGU3Y2UyNjViNTkxYzY5OTZmNTg3NjI6MTc2MDEyMzYzOA==\n.gitignore/ZmIzNTcyMDI5NTAxN2VkYzRiZmRmMTg4NzhjNWJjY2Y6MTc2MDEyMzYzOQ==\u003c/code\u003e\u003c/pre\u003e\n\u003c/details\u003e\u003cdetails\u003e\u003csummary\u003eConfig\u003c/summary\u003e\n\u003cpre lang=\"yaml\"\u003e\u003ccode\u003efiles: [\"README.md\",\".gitignore\"]\nrate: 4\nupdate: true\nheading: \"🛡️ **VirusTotal Results:**\"\nsummary: true\u003c/code\u003e\u003c/pre\u003e\n\u003c/details\u003e\n\n---\n\n\u003c/details\u003e\n\nTo view a workflow run, click on a recent [Test](https://github.com/cssnr/virustotal-action/actions/workflows/test.yaml) job _(requires login)_.\n\nExample with all inputs:\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n    file_globs: |\n      file1\n      release/*\n    rate_limit: 4\n    update_release: true\n    release_heading: '🛡️ **VirusTotal Results:**'\n    summary: true\n```\n\nSee the [Examples](#Examples) section for more options.\n\n### Release Notes\n\nIf run on a release event, the Release Notes are automatically updated with the results unless you set `update_release` to `false`.\nYou can customize the heading or remove it by specifying an empty string.\n\n#### update_release\n\nIf triggered from a release workflow, will update the release notes and append the results.\n\n#### release_heading\n\nCustomize the Release Notes Heading.  \nDefault: `🛡️ **VirusTotal Results:**`\n\n#### collapsed\n\nSet to `true` to collapse the result links by default. _Experimental._\n\n#### file_name\n\nCustomize the Release Notes File Name Display. This can be one of `name`, or `id`.\n\n### Example Release Notes\n\n---\n\n🛡️ **VirusTotal Results:**\n\n- [install-linux.deb](https://www.virustotal.com/gui/file-analysis/ODA3ZWUyN2E4YjhjMTJlODRlZTBmOTJjMmE5MzBlMmQ6MTcyNjg3MjQyMw==)\n- [install-macos.pkg](https://www.virustotal.com/gui/file-analysis/YTAwN2I4MWQwZjkzNDJjZTVmMWFhNzBjY2Y0ZGJkODE6MTcyNjg3MjQyNQ==)\n- [install-win.exe](https://www.virustotal.com/gui/file-analysis/N2JlODFiMWMwZGY1M2EzMzg5MWY1ZDQ0N2QyMWU0MWI6MTcyNjg3MjQyNw==)\n\n---\n\n### Permissions\n\nThis action requires the following permissions to edit releases notes:\n\n```yaml\npermissions:\n  contents: write\n```\n\nPermissions documentation for [Workflows](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token) and [Actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication).\n\n## Outputs\n\n| Output              | Output\u0026nbsp;Description  |\n| :------------------ | :----------------------- |\n| [results](#results) | CSV String of `file/id`  |\n| [json](#json)       | JSON Object Results List |\n\nWeb links can be generated by **appending** the ID or SHA256 to these URL:\n\n- ID: https://www.virustotal.com/gui/file-analysis/\n- SHA256: https://www.virustotal.com/gui/file/\n\n#### results\n\n```text\nREADME.md/MGM1YTkxMzc5OGU3Y2UyNjViNTkxYzY5OTZmNTg3NjI6MTc2MDEyMzYzOA==,.gitignore/ZmIzNTcyMDI5NTAxN2VkYzRiZmRmMTg4NzhjNWJjY2Y6MTc2MDEyMzYzOQ==\n```\n\n#### json\n\nNote: The `sha256` is only included if you set the input `sha256: true`.\n\n```json\n[\n  {\n    \"id\": \"MGM1YTkxMzc5OGU3Y2UyNjViNTkxYzY5OTZmNTg3NjI6MTc2MDEyMzYzOA==\",\n    \"name\": \"README.md\",\n    \"link\": \"https://www.virustotal.com/gui/file-analysis/MGM1YTkxMzc5OGU3Y2UyNjViNTkxYzY5OTZmNTg3NjI6MTc2MDEyMzYzOA==\",\n    \"sha256\": \"75f762919859572abf753008cc5a1f5b75e05e9d0876080c0d28b2338ca46c26\"\n  },\n  {\n    \"id\": \"ZmIzNTcyMDI5NTAxN2VkYzRiZmRmMTg4NzhjNWJjY2Y6MTc2MDEyMzYzOQ==\",\n    \"name\": \".gitignore\",\n    \"link\": \"https://www.virustotal.com/gui/file-analysis/ZmIzNTcyMDI5NTAxN2VkYzRiZmRmMTg4NzhjNWJjY2Y6MTc2MDEyMzYzOQ==\",\n    \"sha256\": \"4c534768e93cc21269fecf0dea55eb9191ab649cb2fff8952f40cbf7a21057fe\"\n  }\n]\n```\n\nUsing the outputs.\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  id: vt\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n\n- name: 'Echo Results'\n  run: |\n    echo results: ${{ steps.vt.outputs.results }}\n    echo json: ${{ steps.vt.outputs.json }}\n```\n\n## Examples\n\n💡 _Click on an example heading to expand or collapse the example._\n\n\u003cdetails open\u003e\u003csummary\u003eProcess release assets\u003c/summary\u003e\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eCustomize release notes heading\u003c/summary\u003e\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  if: ${{ github.event_name == 'release' }}\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n    release_heading: '### Scan Results'\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eOnly run on a release event\u003c/summary\u003e\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  if: ${{ github.event_name == 'release' }}\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eUsing file globs\u003c/summary\u003e\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n    file_globs: artifacts/*\n```\n\n\u003c/details\u003e\n\u003cdetails open\u003e\u003csummary\u003eMultiple file globs\u003c/summary\u003e\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n    file_globs: |\n      artifacts/*\n      assets/asset.zip\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eWith all inputs\u003c/summary\u003e\n\n```yaml\n- name: 'VirusTotal'\n  uses: cssnr/virustotal-action@v1\n  with:\n    vt_api_key: ${{ secrets.VT_API_KEY }}\n    file_globs: |\n      file1\n      release/*\n    rate_limit: 4\n    update_release: true\n    release_heading: '🛡️ **VirusTotal Results:**'\n    summary: true\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eSimple workflow example\u003c/summary\u003e\n\n```yaml\nname: 'VirusTotal Example'\n\non:\n  release:\n    types: [published]\n\njobs:\n  release:\n    name: 'Release'\n    runs-on: ubuntu-latest\n    timeout-minutes: 5\n    permissions:\n      contents: write\n\n    steps:\n      - name: 'VirusTotal Action'\n        uses: cssnr/virustotal-action@v1\n        with:\n          vt_api_key: ${{ secrets.VT_API_KEY }}\n```\n\nNote: the permissions are applied to the individual job here.\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003eFull workflow example\u003c/summary\u003e\n\n```yaml\nname: 'VirusTotal Example'\n\non:\n  release:\n    types: [published]\n\npermissions:\n  contents: write\n\njobs:\n  windows:\n    name: 'Windows Build'\n    runs-on: windows-latest\n    timeout-minutes: 5\n\n    steps:\n      - name: 'Checkout'\n        uses: actions/checkout@v5\n\n      - name: 'Build'\n        uses: Minionguyjpro/Inno-Setup-Action@v1.2.2\n        with:\n          path: client.iss\n          options: '/DMyAppVersion=${{ github.ref_name }}'\n\n      - name: 'Upload to Release'\n        uses: svenstaro/upload-release-action@v2\n        if: ${{ github.event_name == 'release' }}\n        with:\n          repo_token: ${{ secrets.GITHUB_TOKEN }}\n          file: out/*\n          tag: ${{ github.ref }}\n          overwrite: true\n          file_glob: true\n\n  virustotal:\n    name: 'VirusTotal'\n    runs-on: ubuntu-latest\n    needs: [windows]\n    timeout-minutes: 5\n    if: ${{ github.event_name == 'release' }}\n\n    steps:\n      - name: 'VirusTotal Action'\n        uses: cssnr/virustotal-action@v1\n        with:\n          vt_api_key: ${{ secrets.VT_API_KEY }}\n          rate_limit: 4\n          update_release: true\n```\n\nNote: the permissions are applied to the entire workflow here.\n\n\u003c/details\u003e\n\nTo see this used in a build/release/scan workflow, check out:  \nhttps://github.com/cssnr/hls-downloader-client/blob/master/.github/workflows/build.yaml\n\nFor more examples, you can check out other projects using this action:  \nhttps://github.com/cssnr/virustotal-action/network/dependents\n\n## Tags\n\nThe following rolling [tags](https://github.com/cssnr/virustotal-action/tags) are maintained.\n\n| Version\u0026nbsp;Tag                                                                                                                                                                                                   | Rolling | Bugs | Feat. |   Name    |  Target  | Example  |\n| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----: | :--: | :---: | :-------: | :------: | :------- |\n| [![GitHub Tag Major](https://img.shields.io/github/v/tag/cssnr/virustotal-action?sort=semver\u0026filter=!v*.*\u0026style=for-the-badge\u0026label=%20\u0026color=44cc10)](https://github.com/cssnr/virustotal-action/releases/latest) |   ✅    |  ✅  |  ✅   | **Major** | `vN.x.x` | `vN`     |\n| [![GitHub Tag Minor](https://img.shields.io/github/v/tag/cssnr/virustotal-action?sort=semver\u0026filter=!v*.*.*\u0026style=for-the-badge\u0026label=%20\u0026color=blue)](https://github.com/cssnr/virustotal-action/releases/latest) |   ✅    |  ✅  |  ❌   | **Minor** | `vN.N.x` | `vN.N`   |\n| [![GitHub Release](https://img.shields.io/github/v/release/cssnr/virustotal-action?style=for-the-badge\u0026label=%20\u0026color=red)](https://github.com/cssnr/virustotal-action/releases/latest)                           |   ❌    |  ❌  |  ❌   | **Micro** | `vN.N.N` | `vN.N.N` |\n\nYou can view the release notes for each version on the [releases](https://github.com/cssnr/virustotal-action/releases) page.\n\nThe **Major** tag is recommended. It is the most up-to-date and always backwards compatible.\nBreaking changes would result in a **Major** version bump. At a minimum you should use a **Minor** tag.\n\n# Support\n\nFor general help or to request a feature see:\n\n- Q\u0026A Discussion: https://github.com/cssnr/virustotal-action/discussions/categories/q-a\n- Request a Feature: https://github.com/cssnr/virustotal-action/discussions/categories/feature-requests\n\nIf you are experiencing an issue/bug or getting unexpected results you can:\n\n- Report an Issue: https://github.com/cssnr/virustotal-action/issues\n- Chat with us on Discord: https://discord.gg/wXy6m2X8wY\n- Provide General Feedback: [https://cssnr.github.io/feedback/](https://cssnr.github.io/feedback/?app=VirusTotal%20Scan)\n\nFor more information, see the CSSNR [SUPPORT.md](https://github.com/cssnr/.github/blob/master/.github/SUPPORT.md#support).\n\n# Contributing\n\nPlease consider making a donation to support the development of this project\nand [additional](https://cssnr.com/) open source projects.\n\n[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/cssnr)\n\nIf you would like to submit a PR, please review the [CONTRIBUTING.md](#contributing-ov-file).\n\nAdditionally, you can support other GitHub Actions I have published:\n\n- [Stack Deploy Action](https://github.com/cssnr/stack-deploy-action?tab=readme-ov-file#readme)\n- [Portainer Stack Deploy Action](https://github.com/cssnr/portainer-stack-deploy-action?tab=readme-ov-file#readme)\n- [Docker Context Action](https://github.com/cssnr/docker-context-action?tab=readme-ov-file#readme)\n- [VirusTotal Action](https://github.com/cssnr/virustotal-action?tab=readme-ov-file#readme)\n- [Mirror Repository Action](https://github.com/cssnr/mirror-repository-action?tab=readme-ov-file#readme)\n- [Update Version Tags Action](https://github.com/cssnr/update-version-tags-action?tab=readme-ov-file#readme)\n- [Docker Tags Action](https://github.com/cssnr/docker-tags-action?tab=readme-ov-file#readme)\n- [Update JSON Value Action](https://github.com/cssnr/update-json-value-action?tab=readme-ov-file#readme)\n- [JSON Key Value Check Action](https://github.com/cssnr/json-key-value-check-action?tab=readme-ov-file#readme)\n- [Parse Issue Form Action](https://github.com/cssnr/parse-issue-form-action?tab=readme-ov-file#readme)\n- [Cloudflare Purge Cache Action](https://github.com/cssnr/cloudflare-purge-cache-action?tab=readme-ov-file#readme)\n- [Mozilla Addon Update Action](https://github.com/cssnr/mozilla-addon-update-action?tab=readme-ov-file#readme)\n- [Package Changelog Action](https://github.com/cssnr/package-changelog-action?tab=readme-ov-file#readme)\n- [NPM Outdated Check Action](https://github.com/cssnr/npm-outdated-action?tab=readme-ov-file#readme)\n- [Label Creator Action](https://github.com/cssnr/label-creator-action?tab=readme-ov-file#readme)\n- [Algolia Crawler Action](https://github.com/cssnr/algolia-crawler-action?tab=readme-ov-file#readme)\n- [Upload Release Action](https://github.com/cssnr/upload-release-action?tab=readme-ov-file#readme)\n- [Check Build Action](https://github.com/cssnr/check-build-action?tab=readme-ov-file#readme)\n- [Web Request Action](https://github.com/cssnr/web-request-action?tab=readme-ov-file#readme)\n- [Get Commit Action](https://github.com/cssnr/get-commit-action?tab=readme-ov-file#readme)\n\n\u003cdetails\u003e\u003csummary\u003e❔ Unpublished Actions\u003c/summary\u003e\n\nThese actions are not published on the Marketplace, but may be useful.\n\n- [cssnr/draft-release-action](https://github.com/cssnr/draft-release-action?tab=readme-ov-file#readme) - Keep a draft release ready to publish.\n- [cssnr/env-json-action](https://github.com/cssnr/env-json-action?tab=readme-ov-file#readme) - Convert env file to json or vice versa.\n- [cssnr/push-artifacts-action](https://github.com/cssnr/push-artifacts-action?tab=readme-ov-file#readme) - Sync files to a remote host with rsync.\n- [smashedr/update-release-notes-action](https://github.com/smashedr/update-release-notes-action?tab=readme-ov-file#readme) - Update release notes.\n- [smashedr/combine-release-notes-action](https://github.com/smashedr/combine-release-notes-action?tab=readme-ov-file#readme) - Combine release notes.\n\n---\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📝 Template Actions\u003c/summary\u003e\n\nThese are basic action templates that I use for creating new actions.\n\n- [js-test-action](https://github.com/smashedr/js-test-action?tab=readme-ov-file#readme) - JavaScript\n- [py-test-action](https://github.com/smashedr/py-test-action?tab=readme-ov-file#readme) - Python\n- [ts-test-action](https://github.com/smashedr/ts-test-action?tab=readme-ov-file#readme) - TypeScript\n- [docker-test-action](https://github.com/smashedr/docker-test-action?tab=readme-ov-file#readme) - Docker Image\n\nNote: The `docker-test-action` builds, runs and pushes images to [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry).\n\n---\n\n\u003c/details\u003e\n\nFor a full list of current projects visit: [https://cssnr.github.io/](https://cssnr.github.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcssnr%2Fvirustotal-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcssnr%2Fvirustotal-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcssnr%2Fvirustotal-action/lists"}