workflow
assign
Assign an issue to a user
Assigns an issue. Use --to with a display name, email, 'me', 'none', or 'unassign'. Use 'none' or 'unassign' to remove the assignee.
PUT /rest/api/3/issue/{issueIdOrKey}/assignee
| Flag | Type | Required | Description |
|---|---|---|---|
--issue | string | Yes | issue key (e.g. PROJ-123) |
--to | string | Yes | assignee: display name, email, 'me', 'none', or 'unassign' |
Example:
jr workflow assign --issue <issue> --to <to>comment
Add a plain-text comment to an issue
Posts a comment to a Jira issue. The --text value is converted to Atlassian Document Format automatically.
POST /rest/api/3/issue/{issueIdOrKey}/comment
| Flag | Type | Required | Description |
|---|---|---|---|
--issue | string | Yes | issue key (e.g. PROJ-123) |
--text | string | Yes | comment text (plain text, converted to ADF) |
Example:
jr workflow comment --issue <issue> --text <text>create
Create workflow
This will be removed on February 1, 2026; use Bulk create workflows to create both team and company-managed scoped workflows.
Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no transitional rules are specified the default system transition rules are used. Note: This only applies to company-managed scoped workflows.
Conditions
Conditions enable workflow rules that govern whether a transition can execute.
Always false condition
A condition that always fails.
{
"type": "AlwaysFalseCondition"
}
Block transition until approval
A condition that blocks issue transition if there is a pending approval.
{
"type": "BlockInProgressApprovalCondition"
}
Compare number custom field condition
A condition that allows transition if a comparison between a number custom field and a value is true.
{
"type": "CompareNumberCFCondition",
"configuration": {
"comparator": "=",
"fieldId": "customfield_10029",
"fieldValue": 2
}
}
comparatorOne of the supported comparator:=,>, and<.fieldIdThe custom numeric field ID. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:floatcom.pyxis.greenhopper.jira:jsw-story-points
fieldValueThe value for comparison.
Hide from user condition
A condition that hides a transition from users. The transition can only be triggered from a workflow function or REST API operation.
{
"type": "RemoteOnlyCondition"
}
Only assignee condition
A condition that allows only the assignee to execute a transition.
{
"type": "AllowOnlyAssignee"
}
Only Bamboo notifications workflow condition (deprecated)
A condition that makes the transition available only to Bamboo build notifications.
{
"type": "OnlyBambooNotificationsCondition"
}
Only reporter condition
A condition that allows only the reporter to execute a transition.
{
"type": "AllowOnlyReporter"
}
Permission condition
A condition that allows only users with a permission to execute a transition.
{
"type": "PermissionCondition",
"configuration": {
"permissionKey": "BROWSE_PROJECTS"
}
}
permissionKeyThe permission required to perform the transition. Allowed values: built-in or app defined permissions.
Previous status condition
A condition that allows a transition based on whether an issue has or has not transitioned through a status.
{
"type": "PreviousStatusCondition",
"configuration": {
"ignoreLoopTransitions": true,
"includeCurrentStatus": true,
"mostRecentStatusOnly": true,
"reverseCondition": true,
"previousStatus": {
"id": "5"
}
}
}
By default this condition allows the transition if the status, as defined by its ID in the previousStatus object, matches any previous issue status, unless:
ignoreLoopTransitionsistrue, then loop transitions (from and to the same status) are ignored.includeCurrentStatusistrue, then the current issue status is also checked.mostRecentStatusOnlyistrue, then only the issue's preceding status (the one immediately before the current status) is checked.reverseConditionistrue, then the status must not be present.
Separation of duties condition
A condition that prevents a user to perform the transition, if the user has already performed a transition on the issue.
{
"type": "SeparationOfDutiesCondition",
"configuration": {
"fromStatus": {
"id": "5"
},
"toStatus": {
"id": "6"
}
}
}
fromStatusOPTIONAL. An object containing the ID of the source status of the transition that is blocked. If omitted any transition totoStatusis blocked.toStatusAn object containing the ID of the target status of the transition that is blocked.
Subtask blocking condition
A condition that blocks transition on a parent issue if any of its subtasks are in any of one or more statuses.
{
"type": "SubTaskBlockingCondition",
"configuration": {
"statuses": [
{
"id": "1"
},
{
"id": "3"
}
]
}
}
statusesA list of objects containing status IDs.
User is in any group condition
A condition that allows users belonging to any group from a list of groups to execute a transition.
{
"type": "UserInAnyGroupCondition",
"configuration": {
"groups": [
"administrators",
"atlassian-addons-admin"
]
}
}
groupsA list of group names.
User is in any project role condition
A condition that allows only users with at least one project roles from a list of project roles to execute a transition.
{
"type": "InAnyProjectRoleCondition",
"configuration": {
"projectRoles": [
{
"id": "10002"
},
{
"id": "10003"
},
{
"id": "10012"
},
{
"id": "10013"
}
]
}
}
projectRolesA list of objects containing project role IDs.
User is in custom field condition
A condition that allows only users listed in a given custom field to execute the transition.
{
"type": "UserIsInCustomFieldCondition",
"configuration": {
"allowUserInField": false,
"fieldId": "customfield_10010"
}
}
allowUserInFieldIftrueonly a user who is listed infieldIdcan perform the transition, otherwise, only a user who is not listed infieldIdcan perform the transition.fieldIdThe ID of the field containing the list of users.
User is in group condition
A condition that allows users belonging to a group to execute a transition.
{
"type": "UserInGroupCondition",
"configuration": {
"group": "administrators"
}
}
groupThe name of the group.
User is in group custom field condition
A condition that allows users belonging to a group specified in a custom field to execute a transition.
{
"type": "InGroupCFCondition",
"configuration": {
"fieldId": "customfield_10012"
}
}
fieldIdThe ID of the field. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:multigrouppickercom.atlassian.jira.plugin.system.customfieldtypes:grouppickercom.atlassian.jira.plugin.system.customfieldtypes:selectcom.atlassian.jira.plugin.system.customfieldtypes:multiselectcom.atlassian.jira.plugin.system.customfieldtypes:radiobuttonscom.atlassian.jira.plugin.system.customfieldtypes:multicheckboxescom.pyxis.greenhopper.jira:gh-epic-status
User is in project role condition
A condition that allows users with a project role to execute a transition.
{
"type": "InProjectRoleCondition",
"configuration": {
"projectRole": {
"id": "10002"
}
}
}
projectRoleAn object containing the ID of a project role.
Value field condition
A conditions that allows a transition to execute if the value of a field is equal to a constant value or simply set.
{
"type": "ValueFieldCondition",
"configuration": {
"fieldId": "assignee",
"fieldValue": "qm:6e1ecee6-8e64-4db6-8c85-916bb3275f51:54b56885-2bd2-4381-8239-78263442520f",
"comparisonType": "NUMBER",
"comparator": "="
}
}
fieldIdThe ID of a field used in the comparison.fieldValueThe expected value of the field.comparisonTypeThe type of the comparison. Allowed values:STRING,NUMBER,DATE,DATE_WITHOUT_TIME, orOPTIONID.comparatorOne of the supported comparator:>,>=,=,<=,<,!=.
Notes:
- If you choose the comparison type
STRING, only=and!=are valid options. - You may leave
fieldValueempty when comparison type is!=to indicate that a value is required in the field. - For date fields without time format values as
yyyy-MM-dd, and for those with time asyyyy-MM-dd HH:mm. For example, for July 16 2021 use2021-07-16, for 8:05 AM use2021-07-16 08:05, and for 4 PM:2021-07-16 16:00.
Validators
Validators check that any input made to the transition is valid before the transition is performed.
Date field validator
A validator that compares two dates.
{
"type": "DateFieldValidator",
"configuration": {
"comparator": ">",
"date1": "updated",
"date2": "created",
"expression": "1d",
"includeTime": true
}
}
comparatorOne of the supported comparator:>,>=,=,<=,<, or!=.date1The date field to validate. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:datepickercom.atlassian.jira.plugin.system.customfieldtypes:datetimecom.atlassian.jpo:jpo-custom-field-baseline-endcom.atlassian.jpo:jpo-custom-field-baseline-startduedatecreatedupdatedresolutiondate
date2The second date field. Required, ifexpressionis not passed. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:datepickercom.atlassian.jira.plugin.system.customfieldtypes:datetimecom.atlassian.jpo:jpo-custom-field-baseline-endcom.atlassian.jpo:jpo-custom-field-baseline-startduedatecreatedupdatedresolutiondate
expressionAn expression specifying an offset. Required, ifdate2is not passed. Offsets are built with a number, with-as prefix for the past, and one of these time units:dfor day,wfor week,mfor month, oryfor year. For example, -2d means two days into the past and 1w means one week into the future. Thenowkeyword enables a comparison with the current date.includeTimeIftrue, then the time part of the data is included for the comparison. If the field doesn't have a time part, 00:00:00 is used.
Windows date validator
A validator that checks that a date falls on or after a reference date and before or on the reference date plus a number of days.
{
"type": "WindowsDateValidator",
"configuration": {
"date1": "customfield_10009",
"date2": "created",
"windowsDays": 5
}
}
date1The date field to validate. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:datepickercom.atlassian.jira.plugin.system.customfieldtypes:datetimecom.atlassian.jpo:jpo-custom-field-baseline-endcom.atlassian.jpo:jpo-custom-field-baseline-startduedatecreatedupdatedresolutiondate
date2The reference date. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:datepickercom.atlassian.jira.plugin.system.customfieldtypes:datetimecom.atlassian.jpo:jpo-custom-field-baseline-endcom.atlassian.jpo:jpo-custom-field-baseline-startduedatecreatedupdatedresolutiondate
windowsDaysA positive integer indicating a number of days.
Field required validator
A validator that checks fields are not empty. By default, if a field is not included in the current context it's ignored and not validated.
{
"type": "FieldRequiredValidator",
"configuration": {
"ignoreContext": true,
"errorMessage": "Hey",
"fieldIds": [
"versions",
"customfield_10037",
"customfield_10003"
]
}
}
ignoreContextIftrue, then the context is ignored and all the fields are validated.errorMessageOPTIONAL. The error message displayed when one or more fields are empty. A default error message is shown if an error message is not provided.fieldIdsThe list of fields to validate.
Field changed validator
A validator that checks that a field value is changed. However, this validation can be ignored for users from a list of groups.
{
"type": "FieldChangedValidator",
"configuration": {
"fieldId": "comment",
"errorMessage": "Hey",
"exemptedGroups": [
"administrators",
"atlassian-addons-admin"
]
}
}
fieldIdThe ID of a field.errorMessageOPTIONAL. The error message displayed if the field is not changed. A default error message is shown if the error message is not provided.exemptedGroupsOPTIONAL. The list of groups.
Field has single value validator
A validator that checks that a multi-select field has only one value. Optionally, the validation can ignore values copied from subtasks.
{
"type": "FieldHasSingleValueValidator",
"configuration": {
"fieldId": "attachment,
"excludeSubtasks": true
}
}
fieldIdThe ID of a field.excludeSubtasksIftrue, then values copied from subtasks are ignored.
Parent status validator
A validator that checks the status of the parent issue of a subtask. Ìf the issue is not a subtask, no validation is performed.
{
"type": "ParentStatusValidator",
"configuration": {
"parentStatuses": [
{
"id":"1"
},
{
"id":"2"
}
]
}
}
parentStatusThe list of required parent issue statuses.
Permission validator
A validator that checks the user has a permission.
{
"type": "PermissionValidator",
"configuration": {
"permissionKey": "ADMINISTER_PROJECTS"
}
}
permissionKeyThe permission required to perform the transition. Allowed values: built-in or app defined permissions.
Previous status validator
A validator that checks if the issue has held a status.
{
"type": "PreviousStatusValidator",
"configuration": {
"mostRecentStatusOnly": false,
"previousStatus": {
"id": "15"
}
}
}
mostRecentStatusOnlyIftrue, then only the issue's preceding status (the one immediately before the current status) is checked.previousStatusAn object containing the ID of an issue status.
Regular expression validator
A validator that checks the content of a field against a regular expression.
{
"type": "RegexpFieldValidator",
"configuration": {
"regExp": "[0-9]",
"fieldId": "customfield_10029"
}
}
regExpA regular expression.fieldIdThe ID of a field. Allowed field types:com.atlassian.jira.plugin.system.customfieldtypes:selectcom.atlassian.jira.plugin.system.customfieldtypes:multiselectcom.atlassian.jira.plugin.system.customfieldtypes:radiobuttonscom.atlassian.jira.plugin.system.customfieldtypes:multicheckboxescom.atlassian.jira.plugin.system.customfieldtypes:textareacom.atlassian.jira.plugin.system.customfieldtypes:textfieldcom.atlassian.jira.plugin.system.customfieldtypes:urlcom.atlassian.jira.plugin.system.customfieldtypes:floatcom.pyxis.greenhopper.jira:jsw-story-pointscom.pyxis.greenhopper.jira:gh-epic-statusdescriptionsummary
User permission validator
A validator that checks if a user has a permission. Obsolete. You may encounter this validator when getting transition rules and can pass it when updating or creating rules, for example, when you want to duplicate the rules from a workflow on a new workflow.
{
"type": "UserPermissionValidator",
"configuration": {
"permissionKey": "BROWSE_PROJECTS",
"nullAllowed": false,
"username": "TestUser"
}
}
permissionKeyThe permission to be validated. Allowed values: built-in or app defined permissions.nullAllowedIftrue, allows the transition whenusernameis empty.usernameThe username to validate against thepermissionKey.
Post functions
Post functions carry out any additional processing required after a Jira workflow transition is executed.
Fire issue event function
A post function that fires an event that is processed by the listeners.
{
"type": "FireIssueEventFunction",
"configuration": {
"event": {
"id":"1"
}
}
}
Note: If provided, this post function overrides the default FireIssueEventFunction. Can be included once in a transition.
eventAn object containing the ID of the issue event.
Update issue status
A post function that sets issue status to the linked status of the destination workflow status.
{
"type": "UpdateIssueStatusFunction"
}
Note: This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once.
Create comment
A post function that adds a comment entered during the transition to an issue.
{
"type": "CreateCommentFunction"
}
Note: This post function is a default function in global and directed transitions. It can only be added to the initial transition and can only be added once.
Store issue
A post function that stores updates to an issue.
{
"type": "IssueStoreFunction"
}
Note: This post function can only be added to the initial transition and can only be added once.
Assign to current user function
A post function that assigns the issue to the current user if the current user has the ASSIGNABLE_USER permission.
{
"type": "AssignToCurrentUserFunction"
}
Note: This post function can be included once in a transition.
Assign to lead function
A post function that assigns the issue to the project or component lead developer.
{
"type": "AssignToLeadFunction"
}
Note: This post function can be included once in a transition.
Assign to reporter function
A post function that assigns the issue to the reporter.
{
"type": "AssignToReporterFunction"
}
Note: This post function can be included once in a transition.
Clear field value function
A post function that clears the value from a field.
{
"type": "ClearFieldValuePostFunction",
"configuration": {
"fieldId": "assignee"
}
}
fieldIdThe ID of the field.
Copy value from other field function
A post function that copies the value of one field to another, either within an issue or from parent to subtask.
{
"type": "CopyValueFromOtherFieldPostFunction",
"configuration": {
"sourceFieldId": "assignee",
"destinationFieldId": "creator",
"copyType": "same"
}
}
sourceFieldIdThe ID of the source field.destinationFieldIdThe ID of the destination field.copyTypeUsesameto copy the value from a field inside the issue, orparentto copy the value from the parent issue.
Create Crucible review workflow function (deprecated)
A post function that creates a Crucible review for all unreviewed code for the issue.
{
"type": "CreateCrucibleReviewWorkflowFunction"
}
Note: This post function can be included once in a transition.
Set issue security level based on user's project role function
A post function that sets the issue's security level if the current user has a project role.
{
"type": "SetIssueSecurityFromRoleFunction",
"configuration": {
"projectRole": {
"id":"10002"
},
"issueSecurityLevel": {
"id":"10000"
}
}
}
projectRoleAn object containing the ID of the project role.issueSecurityLevelOPTIONAL. The object containing the ID of the security level. If not passed, then the security level is set tonone.
Trigger a webhook function
A post function that triggers a webhook.
{
"type": "TriggerWebhookFunction",
"configuration": {
"webhook": {
"id": "1"
}
}
}
webhookAn object containing the ID of the webhook listener to trigger.
Update issue custom field function
A post function that updates the content of an issue custom field.
{
"type": "UpdateIssueCustomFieldPostFunction",
"configuration": {
"mode": "append",
"fieldId": "customfield_10003",
"fieldValue": "yikes"
}
}
modeUsereplaceto override the field content withfieldValueorappendto addfieldValueto the end of the field content.fieldIdThe ID of the field.fieldValueThe update content.
Update issue field function
A post function that updates a simple issue field.
{
"type": "UpdateIssueFieldFunction",
"configuration": {
"fieldId": "assignee",
"fieldValue": "5f0c277e70b8a90025a00776"
}
}
fieldIdThe ID of the field. Allowed field types:assigneedescriptionenvironmentpriorityresolutionsummarytimeoriginalestimatetimeestimatetimespent
fieldValueThe update value.If the
fieldIdisassignee, thefieldValueshould be one of these values:- an account ID.
automatic.- a blank string, which sets the value to
unassigned.
Connect rules
Connect rules are conditions, validators, and post functions of a transition that are registered by Connect apps. To create a rule registered by the app, the app must be enabled and the rule's module must exist.
{
"type": "appKey__moduleKey",
"configuration": {
"value":"{\"isValid\":\"true\"}"
}
}
typeA Connect rule key in a form ofappKey__moduleKey.valueThe stringified JSON configuration of a Connect rule.
Forge rules
Forge transition rules are not yet supported.
Permissions required: Administer Jira global permission.
POST /rest/api/3/issue
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
Example:
jr workflow createcreate
Create an issue from flags (no raw JSON needed)
Creates a Jira issue using individual flags. Required: --project, --type, --summary. Optional: --description, --assign, --priority, --labels, --parent.
POST /rest/api/3/issue
| Flag | Type | Required | Description |
|---|---|---|---|
--assign | string | No | assignee: display name, email, 'me', 'none', or 'unassign' |
--description | string | No | issue description (plain text, converted to ADF) |
--labels | string | No | comma-separated list of labels |
--parent | string | No | parent issue key (e.g. PROJ-100) |
--priority | string | No | priority name (e.g. High, Medium, Low) |
--project | string | Yes | project key (e.g. PROJ) |
--summary | string | Yes | issue summary/title |
--type | string | Yes | issue type name (e.g. Bug, Story, Task) |
Example:
jr workflow create --project <project> --summary <summary> --type <type>create-transition-property
Create workflow transition property
This will be removed on June 1, 2026; add transition properties using Bulk update workflows instead.
Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see Transition properties and Workflow properties.
Permissions required: Administer Jira global permission.
POST /rest/api/3/workflow/transitions/{transitionId}/properties
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
--key | string | No | The key of the property being added, also known as the name of the property. Set this to the same value as the key defined in the request body. |
--transitionId | string | Yes | The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. |
--workflowMode | string | No | The workflow status. Set to live for inactive workflows or draft for draft workflows. Active workflows cannot be edited. |
--workflowName | string | No | The name of the workflow that the transition belongs to. |
Example:
jr workflow create-transition-property --transitionId <transitionId>delete-inactive
Delete inactive workflow
Deletes a workflow.
The workflow cannot be deleted if it is:
- an active workflow.
- a system workflow.
- associated with any workflow scheme.
- associated with any draft workflow scheme.
Permissions required: Administer Jira global permission.
DELETE /rest/api/3/workflow/{entityId}
| Flag | Type | Required | Description |
|---|---|---|---|
--entityId | string | Yes | The entity ID of the workflow. |
Example:
jr workflow delete-inactive --entityId <entityId>delete-transition-property
Delete workflow transition property
This will be removed on June 1, 2026; delete transition properties using Bulk update workflows instead.
Deletes a property from a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see Transition properties and Workflow properties.
Permissions required: Administer Jira global permission.
DELETE /rest/api/3/workflow/transitions/{transitionId}/properties
| Flag | Type | Required | Description |
|---|---|---|---|
--key | string | No | The name of the transition property to delete, also known as the name of the property. |
--transitionId | string | Yes | The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. |
--workflowMode | string | No | The workflow status. Set to live for inactive workflows or draft for draft workflows. Active workflows cannot be edited. |
--workflowName | string | No | The name of the workflow that the transition belongs to. |
Example:
jr workflow delete-transition-property --transitionId <transitionId>delete-transition-rule-configurations
Delete workflow transition rule configurations
Deletes workflow transition rules from one or more workflows. These rule types are supported:
Only rules created by the calling Connect app can be deleted.
Permissions required: Only Connect apps can use this operation.
PUT /rest/api/3/workflow/rule/config/delete
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
Example:
jr workflow delete-transition-rule-configurationsget-all
Get all workflows
This will be removed on February 1, 2026; use Search workflows instead.
Returns all workflows in Jira or a workflow.
If the workflowName parameter is specified, the workflow is returned as an object (not in an array). Otherwise, an array of workflow objects is returned.
Permissions required: Administer Jira global permission.
GET /rest/api/3/workflow
| Flag | Type | Required | Description |
|---|---|---|---|
--workflowName | string | No | The name of the workflow to be returned. Only one workflow can be specified. |
Example:
jr workflow get-allget-paginated
Get workflows paginated
This will be removed on June 1, 2026; use Search workflows instead.
Returns a paginated list of published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise, all published classic workflows are returned.
This operation does not return next-gen workflows.
Permissions required: Administer Jira global permission.
GET /rest/api/3/workflow/search
| Flag | Type | Required | Description |
|---|---|---|---|
--expand | string | No | Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: |
transitionsFor each workflow, returns information about the transitions inside the workflow.transitions.rulesFor each workflow transition, returns information about its rules. Transitions are included automatically if this expand is requested.transitions.propertiesFor each workflow transition, returns information about its properties. Transitions are included automatically if this expand is requested.statusesFor each workflow, returns information about the statuses inside the workflow.statuses.propertiesFor each workflow status, returns information about its properties. Statuses are included automatically if this expand is requested.defaultFor each workflow, returns information about whether this is the default workflow.schemesFor each workflow, returns information about the workflow schemes the workflow is assigned to.projectsFor each workflow, returns information about the projects the workflow is assigned to, through workflow schemes.hasDraftWorkflowFor each workflow, returns information about whether the workflow has a draft version.operationsFor each workflow, returns information about the actions that can be undertaken on the workflow. | |--isActive| string | No | Filters active and inactive workflows. | |--maxResults| string | No | The maximum number of items to return per page. | |--orderBy| string | No | Order the results by a field:nameSorts by workflow name.createdSorts by create time.updatedSorts by update time. | |--queryString| string | No | String used to perform a case-insensitive partial match with workflow name. | |--startAt| string | No | The index of the first item to return in a page of results (page offset). | |--workflowName| string | No | The name of a workflow to return. To include multiple workflows, provide an ampersand-separated list. For example,workflowName=name1&workflowName=name2. |
Example:
jr workflow get-paginatedget-project-issue-type-usages
Get issue types in a project that are using a given workflow
Returns a page of issue types using a given workflow within a project.
GET /rest/api/3/workflow/{workflowId}/project/{projectId}/issueTypeUsages
| Flag | Type | Required | Description |
|---|---|---|---|
--maxResults | string | No | The maximum number of results to return. Must be an integer between 1 and 200. |
--nextPageToken | string | No | The cursor for pagination |
--projectId | string | Yes | The project ID |
--workflowId | string | Yes | The workflow ID |
Example:
jr workflow get-project-issue-type-usages --projectId <projectId> --workflowId <workflowId>get-project-usages-for
Get projects using a given workflow
Returns a page of projects using a given workflow.
GET /rest/api/3/workflow/{workflowId}/projectUsages
| Flag | Type | Required | Description |
|---|---|---|---|
--maxResults | string | No | The maximum number of results to return. Must be an integer between 1 and 200. |
--nextPageToken | string | No | The cursor for pagination |
--workflowId | string | Yes | The workflow ID |
Example:
jr workflow get-project-usages-for --workflowId <workflowId>get-transition-properties
Get workflow transition properties
This will be removed on June 1, 2026; fetch transition properties from Bulk get workflows instead.
Returns the properties on a workflow transition. Transition properties are used to change the behavior of a transition. For more information, see Transition properties and Workflow properties.
Permissions required: Administer Jira global permission.
GET /rest/api/3/workflow/transitions/{transitionId}/properties
| Flag | Type | Required | Description |
|---|---|---|---|
--includeReservedKeys | string | No | Some properties with keys that have the jira. prefix are reserved, which means they are not editable. To include these properties in the results, set this parameter to true. |
--key | string | No | The key of the property being returned, also known as the name of the property. If this parameter is not specified, all properties on the transition are returned. |
--transitionId | string | Yes | The ID of the transition. To get the ID, view the workflow in text mode in the Jira administration console. The ID is shown next to the transition. |
--workflowMode | string | No | The workflow status. Set to live for active and inactive workflows, or draft for draft workflows. |
--workflowName | string | No | The name of the workflow that the transition belongs to. |
Example:
jr workflow get-transition-properties --transitionId <transitionId>get-transition-rule-configurations
Get workflow transition rule configurations
Returns a paginated list of workflows with transition rules. The workflows can be filtered to return only those containing workflow transition rules:
- of one or more transition rule types, such as workflow post functions.
- matching one or more transition rule keys.
Only workflows containing transition rules created by the calling Connect or Forge app are returned.
Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be ignored.
Permissions required: Only Connect or Forge apps can use this operation.
GET /rest/api/3/workflow/rule/config
| Flag | Type | Required | Description |
|---|---|---|---|
--draft | string | No | Whether draft or published workflows are returned. If not provided, both workflow types are returned. |
--expand | string | No | Use expand to include additional information in the response. This parameter accepts transition, which, for each rule, returns information about the transition the rule is assigned to. |
--keys | string | No | The transition rule class keys, as defined in the Connect or the Forge app descriptor, of the transition rules to return. |
--maxResults | string | No | The maximum number of items to return per page. |
--startAt | string | No | The index of the first item to return in a page of results (page offset). |
--types | string | No | The types of the transition rules to return. |
--withTags | string | No | The list of tags to filter by. |
--workflowNames | string | No | The list of workflow names to filter by. |
Example:
jr workflow get-transition-rule-configurationsget-workflow-scheme-usages-for
Get workflow schemes which are using a given workflow
Returns a page of workflow schemes using a given workflow.
GET /rest/api/3/workflow/{workflowId}/workflowSchemes
| Flag | Type | Required | Description |
|---|---|---|---|
--maxResults | string | No | The maximum number of results to return. Must be an integer between 1 and 200. |
--nextPageToken | string | No | The cursor for pagination |
--workflowId | string | Yes | The workflow ID |
Example:
jr workflow get-workflow-scheme-usages-for --workflowId <workflowId>link
Create an issue link by type name (resolves link type ID)
Creates a link between two issues. Use --from, --to, and --type. The link type name is matched case-insensitively against name, inward, and outward fields.
POST /rest/api/3/issueLink
| Flag | Type | Required | Description |
|---|---|---|---|
--from | string | Yes | source issue key (e.g. PROJ-1) |
--to | string | Yes | target issue key (e.g. PROJ-2) |
--type | string | Yes | link type name (e.g. blocks, clones, relates to) |
Example:
jr workflow link --from <from> --to <to> --type <type>list-history
List workflow history entries
Returns a list of workflow history entries for a specified workflow id.
Note: Stored workflow data expires after 60 days. Additionally, no data from before the 30th of October 2025 is available.
Permissions required:
- Administer Jira global permission to access all, including project-scoped, workflows
- At least one of the Administer projects and View (read-only) workflow project permissions to access project-scoped workflows
POST /rest/api/3/workflow/history/list
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
--expand | string | No | Use expand to include additional information in the response. This parameter accepts a comma-separated list. Expand options include: |
includeIntermediateWorkflowsIncludes intermediate workflow versions that are sometimes created during workflow updates or migrations. By default, these are omitted from the response. |
Example:
jr workflow list-historylog-work
Add a worklog entry with human-friendly duration (e.g. 2h 30m)
POST /rest/api/3/issue/{issueIdOrKey}/worklog
| Flag | Type | Required | Description |
|---|---|---|---|
--comment | string | No | optional worklog comment (plain text) |
--issue | string | Yes | issue key (e.g. PROJ-123) |
--time | string | Yes | time spent (e.g. 2h 30m, 1d, 45m) |
Example:
jr workflow log-work --issue <issue> --time <time>move
Transition an issue and optionally reassign in one step
Transitions an issue to a new status and optionally reassigns it. Use --to for the target status and --assign for the assignee.
POST /rest/api/3/issue/{issueIdOrKey}/transitions
| Flag | Type | Required | Description |
|---|---|---|---|
--assign | string | No | assignee after transition: display name, email, 'me', 'none', or 'unassign' |
--issue | string | Yes | issue key (e.g. PROJ-123) |
--to | string | Yes | target status name (case-insensitive match) |
Example:
jr workflow move --issue <issue> --to <to>read-from-history
Read workflow version from history
Returns a workflow and related statuses for a specified workflow id and version number.
Note: Stored workflow data expires after 60 days. Additionally, no data from before the 30th of October 2025 is available.
Permissions required:
- Administer Jira global permission to access all, including project-scoped, workflows
- At least one of the Administer projects and View (read-only) workflow project permissions to access project-scoped workflows
POST /rest/api/3/workflow/history
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
Example:
jr workflow read-from-historysprint
Move an issue to a sprint by name (resolves sprint ID)
POST /rest/agile/1.0/sprint/{sprintId}/issue
| Flag | Type | Required | Description |
|---|---|---|---|
--issue | string | Yes | issue key (e.g. PROJ-123) |
--to | string | Yes | sprint name (case-insensitive match) |
Example:
jr workflow sprint --issue <issue> --to <to>transition
Transition an issue to a new status by name
Resolves the transition ID automatically. Use --to to specify the target status name (case-insensitive substring match).
POST /rest/api/3/issue/{issueIdOrKey}/transitions
| Flag | Type | Required | Description |
|---|---|---|---|
--issue | string | Yes | issue key (e.g. PROJ-123) |
--to | string | Yes | target status name (case-insensitive match) |
Example:
jr workflow transition --issue <issue> --to <to>update-transition-property
Update workflow transition property
This will be removed on June 1, 2026; update transition properties using Bulk update workflows instead.
Updates a workflow transition by changing the property value. Trying to update a property that does not exist results in a new property being added to the transition. Transition properties are used to change the behavior of a transition. For more information, see Transition properties and Workflow properties.
Permissions required: Administer Jira global permission.
PUT /rest/api/3/workflow/transitions/{transitionId}/properties
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
--key | string | No | The key of the property being updated, also known as the name of the property. Set this to the same value as the key defined in the request body. |
--transitionId | string | Yes | The ID of the transition. To get the ID, view the workflow in text mode in the Jira admin settings. The ID is shown next to the transition. |
--workflowMode | string | No | The workflow status. Set to live for inactive workflows or draft for draft workflows. Active workflows cannot be edited. |
--workflowName | string | No | The name of the workflow that the transition belongs to. |
Example:
jr workflow update-transition-property --transitionId <transitionId>update-transition-rule-configurations
Update workflow transition rule configurations
Updates configuration of workflow transition rules. The following rule types are supported:
Only rules created by the calling Connect or Forge app can be updated.
To assist with app migration, this operation can be used to:
- Disable a rule.
- Add a
tag. Use this to filter rules in the Get workflow transition rule configurations.
Rules are enabled if the disabled parameter is not provided.
Permissions required: Only Connect or Forge apps can use this operation.
PUT /rest/api/3/workflow/rule/config
| Flag | Type | Required | Description |
|---|---|---|---|
--body | string | No | request body (JSON string, @file, or - for stdin) |
Example:
jr workflow update-transition-rule-configurations