import utils from "../../common/utils.mjs";
import jira from "../../jira.app.mjs";
export default {
key: "jira-transition-issue",
name: "Transition Issue",
description: "Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen, [See the docs](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-transitions-post)",
version: "0.1.11",
type: "action",
props: {
jira,
cloudId: {
propDefinition: [
jira,
"cloudId",
],
},
issueIdOrKey: {
propDefinition: [
jira,
"issueIdOrKey",
(c) => ({
cloudId: c.cloudId,
}),
],
},
transition: {
propDefinition: [
jira,
"transition",
(configuredProps) => ({
issueIdOrKey: configuredProps.issueIdOrKey,
cloudId: configuredProps.cloudId,
}),
],
optional: false,
},
fields: {
propDefinition: [
jira,
"fields",
],
},
update: {
type: "object",
label: "Update",
description: "List of operations to perform on issue screen fields. Note that fields included in here cannot be included in fields.",
optional: true,
},
historyMetadata: {
type: "object",
label: "History metadata",
description: "Additional issue history details, See `HistoryMetadata` section of [doc](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues/#api-rest-api-3-issue-issueidorkey-transitions-post)",
optional: true,
},
properties: {
type: "string",
label: "Properties",
description: "Details of issue properties to be add or update.",
optional: true,
},
additionalProperties: {
type: "object",
label: "Additional properties",
description: "Extra properties of any type may be provided to this object.",
optional: true,
},
},
async run({ $ }) {
const transition = {
id: this.transition,
};
const fields = utils.parseObject(this.fields);
const update = utils.parseObject(this.update);
const historyMetadata = utils.parseObject(this.historyMetadata);
const additionalProperties = utils.parseObject(this.additionalProperties);
let properties;
try {
properties = JSON.parse(this.properties);
} catch (err) {
}
await this.jira.transitionIssue({
$,
cloudId: this.cloudId,
issueIdOrKey: this.issueIdOrKey,
data: {
transition,
fields,
update,
historyMetadata,
properties,
...additionalProperties,
},
});
$.export("$summary", `Transition has performed for the issue with ID(or key): ${this.issueIdOrKey}`);
},
};