Atlassian: Bulk move issues
Atlassian issueBulkOperations.submitBulkMove: arguments, response, policy and SDK examples.
← Issue bulk operations operations · Get started
Operation atlassian.submitbulkmove
Provider route: POST /{cloudId}/rest/api/3/bulk/issues/move. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”Install @alter-ai/sdk @alter-ai/atlassian with npm, or alter-sdk-atlassian with pip. Supply your connected customer’s grant ID and the arguments described below.
import { App } from "@alter-ai/sdk";import { AtlassianIntegration } from "@alter-ai/atlassian";
async function execute(input: Parameters<AtlassianIntegration["issueBulkOperations"]["submitBulkMove"]>[0]) { const app = new App({ apiKey: process.env.ALTER_API_KEY! }); try { const provider = new AtlassianIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! }); const call = await provider.issueBulkOperations.submitBulkMove(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom alter_sdk_atlassian import AtlassianIntegration
async def execute(arguments): async with App(api_key=os.environ["ALTER_API_KEY"]) as app: provider = AtlassianIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]}) call = await provider.issue_bulk_operations.submit_bulk_move(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
path | object | Required within parent | Additional keys: not allowed |
path.cloudId | string | Required within parent | Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ |
body | Model | Required within parent | Expand Bulk move issues — request body — body |
Referenced models: Bulk move issues — request body — body
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | Model | Root | Expand Bulk edit issues — response body |
Referenced models: Bulk edit issues — response body
Schemas
Section titled “Schemas”3 more schemas are linked from the tables above, on the schema pages.
Bulk move issues — request body — body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Issue Bulk Move Payload Additional keys: not allowed |
sendBulkNotification | JSON | Optional | |
sendBulkNotification (anyOf 1) | boolean | Alternative | A boolean value that indicates whether to send a bulk change notification when the issues are being moved. If `true`, dispatches a bulk notification email to users about the updates. Default: true write Only: true |
sendBulkNotification (anyOf 2) | null | Alternative | |
targetToSourcesMapping | object | Required within parent | An object representing the mapping of issues and data related to destination entities, like fields and statuses, that are required during a bulk move. The key is a string that is created by concatenating the following three entities in order, separated by commas. The format is `<project ID or key>,<issueType ID>,<parent ID or key>`. It should be unique across mappings provided in the payload. If you provide multiple mappings for the same key, only one will be processed. However, the operation won't fail, so the error may be hard to track down. * ***Destination project*** (Required): ID or key of the project to which the issues are being moved. * ***Destination issueType*** (Required): ID of the issueType to which the issues are being moved. * ***Destination parent ID or key*** (Optional): ID or key of the issue which will become the parent of the issues being moved. Only required when the destination issueType is a subtask. Additional keys: see wildcard field |
targetToSourcesMapping.* | Model | Additional keys | Expand Bulk move issues — request body — body target To Sources Mapping value |
Referenced models: Bulk move issues — request body — body target To Sources Mapping value
Bulk edit issues — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
taskId | JSON | Optional | |
taskId (anyOf 1) | string | Alternative | |
taskId (anyOf 2) | null | Alternative |
Bulk move issues — request body — body target To Sources Mapping value
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | An object representing the mapping of issues and data related to destination entities, like fields and statuses, that are required during a bulk move. Additional keys: not allowed |
inferClassificationDefaults | boolean | Required within parent | If `true`, when issues are moved into this target group, they will adopt the target project's default classification, if they don't have a classification already. If they do have a classification, it will be kept the same even after the move. Leave `targetClassification` empty when using this. If `false`, you must provide a `targetClassification` mapping for each classification associated with the selected issues. [Benefit from data classification](https://support.atlassian.com/security-and-access-policies/docs/what-is-data-classification/) write Only: true |
inferFieldDefaults | boolean | Required within parent | If `true`, values from the source issues will be retained for the mandatory fields in the field configuration of the destination project. The `targetMandatoryFields` property shouldn't be defined. If `false`, the user is required to set values for mandatory fields present in the field configuration of the destination project. Provide input by defining the `targetMandatoryFields` property write Only: true |
inferStatusDefaults | boolean | Required within parent | If `true`, the statuses of issues being moved in this target group that are not present in the target workflow will be changed to the default status of the target workflow (see below). Leave `targetStatus` empty when using this. If `false`, you must provide a `targetStatus` for each status not present in the target workflow. The default status in a workflow is referred to as the "initial status". Each workflow has its own unique initial status. When an issue is created, it is automatically assigned to this initial status. Read more about configuring initial statuses: [Configure the initial status | Atlassian Support.](https://support.atlassian.com/jira-cloud-administration/docs/configure-the-initial-status/) write Only: true |
inferSubtaskTypeDefault | boolean | Required within parent | When an issue is moved, its subtasks (if there are any) need to be moved with it. `inferSubtaskTypeDefault` helps with moving the subtasks by picking a random subtask type in the target project. If `true`, subtasks will automatically move to the same project as their parent. When they move: * Their `issueType` will be set to the default for subtasks in the target project. * Values for mandatory fields will be retained from the source issues * Specifying separate mapping for implicit subtasks won’t be allowed. If `false`, you must manually move the subtasks. They will retain the parent which they had in the current project after being moved. write Only: true |
issueIdsOrKeys | array | Required within parent | List of issue IDs or keys to be moved. write Only: true |
issueIdsOrKeys[] | string | Each item | write Only: true |
targetClassification | JSON | Optional | |
targetClassification (anyOf 1) | array | Alternative | List of the objects containing classifications in the source issues and their new values which need to be set during the bulk move operation. It is mandatory to provide source classification to target classification mapping when the source classification is invalid for the target project and issue type. * **You should only define this property when `inferClassificationDefaults` is `false`.** * **In order to provide mapping for issues which don't have a classification, use `"-1"`.** write Only: true |
targetClassification (anyOf 1)[] | Model | Each item | Expand Bulk move issues — request body — body target To Sources Mapping value target Classification array item |
targetClassification (anyOf 2) | null | Alternative | |
targetMandatoryFields | JSON | Optional | |
targetMandatoryFields (anyOf 1) | array | Alternative | List of objects containing mandatory fields in the target field configuration and new values that need to be set during the bulk move operation. The new values will only be applied if the field is mandatory in the target project and at least one issue from the source has that field empty, or if the field context is different in the target project (e.g. project-scoped version fields). **You should only define this property when `inferFieldDefaults` is `false`.** write Only: true |
targetMandatoryFields (anyOf 1)[] | Model | Each item | Expand Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item |
targetMandatoryFields (anyOf 2) | null | Alternative | |
targetStatus | JSON | Optional | |
targetStatus (anyOf 1) | array | Alternative | List of the objects containing statuses in the source workflow and their new values which need to be set during the bulk move operation. The new values will only be applied if the source status is invalid for the target project and issue type. It is mandatory to provide source status to target status mapping when the source status is invalid for the target project and issue type. **You should only define this property when `inferStatusDefaults` is `false`.** write Only: true |
targetStatus (anyOf 1)[] | Model | Each item | Expand Bulk move issues — request body — body target To Sources Mapping value target Status array item |
targetStatus (anyOf 2) | null | Alternative |
Referenced models: Bulk move issues — request body — body target To Sources Mapping value target Classification array item, Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item, Bulk move issues — request body — body target To Sources Mapping value target Status array item
Bulk move issues — request body — body target To Sources Mapping value target Classification array item
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | object | Alternative | Classification mapping for classifications in source issues to respective target classification. write Only: true Additional keys: not allowed |
$ (anyOf 1).classifications | object | Required within parent | An object with the key as the ID of the target classification and value with the list of the IDs of the current source classifications. write Only: true Additional keys: see wildcard field |
$ (anyOf 1).classifications.* | array | Additional keys | write Only: true |
$ (anyOf 1).classifications.*[] | string | Each item | write Only: true |
$ (anyOf 1).issueType | string | Optional | ID of the source issueType to which issues present in `issueIdOrKeys` belongs. write Only: true |
$ (anyOf 1).projectKeyOrId | string | Optional | ID or key of the source project to which issues present in `issueIdOrKeys` belongs. write Only: true |
$ (anyOf 2) | null | Alternative |
Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | object | Alternative | Field mapping for mandatory fields in target write Only: true Additional keys: not allowed |
$ (anyOf 1).fields | object | Required within parent | Contains the value of mandatory fields write Only: true Additional keys: see wildcard field |
$ (anyOf 1).fields.* | Model | Additional keys | Expand Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item Field mapping for mandatory fields in target fields value |
$ (anyOf 2) | null | Alternative |
Referenced models: Bulk move issues — request body — body target To Sources Mapping value target Mandatory Fields array item Field mapping for mandatory fields in target fields value
Bulk move issues — request body — body target To Sources Mapping value target Status array item
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | JSON | Root | |
$ (anyOf 1) | object | Alternative | Status mapping for statuses in source workflow to respective target status in target workflow. write Only: true Additional keys: not allowed |
$ (anyOf 1).statuses | object | Required within parent | An object with the key as the ID of the target status and value with the list of the IDs of the current source statuses. write Only: true Additional keys: see wildcard field |
$ (anyOf 1).statuses.* | array | Additional keys | write Only: true |
$ (anyOf 1).statuses.*[] | string | Each item | write Only: true |
$ (anyOf 2) | null | Alternative |
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: atlassian.submitbulkmove. Catalog operation: submitbulkmove. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.
Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.
Required provider scopes: ["write:jira-work"]