{"id":17093028,"url":"https://github.com/peter-murray/issue-body-parser-action","last_synced_at":"2025-09-01T20:08:41.526Z","repository":{"id":38242773,"uuid":"268557072","full_name":"peter-murray/issue-body-parser-action","owner":"peter-murray","description":"A GitHub Action that can parse data from the body of an Issue and provide it as output to other GitHub Action steps","archived":false,"fork":false,"pushed_at":"2025-05-15T14:19:03.000Z","size":893,"stargazers_count":21,"open_issues_count":9,"forks_count":15,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-20T20:13:11.453Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peter-murray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-01T15:15:56.000Z","updated_at":"2024-12-07T11:09:54.000Z","dependencies_parsed_at":"2025-04-12T22:51:40.386Z","dependency_job_id":"80e31c4c-3703-472f-a4fd-f6bd8bd7b04d","html_url":"https://github.com/peter-murray/issue-body-parser-action","commit_stats":{"total_commits":27,"total_committers":4,"mean_commits":6.75,"dds":0.2592592592592593,"last_synced_commit":"eb155d18ca7753f18707fb034d419f3316ee7ee2"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/peter-murray/issue-body-parser-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-murray%2Fissue-body-parser-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-murray%2Fissue-body-parser-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-murray%2Fissue-body-parser-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-murray%2Fissue-body-parser-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peter-murray","download_url":"https://codeload.github.com/peter-murray/issue-body-parser-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peter-murray%2Fissue-body-parser-action/sbom","scorecard":{"id":728619,"data":{"date":"2025-08-11","repo":{"name":"github.com/peter-murray/issue-body-parser-action","commit":"097e13f9bf879cb987883ccf3bb343174e44dab1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"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":"Code-Review","score":1,"reason":"Found 4/24 approved changesets -- score normalized to 1","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/test.yml:1","Warn: no topLevel permission defined: .github/workflows/test_not_found.yml:1","Warn: no topLevel permission defined: .github/workflows/test_yaml.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":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","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":"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":"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":"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/test.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/peter-murray/issue-body-parser-action/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_not_found.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/peter-murray/issue-body-parser-action/test_not_found.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_not_found.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/peter-murray/issue-body-parser-action/test_not_found.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_yaml.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/peter-murray/issue-body-parser-action/test_yaml.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction 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":"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":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"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":"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-x4c5-c7rf-jjgv","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-c76h-2ccp-4975","Warn: Project is vulnerable to: GHSA-cxrh-j4jr-qwg3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 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-22T13:42:23.909Z","repository_id":38242773,"created_at":"2025-08-22T13:42:23.909Z","updated_at":"2025-08-22T13:42:23.909Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273183228,"owners_count":25059812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"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-10-14T14:04:18.594Z","updated_at":"2025-09-01T20:08:41.493Z","avatar_url":"https://github.com/peter-murray.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# issue-body-parser-action\n\nThis is a Github Action that can parse the contents of an Issue body for encoded JSON or YAML that can be used to pass information to other GitHub Action Steps.\nThink of this as just another way to provide the configuration data to a GitHub Actions workflow via \"Issue Ops\".\n\nThe usecase that resulted in this Action being created was to be used off the back of an Issue template where users are prompted to provide some metadata to a workflow \nthat will be triggered off the Issue. I was looking for a more structured way, rather than providing a lot of regexes and using bash scripting, which are alternative ways\nto doing this.\n\n\n## Usage\n\nFor details on all parameters see [action.yml](action.yml).\n\n## Examples\n### JSON Payload\nIn this example the Issue that we are to parse is expected to contain a `json` code block somewhere inside the body. It will be the contents of this that is parsed and exposed by the action.\n\nExample Issue Body Content:\n```\n    Some plain text data in the Issue body goes here and then we encode the payload \n    data in a block like shown below.\n    \n    ```json\n    {\n        \"id\": 1\n    }\n    ```\n```\n\nThe configuration of the Action in a workflow:\n\n```yaml\nname: Parse Issue Body\nuses: peter-murray/issue-body-parser-action@v3\nid: issue_body_parser\nwith:\n    github_token: ${{ secrets.GITHUB_TOKEN }}\n    # This is assuming that you are triggering off the issue, otherwise you will need to know the issue number\n    issue_id: ${{ github.event.issue.number }}\n```\n\n\n### JSON Payload with a marker\nIn this example the Issue body to parse may contain multiple JSON sections, so we use a `payload marker` to identify the target JSON block to parse. In this example, we will use the `target_payload` marker on the JSON block. \n\nExample Issue Body Content:\n\n```\n    Some plain text data in the Issue body goes here and then we encode the payload \n    data in a block like shown below.\n    \n    ```json target_payload\n    {\n        \"id\": 1,\n        \"name\": \"Some target data\"\n    }\n    ```\n```\n\nThe configuration of the Action in a workflow:\n\n```yaml\nname: Parse Issue Body\nuses: peter-murray/issue-body-parser-action@v3\nid: issue_body_parser\nwith:\n    github_token: ${{ secrets.GITHUB_TOKEN }}\n    # This is assuming that you are triggering off the issue, otherwise you will need to know the issue number\n    issue_id: ${{ github.event.issue.number }}\n    payload_marker: target_payload\n```\n\n\n### YAML Payload\nIn this example the Issue body to parse will contain a YAML section, so we need to set the `payload` to `yaml` so that we use the correct parser.\n\nExample Issue Body Content:\n```\n    A YAML payload will follow.\n\n    ```yaml\n    name: Hello World\n    id: 100\n    description: A simple hello world example\n    tags:\n      - good first issue\n      - needs triage\n      - bug\n    ```\n```\n\n\n\nThe configuration of the Action in a workflow:\n\n```yaml\nname: Parse Issue Body\nuses: peter-murray/issue-body-parser-action@v3\nid: issue_body_parser\nwith:\n    github_token: ${{ secrets.GITHUB_TOKEN }}\n    # This is assuming that you are triggering off the issue, otherwise you will need to know the issue number\n    issue_id: ${{ github.event.issue.number }}\n    payload: yaml\n```\n\n\n### Fail on missing payload\nBy default the action will fail if the payload is not found in the issue. This behavior can be changed by setting the `fail_on_missing` option to `false`.\n\n```yaml\nname: Parse Issue Body\nuses: peter-murray/issue-body-parser-action@v3\nid: issue_body_parser\nwith:\n    github_token: ${{ secrets.GITHUB_TOKEN }}\n    issue_id: ${{ github.event.issue.number }}\n    fail_on_missing: false\n```\n\nIn this case, when the payload is not found in the issue, the payload value will be set to `NOT_FOUND`. You may want to skip other actions in your workflow if this is the case by using an `if` conditional as follows:\n```yaml\nname: Run something that uses the payload\n    if : steps.issue_body_parser_request.outputs.payload != 'NOT_FOUND'\n    id: run_something\n    env:\n        VERSION: ${{ fromJson(steps.issue_body_parser_request.outputs.payload).version }}\n    run: |\n    echo $VERSION\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeter-murray%2Fissue-body-parser-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeter-murray%2Fissue-body-parser-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeter-murray%2Fissue-body-parser-action/lists"}