{"id":24224632,"url":"https://github.com/edumserrano/github-issue-forms-parser","last_synced_at":"2025-09-22T15:30:37.324Z","repository":{"id":38883563,"uuid":"476882668","full_name":"edumserrano/github-issue-forms-parser","owner":"edumserrano","description":"A Docker container GitHub action that can be used to parse GitHub issue forms.","archived":false,"fork":false,"pushed_at":"2025-09-20T22:04:03.000Z","size":718,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-21T00:11:03.767Z","etag":null,"topics":["actions","forms","github","github-action","github-actions","issue-forms","issues","parser"],"latest_commit_sha":null,"homepage":"","language":"C#","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/edumserrano.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"edumserrano"}},"created_at":"2022-04-01T22:15:36.000Z","updated_at":"2025-09-20T22:04:07.000Z","dependencies_parsed_at":"2023-10-17T04:55:24.107Z","dependency_job_id":"17ace3e0-1287-4977-a523-f4ebff51e583","html_url":"https://github.com/edumserrano/github-issue-forms-parser","commit_stats":{"total_commits":193,"total_committers":3,"mean_commits":64.33333333333333,"dds":0.0984455958549223,"last_synced_commit":"2b93272982980e09b317a557d3b632357f36804e"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/edumserrano/github-issue-forms-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edumserrano%2Fgithub-issue-forms-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edumserrano%2Fgithub-issue-forms-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edumserrano%2Fgithub-issue-forms-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edumserrano%2Fgithub-issue-forms-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edumserrano","download_url":"https://codeload.github.com/edumserrano/github-issue-forms-parser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edumserrano%2Fgithub-issue-forms-parser/sbom","scorecard":{"id":367389,"data":{"date":"2025-08-11","repo":{"name":"github.com/edumserrano/github-issue-forms-parser","commit":"88006dbfd4beab365e70f0c50a04002cfddbdaab"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.workflow_run.head_sha }}': .github/workflows/pr-dependabot-auto-merge.yml:25"],"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":"Code-Review","score":1,"reason":"Found 1/9 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":"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":"Maintained","score":10,"reason":"17 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":6,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/build-test.yml:22","Info: jobLevel 'contents' permission set to 'read': .github/workflows/markdown-link-check.yml:20","Info: jobLevel 'contents' permission set to 'read': .github/workflows/package-retention-policy.yml:20","Warn: jobLevel 'packages' permission set to 'write': .github/workflows/package-retention-policy.yml:21","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/pr-dependabot-auto-merge.yml:18","Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish-docker-image.yml:25","Info: jobLevel 'contents' permission set to 'read': .github/workflows/test-action-gh-marketplace.yml:20","Info: jobLevel 'contents' permission set to 'read': .github/workflows/test-action-gh-marketplace.yml:86","Info: jobLevel 'contents' permission set to 'read': .github/workflows/test-action.yml:22","Info: jobLevel 'contents' permission set to 'read': .github/workflows/test-action.yml:88","Warn: no topLevel permission defined: .github/workflows/build-test.yml:1","Warn: no topLevel permission defined: .github/workflows/markdown-link-check.yml:1","Warn: no topLevel permission defined: .github/workflows/package-retention-policy.yml:1","Warn: no topLevel permission defined: .github/workflows/pr-dependabot-auto-merge.yml:1","Warn: no topLevel permission defined: .github/workflows/publish-docker-image.yml:1","Warn: no topLevel permission defined: .github/workflows/test-action-gh-marketplace.yml:1","Warn: no topLevel permission defined: .github/workflows/test-action.yml:1"],"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish-docker-image.yml:22"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: .github/workflows/build-test.yml:64","Info: Possibly incomplete results: error parsing shell code: reached EOF without closing quote `: .github/workflows/build-test.yml:118","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: .github/workflows/markdown-link-check.yml:48","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: .github/workflows/markdown-link-check.yml:62","Info: Possibly incomplete results: error parsing shell code: \"if \u003ccond\u003e\" must be followed by \"then\": .github/workflows/test-action-gh-marketplace.yml:55","Info: Possibly incomplete results: error parsing shell code: \"if \u003ccond\u003e\" must be followed by \"then\": .github/workflows/test-action-gh-marketplace.yml:102","Info: Possibly incomplete results: error parsing shell code: \"if \u003ccond\u003e\" must be followed by \"then\": .github/workflows/test-action.yml:57","Info: Possibly incomplete results: error parsing shell code: \"if \u003ccond\u003e\" must be followed by \"then\": .github/workflows/test-action.yml:104","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yml:133: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/build-test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-test.yml:139: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/build-test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/markdown-link-check.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/markdown-link-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/markdown-link-check.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/markdown-link-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/markdown-link-check.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/markdown-link-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/package-retention-policy.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/package-retention-policy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr-dependabot-auto-merge.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/pr-dependabot-auto-merge.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-docker-image.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/publish-docker-image.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-image.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/publish-docker-image.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-image.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/publish-docker-image.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-docker-image.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/publish-docker-image.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-action-gh-marketplace.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/test-action-gh-marketplace.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-action-gh-marketplace.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/test-action-gh-marketplace.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-action-gh-marketplace.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/test-action-gh-marketplace.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test-action-gh-marketplace.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/test-action-gh-marketplace.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-action.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/test-action.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-action.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/edumserrano/github-issue-forms-parser/test-action.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:5","Warn: containerImage not pinned by hash: Dockerfile:31","Warn: containerImage not pinned by hash: Dockerfile:42","Warn: containerImage not pinned by hash: Dockerfile:46","Warn: containerImage not pinned by hash: GitHubIssueFormsParser/tests/remote-test-environment.Dockerfile:2: pin your Docker image by updating mcr.microsoft.com/dotnet/sdk:7.0-jammy to mcr.microsoft.com/dotnet/sdk:7.0-jammy@sha256:9db41721e58ac92cea1b5cbdb6080cd033a66a6f83521eaf0e1e561e9971efa7","Warn: nugetCommand not pinned by hash: Dockerfile:37: pin your dependecies by either enabling central package management (https://learn.microsoft.com/nuget/consume-packages/Central-Package-Management) or using a lockfile (https://learn.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies)","Warn: nugetCommand not pinned by hash: .github/workflows/build-test.yml:58: pin your dependecies by either enabling central package management (https://learn.microsoft.com/nuget/consume-packages/Central-Package-Management) or using a lockfile (https://learn.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies)","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   9 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned","Info:   0 out of   2 nugetCommand 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 24 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-18T12:11:02.578Z","repository_id":38883563,"created_at":"2025-08-18T12:11:02.578Z","updated_at":"2025-08-18T12:11:02.578Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276176349,"owners_count":25598014,"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-20T02:00:10.207Z","response_time":63,"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","forms","github","github-action","github-actions","issue-forms","issues","parser"],"created_at":"2025-01-14T07:17:55.032Z","updated_at":"2025-09-22T15:30:37.014Z","avatar_url":"https://github.com/edumserrano.png","language":"C#","readme":"# GitHub issue forms parser\n\n[![Build and test](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/build-test.yml/badge.svg)](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/build-test.yml)\n[![codecov](https://codecov.io/gh/edumserrano/github-issue-forms-parser/branch/main/graph/badge.svg?token=B9nrGE2Ine)](https://codecov.io/gh/edumserrano/github-issue-forms-parser)\n[![Markdown link check](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/markdown-link-check.yml/badge.svg)](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/markdown-link-check.yml)\u003c/br\u003e\n[![Test GitHub action](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/test-action.yml/badge.svg)](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/test-action.yml)\n[![Test GitHub action from GH Marketplace](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/test-action-gh-marketplace.yml/badge.svg)](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/test-action-gh-marketplace.yml)\u003c/br\u003e\n[![Publish Docker image](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/publish-docker-image.yml/badge.svg)](https://github.com/edumserrano/github-issue-forms-parser/actions/workflows/publish-docker-image.yml)\n[![GitHub Marketplace](https://img.shields.io/badge/Marketplace-GitHub%20issue%20forms%20parser-blue.svg?colorA=24292e\u0026colorB=0366d6\u0026style=flat\u0026longCache=true\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAM6wAADOsB5dZE0gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAERSURBVCiRhZG/SsMxFEZPfsVJ61jbxaF0cRQRcRJ9hlYn30IHN/+9iquDCOIsblIrOjqKgy5aKoJQj4O3EEtbPwhJbr6Te28CmdSKeqzeqr0YbfVIrTBKakvtOl5dtTkK+v4HfA9PEyBFCY9AGVgCBLaBp1jPAyfAJ/AAdIEG0dNAiyP7+K1qIfMdonZic6+WJoBJvQlvuwDqcXadUuqPA1NKAlexbRTAIMvMOCjTbMwl1LtI/6KWJ5Q6rT6Ht1MA58AX8Apcqqt5r2qhrgAXQC3CZ6i1+KMd9TRu3MvA3aH/fFPnBodb6oe6HM8+lYHrGdRXW8M9bMZtPXUji69lmf5Cmamq7quNLFZXD9Rq7v0Bpc1o/tp0fisAAAAASUVORK5CYII=)](https://github.com/marketplace/actions/github-issue-forms-parser)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/edumserrano)](https://github.com/sponsors/edumserrano)\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-Eduardo%20Serrano-blue.svg)](https://www.linkedin.com/in/eduardomserrano/)\n\n- [Description](#description)\n- [Usage](#usage)\n- [Action inputs](#action-inputs)\n- [Action outputs](#action-outputs)\n- [Example output for a given issue form template and body](#example-output-for-a-given-issue-form-template-and-body)\n- [Example usages of this action in GitHub workflows](#example-usages-of-this-action-in-github-workflows)\n- [I can't figure out the structure of the JSON object produced by the parser](#i-cant-figure-out-the-structure-of-the-json-object-produced-by-the-parser)\n- [Dev notes](#dev-notes)\n\n## Description\n\nA Docker container [GitHub action](https://docs.github.com/en/actions/learn-github-actions/finding-and-customizing-actions) that can be used to parse [GitHub issue forms](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema).\n\n## Usage\n\n```yml\n- name: Run GitHub issue forms parser\n  id: issue-parser\n  uses: edumserrano/github-issue-forms-parser@v1\n  with:\n    template-filepath: '.github/ISSUE_TEMPLATE/my-issue-form-template.yml'\n    issue-form-body: '${{ github.event.issue.body }}'\n# The next step is using powershell to parse the action's output but you can use whatever you prefer.\n# Note that in order to read the step outputs the action step must have an id.\n- name: Output parsed issue\n  shell: pwsh\n  run: |\n    $issue = '${{ steps.issue-parser.outputs.parsed-issue }}' | ConvertFrom-Json\n    $issueAsJsonIndented = ConvertTo-Json $issue\n    Write-Output $issueAsJsonIndented # outputs the parsed issue as an indented JSON string\n    ...\n```\n\n## Action inputs\n\n| Name | Description | Required\n| --- | --- | --- |\n| `template-filepath` | The filepath to the [issue form template](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#creating-issue-forms). | yes |\n| `issue-form-body` | The body of the issue to parse. | yes |\n\n## Action outputs\n\n| Name | Description\n| --- | --- |\n| `parsed-issue` | The issue form parsed as a JSON string. |\n\n**Notes about the JSON output:**\n\n- The keys on the JSON object are id field of the template form element.\n- Checkboxes form elements are outputed as an object whose keys are the [slugified](https://blog.tersmitten.nl/slugify/) value of the label of the option.\n- When the form element is optional and no input is provided for the form element then the issue form body will contain a `_No response_` but the parsed output for that key in the JSON string will just be an empty value.\n- **For a better understanding of the output rules see example below.**\n\n## Example output for a given issue form template and body\n\nGiven the following issue form template:\n\n```yml\nname: Release NuGet package\ndescription: Release a NuGet package.\ntitle: Release NuGet package\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        ## Description\n        This form is used to release a NuGet package.\n  - type: dropdown\n    id: nuget-id\n    attributes:\n      label: What NuGet package do you want to release?\n      options:\n        - dotnet-sdk-extensions\n        - dotnet-sdk-extensions-testing\n    validations:\n      required: true\n  - type: input\n    id: nuget-version\n    attributes:\n      label: What is the new version for the NuGet package?\n      description: 'You can create pre-release versions using a suffix. For more info see https://docs.microsoft.com/en-us/nuget/concepts/package-versioning.'\n      placeholder: 1.0.0\n    validations:\n      required: true\n  - type: dropdown\n    id: auto-generate-release-notes\n    attributes:\n      label: Auto-generate release notes?\n      description: Automatically add the markdown for all the merged pull requests from this diff and contributors of this release.\n      options:\n        - 'Yes'\n        - 'No'\n    validations:\n      required: true\n  - type: dropdown\n    id: push-nuget\n    attributes:\n      label: Push to NuGet.org?\n      description: This is optional.\n      options:\n        - 'Yes'\n        - 'No'\n  - type: textarea\n    id: custom-release-notes\n    attributes:\n      label: Custom release notes?\n      description: This is optional. If filled it will be added at the start of the release notes, before the auto generated release notes.\n      placeholder: '## Release notes'\n  - type: checkboxes\n    id: operating-systems\n    attributes:\n      label: Which operating systems have you used?\n      description: You may select more than one.\n      options:\n        - label: macOS\n        - label: Windows\n        - label: Linux\n```\n\nAnd given the following issue form body:\n\n```md\n### What NuGet package do you want to release?\n\ndotnet-sdk-extensions\n\n### What is the new version for the NuGet package?\n\n1.0.13-alpha\n\n### Auto-generate release notes?\n\nYes\n\n### Push to NuGet.org?\n\n_No response_\n\n### Custom release notes?\n\nMy custom release notes.\n\nAnother line:\n- point 1\n- point 2\n- point 3\n\n### Which operating systems have you used?\n\n- [X] macOS\n- [X] Windows\n- [ ] Linux\n```\n\nThe output would be:\n\n```json\n{\n  \"nuget-id\": \"dotnet-sdk-extensions\",\n  \"nuget-version\": \"1.0.13-alpha\",\n  \"auto-generate-release-notes\": \"Yes\",\n  \"push-nuget\": \"\",\n  \"custom-release-notes\": \"My custom release notes\\n\\nAnother line:\\n- point 1\\n- point 2\\n- point 3\",\n  \"operating-systems\": {\n    \"macos\": true,\n    \"windows\": true,\n    \"linux\": false,\n  }\n}\n```\n\n## Example usages of this action in GitHub workflows\n\n- [This workflow](https://github.com/edumserrano/github-issue-forms-parser/blob/main/.github/workflows/test-action.yml) is used to test that the action works as expected.\n- [This workflow](https://github.com/edumserrano/dot-net-sdk-extensions/blob/33303189c564989fd40fcb1fa5086ca443f7bd92/.github/workflows/nuget-release.yml#L69-L73) shows the usage of the action as part of the release flow of a NuGet package.\n\n## I can't figure out the structure of the JSON object produced by the parser\n\nYou can check the structure of the action's output on the log produced by the action.\n\nIn the log for the action, expand the groups for `dotnet GitHub issue form parser output` and `dotnet GitHub issue form parser output indented` as shown in the image below.\n\n![debug-output](docs/main-readme-assets/debug-output.png \"Debug output\")\n\n## Dev notes\n\nFor notes aimed at developers working on this repo or just trying to understand it go [here](/docs/dev-notes/README.md). It will show you how to build and run the solution among other things.\n","funding_links":["https://github.com/sponsors/edumserrano"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedumserrano%2Fgithub-issue-forms-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedumserrano%2Fgithub-issue-forms-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedumserrano%2Fgithub-issue-forms-parser/lists"}