This resource represents the issue bulk operations. Use it to move multiple issues from one project to another project or edit fields of multiple issues in one go.

For additional clarity, we have created a page with further examples and answers to frequently asked questions related to these APIs. You can access it here: Bulk operation APIs: additional examples and FAQ.

Access to the issue bulk operations requires authentication. For information on how to authenticate API requests, refer to the Basic auth for REST APIs documentation.

The bulk edit and move APIs are subject to the usual rate limiting infrastructure in Jira. For more information, refer to Rate limiting. Additionally, at any given time, only 5 concurrent requests can be sent across all users.

Hierarchy

  • CommonHttpService
    • IssueBulkOperationsService

Constructors

  • Internal

    Create a new instance of the service.

    Parameters

    • getClientInstance: (() => CommonHttpClient)
        • (): CommonHttpClient
        • Returns CommonHttpClient

    Returns IssueBulkOperationsService

Methods

  • Use this API to retrieve a list of transitions available for the specified issues that can be used or bulk transition operations. You can submit either single or multiple issues in the query to obtain the available transitions.

    The response will provide the available transitions for issues, organized by their respective workflows. Only the transitions that are common among the issues within that workflow and do not involve any additional field updates will be included. For bulk transitions that require additional field updates, please utilise the Jira Cloud UI.

    You can request available transitions for up to 1,000 issues in a single operation. This API uses pagination to return responses, delivering 50 workflows at a time.

    Permissions required:

    Parameters

    • params: {
          endingBefore?: string;
          issueIdsOrKeys: string;
          startingAfter?: string;
      }
      • OptionalendingBefore?: string

        (Optional)The end cursor for use in pagination.

      • issueIdsOrKeys: string

        Comma (,) separated Ids or keys of the issues to get transitions available for them.

      • OptionalstartingAfter?: string

        (Optional)The start cursor for use in pagination.

    Returns Promise<BulkTransitionGetAvailableTransitions>

    Returned if the request is successful.

    example:

    {
    "availableTransitions": [
    {
    "isTransitionsFiltered": false,
    "issues": [
    "EPIC-1",
    "TASK-1"
    ],
    "transitions": [
    {
    "to": {
    "statusId": 10001,
    "statusName": "To Do"
    },
    "transitionId": 11,
    "transitionName": "To Do"
    },
    {
    "to": {
    "statusId": 10002,
    "statusName": "In Progress"
    },
    "transitionId": 21,
    "transitionName": "In Progress"
    },
    {
    "to": {
    "statusId": 10003,
    "statusName": "Done"
    },
    "transitionId": 31,
    "transitionName": "Done"
    }
    ]
    },
    {
    "isTransitionsFiltered": true,
    "issues": [
    "BUG-1"
    ],
    "transitions": [
    {
    "to": {
    "statusId": 10004,
    "statusName": "To Do bug"
    },
    "transitionId": 41,
    "transitionName": "To Do bug"
    },
    {
    "to": {
    "statusId": 10005,
    "statusName": "Triage"
    },
    "transitionId": 51,
    "transitionName": "Triage"
    }
    ]
    }
    ]
    }

    GET /rest/api/3/bulk/issues/transition @scopes-current read:jira-work @scopes-beta read:issue:jira

  • Use this API to get a list of fields visible to the user to perform bulk edit operations. You can pass single or multiple issues in the query to get eligible editable fields. This API uses pagination to return responses, delivering 50 fields at a time.

    Permissions required:

    • Global bulk change permission.
    • Browse project permission in all projects that contain the selected issues.
    • If issue-level security is configured, issue-level security permission to view the issue.
    • Depending on the field, any field-specific permissions required to edit it.

    Parameters

    • params: {
          endingBefore?: string;
          issueIdsOrKeys: string;
          searchText?: string;
          startingAfter?: string;
      }
      • OptionalendingBefore?: string

        (Optional)The end cursor for use in pagination.

      • issueIdsOrKeys: string

        The IDs or keys of the issues to get editable fields from.

      • OptionalsearchText?: string

        (Optional)The text to search for in the editable fields.

      • OptionalstartingAfter?: string

        (Optional)The start cursor for use in pagination.

    Returns Promise<BulkEditGetFields>

    Returned if the request is successful.

    example:

    {
    "fields": [
    {
    "id": "assignee",
    "isRequired": false,
    "name": "Assignee",
    "searchUrl": "https://your-domain.atlassian.net/rest/api/3/user/assignable/multiProjectSearch?projectKeys=KAN&query=",
    "type": "assignee"
    },
    {
    "id": "components",
    "isRequired": false,
    "multiSelectFieldOptions": [
    "ADD",
    "REMOVE",
    "REPLACE",
    "REMOVE_ALL"
    ],
    "name": "Components",
    "type": "components",
    "unavailableMessage": "{0}NOTE{1}: The project of the selected issue(s) does not have any components."
    },
    {
    "fieldOptions": [
    {
    "description": "This problem will block progress.",
    "id": "1",
    "priority": "Highest"
    },
    {
    "description": "Has the potential to affect progress.",
    "id": "2",
    "priority": "Lowest"
    },
    {
    "description": "Trivial problem with little or no impact on progress.",
    "id": "3",
    "priority": "Medium"
    }
    ],
    "id": "priority",
    "isRequired": false,
    "name": "Priority",
    "type": "priority"
    }
    ]
    }

    GET /rest/api/3/bulk/issues/fields @scopes-current read:jira-work @scopes-beta read:issue:jira

  • Use this to get the progress state for the specified bulk operation taskId.

    Permissions required:

    If the task is running, this resource will return:

    {"taskId":"10779","status":"RUNNING","progressPercent":65,"submittedBy":{"accountId":"5b10a2844c20165700ede21g"},"created":1690180055963,"started":1690180056206,"updated":169018005829}
    

    If the task has completed, then this resource will return:

    {"processedAccessibleIssues":[10001,10002],"created":1709189449954,"progressPercent":100,"started":1709189450154,"status":"COMPLETE","submittedBy":{"accountId":"5b10a2844c20165700ede21g"},"invalidOrInaccessibleIssueCount":0,"taskId":"10000","totalIssueCount":2,"updated":1709189450354}
    

    Note: You can view task progress for up to 14 days from creation.

    Parameters

    • params: {
          taskId: string;
      }
      • taskId: string

        The ID of the task.

    Returns Promise<BulkOperationProgress>

    Returned if the request is successful.

    example:

    {
    "created": 1704110400000,
    "invalidOrInaccessibleIssueCount": 0,
    "processedAccessibleIssues": [
    10001,
    10002
    ],
    "progressPercent": 100,
    "started": 1704110460000,
    "status": "COMPLETE",
    "submittedBy": {
    "accountId": "5b10a2844c20165700ede21g"
    },
    "taskId": "10000",
    "totalIssueCount": 2,
    "updated": 1704110520000
    }

    GET /rest/api/3/bulk/queue/{taskId} @scopes-current read:jira-work @scopes-beta read:issue:jira

  • Use this API to submit a bulk issue move request. You can move multiple issues, but they must all be moved to and from a single project, issue type, and parent. You can't move more than 1000 issues (including subtasks) at once.

    This is an early version of the API and it doesn't have full feature parity with the Bulk Move UI experience.

    • Moving issue of type A to issue of type B in the same project or a different project: SUPPORTED
    • Moving multiple issues of type A in one project to multiple issues of type B in the same project or a different project: SUPPORTED
    • Moving a standard parent issue of type A with its multiple subtask issue types in one project to standard issue of type B and multiple subtask issue types in the same project or a different project: SUPPORTED
    • Moving an epic issue with its child issues to a different project without losing their relation: NOT SUPPORTED (Workaround: Move them individually and stitch the relationship back with the Bulk Edit API)

    When using the bulk move, keep in mind that there are limits on the number of issues and fields you can include.

    • You can move up to 1,000 issues in a single operation, including any subtasks.
    • All issues must originate from the same project and share the same issue type and parent.
    • The total combined number of fields across all issues must not exceed 1,500,000. For example, if each issue includes 15,000 fields, then the maximum number of issues that can be moved is 100.

    Permissions required:

    Parameters

    Returns Promise<SubmittedBulkOperation>

    Returned if the request is successful.

    example:

    {
    "taskId": "10641"
    }

    POST /rest/api/3/bulk/issues/move @scopes-current write:jira-work @scopes-beta write:issue:jira, read:issue:jira

  • Method to initialize the class. Normally used to set up validation rules.

    Returns void