{"id":22197885,"url":"https://github.com/onmax/issue-form-parser","last_synced_at":"2026-02-13T23:32:32.470Z","repository":{"id":65400618,"uuid":"591671312","full_name":"onmax/issue-form-parser","owner":"onmax","description":"Convert GitHub Form Issues into JSON objects with this simple Action.","archived":false,"fork":false,"pushed_at":"2025-01-19T17:40:18.000Z","size":2364,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-10T23:49:45.633Z","etag":null,"topics":["github-actions","issue-forms","json","parser"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/actions/issue-form-parser","language":"TypeScript","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/onmax.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-01-21T13:45:13.000Z","updated_at":"2025-01-19T17:40:00.000Z","dependencies_parsed_at":"2024-05-21T08:57:17.074Z","dependency_job_id":"cf5dc386-0784-4617-b809-a74e576f91f9","html_url":"https://github.com/onmax/issue-form-parser","commit_stats":{"total_commits":14,"total_committers":2,"mean_commits":7.0,"dds":0.0714285714285714,"last_synced_commit":"e417bc7eb2633f3279b32c15301f256e85293d08"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":"actions/typescript-action","purl":"pkg:github/onmax/issue-form-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmax%2Fissue-form-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmax%2Fissue-form-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmax%2Fissue-form-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmax%2Fissue-form-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onmax","download_url":"https://codeload.github.com/onmax/issue-form-parser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmax%2Fissue-form-parser/sbom","scorecard":{"id":707540,"data":{"date":"2025-08-11","repo":{"name":"github.com/onmax/issue-form-parser","commit":"b4b8957190646f6ddd480a53cc18d3bdfdbd13b7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"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":"Code-Review","score":0,"reason":"Found 1/19 approved changesets -- score normalized to 0","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","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":"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":"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":"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:15: update your workflow using https://app.stepsecurity.io/secureworkflow/onmax/issue-form-parser/test.yml/main?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:3","Warn: npmCommand not pinned by hash: .github/workflows/test.yml:17","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 npmCommand 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":"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":"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":"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":"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":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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 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-22T07:07:34.709Z","repository_id":65400618,"created_at":"2025-08-22T07:07:34.709Z","updated_at":"2025-08-22T07:07:34.709Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29423534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T22:20:51.549Z","status":"ssl_error","status_checked_at":"2026-02-13T22:20:49.838Z","response_time":78,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["github-actions","issue-forms","json","parser"],"created_at":"2024-12-02T14:24:30.478Z","updated_at":"2026-02-13T23:32:32.444Z","avatar_url":"https://github.com/onmax.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/onmax/issue-form-parser/actions\"\u003e\u003cimg alt=\"issue-form-parser status\" src=\"https://github.com/onmax/issue-form-parser/actions/workflows/test.yml/badge.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Issue Form Parser - GitHub Action\n\nConvert GitHub Form Issues into JSON objects with this simple Action.\n\n![Issue Form Parser](./issue-form-parser.png)\n\n---\n\n## Description\n\nThis GitHub Action allows you to easily convert GitHub issues into JSON objects,\nmaking it simple to work with and manipulate issue data in your workflow. With\njust a few simple steps, you can use this action to automatically convert an\nissue into a JSON object, which can then be used for a variety of purposes, such\nas data analysis, reporting, or integration with other systems. This action is\ndesigned to be flexible and easy to use, so you can quickly and easily convert\nissues into JSON format without any hassle.\n\n## Parameters\n\n| Name           | Required | Description                                                                                               |\n| -------------- | -------- | --------------------------------------------------------------------------------------------------------- |\n| `issue_number` | `true`   | The issue number to parse.                                                                                |\n| `github_token` | `false`  | The GitHub token to use for authentication and fetching the issue. Defaults to the `GITHUB_TOKEN` secret. |\n\n## Usage\n\nFirst, you need to create a GitHub Issue Form. You can read more about it\n[here](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms).\n\nThen, you need to create a workflow file and include the following step:\n\n```yaml\nsteps:\n  - name: Parse issue\n    id: parse\n    uses: onmax/issue-form-parser@v1.6.0\n    with:\n      issue_number: ${{ github.event.issue.number }}\n\n  # Examples on how to use the output\n  - name: Show parsed payload data\n    run: |\n      # Using the character `'` to prevent all characters enclosed within\n      # them from being treated as special characters (e.g. $ or `)\n      echo '${{ steps.parse.outputs.payload }}'\n\n      # Print the value of the \"Name\" field\n      echo '${{ fromJson(steps.parse.outputs.payload)[\"Name\"] }}'\n```\n\n## ⚠️ Limitations\n\n- The action only works with issues, not pull requests.\n- **The `issue_number` input is required.** If the event that trigger the\n  workflow is not an issue, you need to specify the issue number manually.\n- **The returned `payload` is a string.** You need to use `fromJson` to convert\n  it to a JSON object. Read more about\n  [GitHub Actions expressions](https://docs.github.com/en/actions/learn-github-actions/expressions#fromJson).\n\n## Example\n\nThis issue:\n\n```md\n### Country\n\nSpain\n\n### Age\n\nThe age of the candidate is 17 years old\n\n### Languages\n\nPython, TypeScript, others...\n\n### How many years of experience do you have?\n\nI have 2 years of experience\n\n### What languages do you know?\n\n- [x] Python\n- [x] TypeScript\n- [ ] JavaScript\n- [ ] C++\n```\n\nWill be converted to:\n\n```json\n{\n  \"Country\": \"Spain\",\n  \"Age\": \"The age of the candidate is 17 years old\",\n  \"Languages\": [\"Python\", \"TypeScript\", \"others...\"],\n  \"How many years of experience do you have?\": \"I have 2 years of experience\",\n  \"What languages do you know?\": {\n    \"Python\": true,\n    \"TypeScript\": true,\n    \"JavaScript\": false,\n    \"C++\": false\n  }\n}\n```\n\n### 📝 Notes\n\n- If you use Dropdowns with multiple answers, the answers will be an array. This\n  is also true for answers that are separated by commas.\n- If you use Checkboxes, the answers will be an object with the name of the\n  checkbox as the key and the value will be `true` if the checkbox is checked,\n  and `false` if it is not.\n\n## Learn more about the parser\n\n\u003cdetails\u003e\n\u003csummary\u003eTypes of issues\u003c/summary\u003e\n\n## Types of issues\n\nTo understand and format the issues, first we need to understand the different\ntypes of issues that can be created using GitHub UI. There are two types of\nissues that can be created:\n\n### Issue Form\n\nThis types of forms are created using the issue form feature, where the user\nneeds to fill in the form. The content of the issue is the form itself, and the\nuser's answers are in the body of the issue.\n\n```md\n### Question 1\\n\\nAnswer 1\\n\\n### Question 2\\n\\nAnswer 2\\n\\n### Question 3\\n\\nAnswer 3\n```\n\nThis issue will be parsed as:\n\n```json\n{\n  \"Question 1\": \"Answer 1\",\n  \"Question 2\": \"Answer 2\",\n  \"Question 3\": \"Answer 3\"\n}\n```\n\n### Regular issue\n\nThis types of forms are the more traditional ones, where the user can write\nwhatever they want in the body of the issue. The content of the issue is the\nbody of the issue.\n\n```md\n# Question 1\\r\\n\\r\\nThis is my answer\\r\\n\\r\\n## Question 2\\r\\n\\r\\nThis is my second answer\\r\\n\\r\\n#### Question 3\\r\\n\\r\\nThis is my third answer\n```\n\nThis issue will be parsed as:\n\n```json\n{\n  \"Question 1\": \"This is my answer\",\n  \"Question 2\": \"This is my second answer\",\n  \"Question 3\": \"This is my third answer\"\n}\n```\n\n\u003e As you can see, Regular issues required to have a title followed by a block\n\u003e with the answer.\n\nYou can see the two types of issues here:\n\n- [Issue Form](https://api.github.com/repos/onmax/nimiq-icons/issues/113)\n- [Regular issue](https://api.github.com/repos/onmax/issue-form-parser/issues/10)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eSpecial inputs\u003c/summary\u003e\n\n## Types of inputs\n\nApart from the `input` and `textarea` inputs, there are other types of inputs\nthat can be used in GitHub forms:\n\n### Dropdown\n\nWith the dropdown input, the user can select one or more options from a list. In\nthe markdown, the options are separated by commas.\n\n```md\n### Languages\\n\\nSpanish, English, German\n```\n\nThis issue will be parsed as:\n\n```json\n{\n  \"Languages\": [\"Spanish\", \"English\", \"German\"]\n}\n```\n\n### Checkboxes\n\nWith the checkboxes input, the user can select one or more options from a list.\nIn the markdown, the options are separated by commas.\n\n```md\n### Languages\\n\\n- [X] Spanish\\n- [ ] English\\n- [X] German\n```\n\nThis issue will be parsed as:\n\n```json\n{\n  \"Languages\": {\n    \"Spanish\": true,\n    \"English\": false,\n    \"German\": true\n  }\n}\n```\n\n\u003c/details\u003e\n\n## Acknowledgements\n\n- Based on the previous work of\n  [Peter Murray](https://github.com/peter-murray/issue-forms-body-parser)\n- This template was created using the\n  [TypeScript Action Template](https://github.com/actions/typescript-action)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonmax%2Fissue-form-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonmax%2Fissue-form-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonmax%2Fissue-form-parser/lists"}