NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Jira get issue types and fields // @description Adds a button to get the list of issue types, and the fields for a chosen type // @namespace https://openuserjs.org/users/floodmeadows // @copyright 2021, floodmeadows (https://openuserjs.org/users/floodmeadows) // @license MIT // @version 0.2 // @include https://jira.tools.tax.service.gov.uk/browse/* // @updateURL https://openuserjs.org/meta/floodmeadows/Jira_get_issue_types_and_fields.meta.js // @downloadURL https://openuserjs.org/install/floodmeadows/Jira_get_issue_types_and_fields.user.js // @grant none // ==/UserScript== /* jshint esversion: 6 */ //--- Customise these to your Jira project ----// const jiraSubtaskIssueTypeId = 5; //---------------------------------------------// //--- Jira instance / project info ---// const currentUrl = new URL(document.URL); const jiraBaseUrl = currentUrl.protocol + '//' + currentUrl.host; // Parse the Jira project key out of the current URL. e.g. if the current issue key is "ABC-1234" then the project key will be ABC. const pathArr = location.pathname.split("/"); const jiraProjectKey = pathArr[pathArr.length-1].split("-")[0]; (function () { 'use strict'; addLinkGetIssueTypes(); })(); function addLinkGetIssueTypes() { const newElement = document.createElement("a"); newElement.setAttribute("href", "#"); newElement.setAttribute("class", "aui-button toolbar-trigger issueaction-workflow-transition"); newElement.addEventListener("click", getIssueTypes); //newElement.addEventListener("click", getIssueFieldsForIssueType); const text = document.createTextNode("Get issue types"); newElement.appendChild(text); const target = document.getElementById('opsbar-transitions_more'); target.parentNode.appendChild(newElement); } function getIssueTypes() { const issueTypesUrl = jiraBaseUrl + '/rest/api/2/issue/createmeta/' + jiraProjectKey + '/issuetypes'; var headers = new Headers(); headers.append("Content-Type", "application/json"); var requestOptions = { method: 'GET', headers: headers }; fetch(issueTypesUrl, requestOptions) .then(response => console.log(response.text())) .catch(error => console.log('error', error)); /* Output includes... { "self":"https://jira.tools.tax.service.gov.uk/rest/api/2/issuetype/5", "id":"5", "description":"The sub-task of the issue", "iconUrl":"https://jira.tools.tax.service.gov.uk/secure/viewavatar?size=xsmall&avatarId=10916&avatarType=issuetype", "name":"Sub-task", "subtask":true }, { "self":"https://jira.tools.tax.service.gov.uk/rest/api/2/issuetype/7", "id":"7", "description":"Created by Jira Software - do not edit or delete. Issue type for a user story.", "iconUrl":"https://jira.tools.tax.service.gov.uk/secure/viewavatar?size=xsmall&avatarId=10915&avatarType=issuetype", "name":"Story", "subtask":false }, */ } function getIssueFieldsForIssueType() { const getIssueFieldsUrl = jiraBaseUrl + '/rest/api/2/issue/createmeta/' + jiraProjectKey + '/issuetypes/' + jiraSubtaskIssueTypeId; var headers = new Headers(); headers.append("Content-Type", "application/json"); var requestOptions = { method: 'GET', headers: headers }; fetch(getIssueFieldsUrl, requestOptions) .then(response => console.log(response.text())) .catch(error => console.log('error', error)); /* Response included: // required fields: issuetype, parent, project, reporter, summary { "required":true, "schema":{ "type":"issuetype", "system":"issuetype" }, "name":"Issue Type", "fieldId":"issuetype", "hasDefaultValue":false, "operations":[ ], "allowedValues":[ { "self":"https://jira.tools.tax.service.gov.uk/rest/api/2/issuetype/5", "id":"5", "description":"The sub-task of the issue", "iconUrl":"https://jira.tools.tax.service.gov.uk/secure/viewavatar?size=xsmall&avatarId=10916&avatarType=issuetype", "name":"Sub-task", "subtask":true, "avatarId":10916 } ] }, { "required":true, "schema":{ "type":"issuelink", "system":"parent" }, "name":"Parent", "fieldId":"parent", "hasDefaultValue":false, "operations":[ "set" ] }, { "required":true, "schema":{ "type":"project", "system":"project" }, "name":"Project", "fieldId":"project", "hasDefaultValue":false, "operations":[ "set" ], "allowedValues":[ { "self":"https://jira.tools.tax.service.gov.uk/rest/api/2/project/18800", "id":"18800", "key":"HMA", "name":"HMRC Mobile App", "projectTypeKey":"software", "avatarUrls":{ "48x48":"https://jira.tools.tax.service.gov.uk/secure/projectavatar?pid=18800&avatarId=21003", "24x24":"https://jira.tools.tax.service.gov.uk/secure/projectavatar?size=small&pid=18800&avatarId=21003", "16x16":"https://jira.tools.tax.service.gov.uk/secure/projectavatar?size=xsmall&pid=18800&avatarId=21003", "32x32":"https://jira.tools.tax.service.gov.uk/secure/projectavatar?size=medium&pid=18800&avatarId=21003" } } ] }, { "required":true, "schema":{ "type":"user", "system":"reporter" }, "name":"Reporter", "fieldId":"reporter", "autoCompleteUrl":"https://jira.tools.tax.service.gov.uk/rest/api/latest/user/search?username=", "hasDefaultValue":false, "operations":[ "set" ] }, { "required":true, "schema":{ "type":"string", "system":"summary" }, "name":"Summary", "fieldId":"summary", "hasDefaultValue":false, "operations":[ "set" ] }, */ }