{"id":16781396,"url":"https://github.com/kharkevich/issue-ops-approval","last_synced_at":"2026-05-18T22:04:16.845Z","repository":{"id":65160478,"uuid":"565568645","full_name":"kharkevich/issue-ops-approval","owner":"kharkevich","description":"GitHub Action: Approvals for IssueOps","archived":false,"fork":false,"pushed_at":"2022-11-14T00:34:32.000Z","size":164,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-02T02:22:47.967Z","etag":null,"topics":["github-actions","issue-ops","issueops"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/actions/github-issueops-approvals","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kharkevich.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":null,"security":null,"support":null}},"created_at":"2022-11-13T20:11:39.000Z","updated_at":"2023-02-08T02:05:11.000Z","dependencies_parsed_at":"2023-01-13T15:43:56.634Z","dependency_job_id":null,"html_url":"https://github.com/kharkevich/issue-ops-approval","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"494efba1c77853428c20cccb401cfbed34b6e531"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharkevich%2Fissue-ops-approval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharkevich%2Fissue-ops-approval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharkevich%2Fissue-ops-approval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kharkevich%2Fissue-ops-approval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kharkevich","download_url":"https://codeload.github.com/kharkevich/issue-ops-approval/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243933439,"owners_count":20370986,"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","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-ops","issueops"],"created_at":"2024-10-13T07:42:58.526Z","updated_at":"2026-05-18T22:04:16.757Z","avatar_url":"https://github.com/kharkevich.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Get Approval based on GitHub issue comments\n\n## Usage\n\n```yaml\nname: Get Some Feedback based on issue comments\non:\n  issue_comment:\n    types:\n      - created\npermissions:\n  contents: read\n  issues: read\n\njobs:\n  get-approval:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Get Approval\n        id: approval\n        uses: kharkevich/issue-ops-approval@v1\n        with:\n          repo-token: ${{ secrets.GITHUB_TOKEN }}\n          mode: list\n          approvers: github_username\n      - name: Run if approved\n        if: steps.approval.outputs.approved == 'true'\n        run: echo \"Approved!\"\n      - name: Run if not approved\n        if: steps.approval.outputs.approved == 'false'\n        run: echo \"Not approved!\"\n      - name: Run if undefined\n        if: steps.approval.outputs.approved == 'undefined'\n        run: echo \"Undefined!\"\n```\n- `repo-token` is a token with `contents` and `issues` permissions\n- `mode` is a mode how to determine approvers, can be `list` (to get approvers list from the input) or `team` (to get approvers list from the GitHub team)\n- `minimum-approvals` is an integer that sets the minimum number of approvals required to progress the workflow. Defaults 1 approvers\n- `fail-on-decline` if it is set to `true` the workflow will fail if there is a decline. Defaults `false`.\n- `approve-words` words that will be used to approve the workflow. See default list in [action.yml](action.yml)\n- `decline-words` words that will be used to decline the workflow. See default list in [action.yml](action.yml)\n\n- `approvers` is a comma-delimited list of all required approvers. An approver can either be a user or an org team\n\n## Org team approver\n\nIf you want to have `approvers` set to an org team, then you can't use regular `GITHUB_TOKEN` due to the absent of necessary permissions. [GitHub Actions automatic token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token)\nIn this case, you need to generate a token from a GitHub App with the correct set of permissions.\n\nCreate a GitHub App with **read-only access to organization members**. Once the app is created, add a repo secret with the app ID. In the GitHub App settings, generate a private key and add that as a secret in the repo as well. You can get the app token by using the [`tibdex/github-app-token`](https://github.com/tibdex/github-app-token) GitHub Action:\n\n```yaml\nname: Get Some Feedback based on issue comments\non:\n  issue_comment:\n    types:\n      - created\npermissions:\n  contents: read\n  issues: read\njobs:\n  somejob:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Generate token\n        id: generate_token\n        uses: tibdex/github-app-token@v1\n        with:\n          app_id: ${{ secrets.APP_ID }}\n          private_key: ${{ secrets.APP_PRIVATE_KEY }}\n      - name: Get Approval\n        id: approval\n        uses: kharkevich/issue-ops-approval@v1\n        with:\n          repo-token: ${{ steps.generate_token.outputs.token }}\n          mode: team\n          approvers: github_team\n      - name: Run if approved\n        if: steps.approval.outputs.approved == 'true'\n        run: echo \"Approved!\"\n      - name: Run if not approved\n        if: steps.approval.outputs.approved == 'false'\n        run: echo \"Not approved!\"\n      - name: Run if undefined\n        if: steps.approval.outputs.approved == 'undefined'\n        run: echo \"Undefined!\"\n```\n## License\nApache License 2.0. See [LICENSE](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkharkevich%2Fissue-ops-approval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkharkevich%2Fissue-ops-approval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkharkevich%2Fissue-ops-approval/lists"}