{"id":22973916,"url":"https://github.com/frieder/jira-issue-updater","last_synced_at":"2026-03-12T02:33:10.253Z","repository":{"id":143303405,"uuid":"608134075","full_name":"frieder/jira-issue-updater","owner":"frieder","description":"A Github action to update Jira issues","archived":false,"fork":false,"pushed_at":"2026-03-02T09:09:34.000Z","size":1218,"stargazers_count":5,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-02T13:09:32.008Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/frieder.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,"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}},"created_at":"2023-03-01T11:48:58.000Z","updated_at":"2026-03-02T09:09:37.000Z","dependencies_parsed_at":"2023-05-02T04:23:07.147Z","dependency_job_id":"4b43aa01-5a55-4eca-9f16-8314ab91ce03","html_url":"https://github.com/frieder/jira-issue-updater","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/frieder/jira-issue-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frieder%2Fjira-issue-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frieder%2Fjira-issue-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frieder%2Fjira-issue-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frieder%2Fjira-issue-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frieder","download_url":"https://codeload.github.com/frieder/jira-issue-updater/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frieder%2Fjira-issue-updater/sbom","scorecard":{"id":411507,"data":{"date":"2025-08-11","repo":{"name":"github.com/frieder/jira-issue-updater","commit":"9e523c35f8acde502e6bf9909250e204db3699a5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.9,"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":"Maintained","score":10,"reason":"30 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":"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":"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":"Code-Review","score":-1,"reason":"Found no human activity in the last 15 changesets","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: topLevel 'contents' permission set to 'write': .github/workflows/pr.yml:14","Warn: no topLevel permission defined: .github/workflows/sonar.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":"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/pr.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/frieder/jira-issue-updater/pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/frieder/jira-issue-updater/pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/frieder/jira-issue-updater/pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sonar.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/frieder/jira-issue-updater/sonar.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/sonar.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/frieder/jira-issue-updater/sonar.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/sonar.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/frieder/jira-issue-updater/sonar.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/pr.yml:33","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction 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":"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":-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":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: all commits (30) 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"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T22:48:57.121Z","repository_id":143303405,"created_at":"2025-08-18T22:48:57.121Z","updated_at":"2025-08-18T22:48:57.121Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30413105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"online","status_checked_at":"2026-03-12T02:00:07.260Z","response_time":114,"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-12-14T23:59:33.591Z","updated_at":"2026-03-12T02:33:10.231Z","avatar_url":"https://github.com/frieder.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jira Issue Updater - Github Action\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/frieder/jira-issue-updater/pr.yml?label=Build%20Status)](https://github.com/frieder/jira-issue-updater/actions/workflows/pr.yml)\n[![Open Issues](https://img.shields.io/github/issues-raw/frieder/jira-issue-updater?label=Open%20Issues)](https://github.com/frieder/jira-issue-updater/issues?q=is%3Aopen+is%3Aissue)\n[![Sonar Issues](https://img.shields.io/sonar/violations/frieder_jira-issue-updater/main?format=long\u0026server=https%3A%2F%2Fsonarcloud.io\u0026label=Sonar%20Violations)](https://sonarcloud.io/project/overview?id=frieder_jira-issue-updater)\n[![Known Vulnerabilities](https://snyk.io/test/github/frieder/jira-issue-updater/badge.svg)](https://snyk.io/test/github/frieder/jira-issue-updater)\n\nA GitHub action to update properties of an existing Jira issue.\n\n\u003e -   Only supports Jira Cloud.\n\u003e -   Requires [Jira Login Action](https://github.com/marketplace/actions/atlassian-jira-login).\n\n## Usage\n\n```yaml\nname: Jira Issue Updater\n\non: [..]\n\njobs:\n  update-jira-issue:\n    name: Update Jira issue\n    runs-on: ubuntu-latest\n    steps:\n      - name: Jira Login\n        uses: frieder/gha-jira-login@v1\n        env:\n          JIRA_BASE_URL: ${{ vars.JIRA_BASE_URL }}\n          JIRA_USER_EMAIL: ${{ vars.JIRA_USER_EMAIL }}\n          JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}\n\n      - name: Update Fields\n        id: updatefields\n        uses: frieder/jira-issue-updater@v1.1.0\n        with:\n          retries: 1\n          retryDelay: 10\n          timeout: 2000\n          failOnError: true\n          # either one of the following three config option formats of 'issue' is valid\n          issue: XYZ-123\n          issue: XYZ-1,XYZ-2,XYZ-3\n          issue: |\n            XYZ-1\n            XYZ-2\n            XYZ-3\n          summary: Some fancy title\n          description: Plaintext only\n          assignee: 123456:12345678-abcd-abcd-abcd-1234567890ab\n          priority: Lowest\n          duedate: 2023-02-01\n          resolution: Won't Do\n          components: |\n            = component1\n            = component2\n            + component3\n            - component2\n          fixversions: |\n            = 1.0\n            = 1.1\n            + 2.0\n            - 1.1\n          labels: |\n            = foo\n            = foo2\n            = bar2\n            + bar\n            - foo2\n            - bar2\n          customfields: |\n            10050: some value\n            10051: 2023-01-01\n            10052: https://github.com/marketplace?type=action\n          customfieldsJson: |\n            10057: {\"content\":[{\"content\":[{\"type\":\"text\",\"text\":\"Content for the TextArea custom field\"}],\"type\":\"paragraph\"}],\"type\":\"doc\",\"version\":1}\n            10058: [\"value1\", \"value2]\n\n      # this action will only be reached when failOnError was set to false in the previous step\n      - name: Print Outputs\n        run: |\n          echo \"HAS ERRORS: ${{ steps.updatefields.outputs.hasErrors }}\"\n          echo \"IDs SUCCESS: ${{ steps.updatefields.outputs.successful }}\"\n          echo \"IDs ERROR: ${{ steps.updatefields.outputs.failed }}\"\n```\n\n## Configuration Options\n\n### Option: retries\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  | 1   |\n\nThis option allows to define a number of retries when the HTTP call to the Jira REST API fails (e.g. due to\nconnectivity issues). By default, the action will attempt one retry and after that report the request as failed.\n\n### Option: retryDelay\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  | 10  |\n\nIn case the `retries` option is \u003e 0, this option defines the time (in seconds) the action will wait in\nbetween the requests.\n\n### Option: timeout\n\n|          |      |\n| :------- | :--- |\n| Required | no   |\n| Default  | 2000 |\n\nThe time (in milliseconds) the action will wait for a request to finish. If the request does not finish in\ntime it will be considered failed.\n\n### Option: failOnError\n\n|          |      |\n| :------- |:-----|\n| Required | no   |\n| Default  | true |\n\nWhen set to true (default) the action will report back as failed whenever at least one issue could not be\nupdated. When set to false it means the action will never fail (unless an exception occurs outside the requests,\ne.g. when reading login data, parsing inputs etc.). Also check the documentation about outputs of this action.\n\n### Option: issue\n\n|          |     |\n| :------- | :-- |\n| Required | yes |\n| Default  |     |\n\nThe ID(s) of the Jira ticket (e.g. XYZ-123). This option allows to define one or many issue IDs at the same time.\nFor multiple IDs it also allows to define those in two different formats.\n\n* A comma-separated list of issue IDs\n* A line-separated list pf issue IDs\n\n\u003e This is the only option that must be provided explicitly. All the following options are optional with the\n\u003e requirement that at least one of them must be provided.\n\n### Option: summary\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the summary (title) of the ticket. \u003cbr\u003e\nThe option is ignored when blank.\n\n### Option: description\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the description of the ticket. \u003cbr\u003e\nThe option is ignored when blank.\n\n\u003e This option only allows for a simple plaintext to be set.\n\n### Option: assignee\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the assignee of the ticket. For this the ID of the respective user is required.\n\n\u003e To get the ID of yourself just open the profile page and check the URL for the ID.\n\u003e Another possibility is to use the [Jira REST API](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search/#api-rest-api-3-user-assignable-search-get).\n\nThe option is ignored when blank. To remove the assignee set the value to `REMOVE`.\n\n### Option: priority\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the priority of the ticket. Possible values are the actual names of the priorities as defined in\n`https://ACCOUNT.atlassian.net/secure/admin/ViewPriorities.jspa`. By default, these names are:\n\n-   `Lowest`\n-   `Low`\n-   `Medium`\n-   `High`\n-   `Highest`\n\nThe option is ignored when blank.\n\n### Option: duedate\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the due date of the ticket. The format must be in ISO 8601 format - `yyyy-MM-dd`. \u003cbr\u003e\nThe option is ignored when blank. To remove the due date set the value to `REMOVE`.\n\n### Option: resolution\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the resolution of the ticket. \u003cbr\u003e\nThe option is ignored when blank.\n\n### Option: components\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\n\u003e Make sure your project template supports components or this option will not work. Also make sure\n\u003e the components exist in Jira (check your project's settings) before using them in this action.\n\nAllows to `set|add|remove` components to a Jira ticket. A set of components must be provided with\none entry per line. Depending on the prefix different actions are performed.\n\n-   `=` When a line is prefixed with this character it will be treated like a `SET` action.\n-   `+` When a line is prefixed with this character it will be treated like an `ADD` action.\n-   `-` When a line is prefixed with this character it will be treated like a `REMOVE` action.\n-   `no prefix` - When a line does not have any prefix as described above it will be ignored.\n\nIn order for this to work all entries will first be grouped and assigned to one of the three groups.\nAfterwards it will create a body payload that includes the `SET` group first followed by the `ADD`\ngroup and then the `REMOVE` group. Check the [Jira REST API](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-put)\nfor more information.\n\n\u003e When a `SET` group is available it will basically replace whatever was available before. The `ADD`\n\u003e group will then add additional entries on top of the new values from the `SET` group. The `REMOVE`\n\u003e group will be applied last and will remove entries that were added by the two other groups. The\n\u003e usual use-case however is to either use `SET` or a combination of `ADD`and `REMOVE` groups. In most\n\u003e cases it does not make sense to mix all three groups in one step.\n\nThe option is ignored when blank.\n\n### Option: fixversions\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\n\u003e Make sure your project template supports versions or this option will not work. Also make sure\n\u003e the versions exist in Jira (check your project's releases) before using them in this action.\n\nAllows to `set|add|remove` fix versions for a Jira ticket. A set of versions must be provided with\none entry per line. Depending on the prefix different actions are performed.\n\n-   `=` When a line is prefixed with this character it will be treated like a `SET` action.\n-   `+` When a line is prefixed with this character it will be treated like an `ADD` action.\n-   `-` When a line is prefixed with this character it will be treated like a `REMOVE` action.\n-   `no prefix` - When a line does not have any prefix as described above it will be ignored.\n\nIn order for this to work all entries will first be grouped and assigned to one of the three groups.\nAfterwards it will create a body payload that includes the `SET` group first followed by the `ADD`\ngroup and then the `REMOVE` group. Check the [Jira REST API](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-put)\nfor more information.\n\n\u003e When a `SET` group is available it will basically replace whatever was available before. The `ADD`\n\u003e group will then add additional entries on top of the new values. The `REMOVE` group will then\n\u003e remove entries that were added by the two other groups. The usual use-case however is to either\n\u003e use `SET` or a combination of `ADD`and `REMOVE` groups. It does not make sense to mix all three groups\n\u003e in one step.\n\nThe option is ignored when blank.\n\n### Option: labels\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nAllows to `set|add|remove` labels to a Jira ticket. A set of labels must be provided with\none entry per line. Depending on the prefix different actions are performed.\n\n-   `=` When a line is prefixed with this character it will be treated like a `SET` action.\n-   `+` When a line is prefixed with this character it will be treated like an `ADD` action.\n-   `-` When a line is prefixed with this character it will be treated like a `REMOVE` action.\n-   `no prefix` - When a line does not have any prefix as described above it will be ignored.\n\nIn order for this to work all entries will first be grouped and assigned to one of the three groups.\nAfterwards it will create a body payload that includes the `SET` group first followed by the `ADD`\ngroup and then the `REMOVE` group. Check the [Jira REST API](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-put)\nfor more information.\n\n\u003e When a `SET` group is available it will basically replace whatever was available before. The `ADD`\n\u003e group will then add additional entries on top of the new values. The `REMOVE` group will then\n\u003e remove entries that were added by the two other groups. The usual use-case however is to either\n\u003e use `SET` or a combination of `ADD`and `REMOVE` groups. It does not make sense to mix all three groups\n\u003e in one step.\n\n\u003e When a value for a non-existing component is used the Jira REST API will create such a component.\n\nThe option is ignored when blank.\n\n### Option: customfields\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the value of custom fields in the Jira ticket. It expects a set of IDs for the custom fields along\nwith their associated value, separated by a colon (`:`). One entry per line.\n\n\u003e The value of a custom field can contain colons (`:`) as only the first occurance of a colon per line is\n\u003e interpreted as a delimiter.\n\nThe option is ignored when blank.\n\n### Option: customfieldsJson\n\n|          |     |\n| :------- | :-- |\n| Required | no  |\n| Default  |     |\n\nUpdates the value of custom fields in the Jira ticket. It expects a set of IDs for the custom fields along\nwith their associated JSON encoded value, separated by a colon (`:`). One entry per line.\n\nJSON encoded value is needed when you want to se multi-value custom fields, or more complex ones that\nrequire [Atlassian Document Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/).\n\n\u003e The value of a custom field can contain colons (`:`) as only the first occurrence of a colon per line is\n\u003e interpreted as a delimiter.\n\nThe option is ignored when blank.\n\n## Outputs\n\nThis action provides some information via outputs for post-processing. Following is an overview of the keys registered\nwith the action's output.\n\n1. `hasErrors` - A boolean value indicating whether there are issues that have not been updated successfully. This is\n   useful when the `failOnError` option is set to `false` and one still wants to check if there have been\n   failed update attempts.\n2. `successful` - A list of IDs of issues that have successfully been updated. The format is the same as used with the\n   `issues` option (either comma or line separated).\n3. `failed` - A list of IDs of issues that failed to get updated. This may be useful to add comments to the tickets\n   in question or to report those tickets to a Slack or MSTeams channel. The format is again the same as\n   with the `issues` option.\n\n## Test Action\n\nThis action can be tested during development with the use of https://github.com/nektos/act.\n\nPlease adapt the values accordingly both in the workflow file and in the CLI command.\n\n```\nact -W .github/workflows/pr.yml \\\n    -j check \\\n    -s JIRA_URL=*** \\\n    -s JIRA_EMAIL=*** \\\n    -s JIRA_TOKEN=***\n    \n    #--var JIRA_ISSUES=WEB-123\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrieder%2Fjira-issue-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrieder%2Fjira-issue-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrieder%2Fjira-issue-updater/lists"}