---
title: "Move Request"
method: POST
path: "/api/v1/requests/{requestId}/move"
tags: ["requests"]
---

# Move Request

`POST /api/v1/requests/{requestId}/move`

**DEPRECATED**: Use `/requests/{requestId}/move/result` instead.

This endpoint does not handle permission-based responses correctly when the user
lacks view access to the destination workspace.

## Path parameters

- `requestId` string, required

## Headers

- `X-Api-Key` string, required
- `X-Workspace-Id` string

## Request body

- object
  - `destination_workspace_id` integer
  - `request_note` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaRequestNote
    - `description` string
  - `workflow_request_note` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaWorkflowRequestNote
    - `user_id` integer
    - `conversation_id` integer — When set, the reply is mirrored into this conversation's thread (UAG).
    - `description` string
    - `mentions` integer[]
    - `is_private` boolean
    - `source` 'EMAIL' | 'SLACK' | 'TEAMS' | 'PORTAL' | 'WORKFLOW' | 'JOURNEY' | 'API' | 'UNIVERSAL_AGENT'
    - `type` 'ESD_NOTE' | 'SLACK_NOTE' | 'EMAIL_NOTE' | 'RATING' | 'TEMPLATE' | 'WORKFLOW_NOTE'
    - `attachments` integer[]
    - `cc_emails` string[]
    - `bcc_emails` string[]
    - `is_broadcast` boolean
    - `external_id` string
    - `external_source_type` 'SAAS_GENIE' | 'SNOW' | 'JSM_BRIDGE'
    - `email_content` string
    - `event_created_at` string, date-time — Event creation timestamp. When provided via public API, also backdates the note's created time, SLA metrics, and activity timestamps. Must not be in the future or before the request's creation time.
  - `data` union
    - ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaData0
      - `request_type` string
      - `request_source` 'EMAIL' | 'SLACK' | 'TEAMS' | 'PORTAL' | 'WORKFLOW' | 'JOURNEY' | 'API' | 'UNIVERSAL_AGENT'
      - `description` string
      - `email_content` string
      - `plain_text_description_override` string — Internal-only override for the persisted plain-text rendering of the description. When non-empty, AbstractRequestService persists it as RequestDetail.description instead of running HTMLSanitizerUtil.getPlainText() on the HTML description. Set ONLY by the email ingestion path (EmailIntentBasedRequestCreationService), which derives it from reqDescription via normalizeHtmlToPlainText(getPlainTextForRichHtml(...)) so system-generated HTML emails (BlackLine offboarding, etc.) avoid mashed table cells and blank-line storms. Annotated @JsonIgnore so external HTTP clients cannot set it via the request body — without that annotation, any caller of POST /requests, /service-requests, /incidents could write arbitrary unsanitized text into RequestDetail.description, bypassing the getPlainText() pipeline. The Lombok @SuperBuilder still exposes a setter for in-process Java callers (the email path), since builder access does not go through Jackson.
      - `status` string
      - `priority` string
      - `parent_request_id` integer
      - `agent_group` integer
      - `assignee` integer
      - `subject` string
      - `notes` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf0NotesItems[]
        - `user_id` integer
        - `conversation_id` integer — When set, the reply is mirrored into this conversation's thread (UAG).
        - `description` string
        - `mentions` integer[]
        - `is_private` boolean
        - `source` 'EMAIL' | 'SLACK' | 'TEAMS' | 'PORTAL' | 'WORKFLOW' | 'JOURNEY' | 'API' | 'UNIVERSAL_AGENT'
        - `type` 'ESD_NOTE' | 'SLACK_NOTE' | 'EMAIL_NOTE' | 'RATING' | 'TEMPLATE' | 'WORKFLOW_NOTE'
        - `attachments` integer[]
        - `cc_emails` string[]
        - `bcc_emails` string[]
        - `is_broadcast` boolean
        - `external_id` string
        - `external_source_type` 'SAAS_GENIE' | 'SNOW' | 'JSM_BRIDGE'
        - `email_content` string
        - `event_created_at` string, date-time — Event creation timestamp. When provided via public API, also backdates the note's created time, SLA metrics, and activity timestamps. Must not be in the future or before the request's creation time.
      - `workspace_id` integer
      - `conversation_info` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf0ConversationInfo
        - `channel_name` string
        - `channel_id` string
        - `start_timestamp` string, unix-timestamp, required
      - `tags` integer[]
      - `cc_emails` string[]
      - `bcc_emails` string[]
      - `attachments` integer[]
      - `requester` integer
      - `to_email` string
      - `request_created_from` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf0RequestCreatedFrom
        - `id` string
        - `type` 'REQUEST_SETTINGS'
      - `custom_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf0CustomFields
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `external_id` string
      - `external_source` 'SAAS_GENIE' | 'SNOW' | 'JSM_BRIDGE'
      - `resolution_time` string, date-time — When the ticket was resolved in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_time` string, date-time — When the first agent response occurred in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_due_time` string, date-time — SLA due time for first response from the source system. Only accepted during migration (requires external_id or external_source).
      - `resolution_due_time` string, date-time — SLA due time for resolution from the source system. Only accepted during migration (requires external_id or external_source).
      - `closed_status_at` string, date-time — When the ticket was moved to closed status in the source system. Only accepted during migration (requires external_id or external_source). When provided with a closed status, also sets resolution_time if not explicitly provided.
      - `item_id` integer
      - `item_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf0ItemFields
    - ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaData1
      - `request_type` string
      - `request_source` 'EMAIL' | 'SLACK' | 'TEAMS' | 'PORTAL' | 'WORKFLOW' | 'JOURNEY' | 'API' | 'UNIVERSAL_AGENT'
      - `description` string
      - `email_content` string
      - `plain_text_description_override` string — Internal-only override for the persisted plain-text rendering of the description. When non-empty, AbstractRequestService persists it as RequestDetail.description instead of running HTMLSanitizerUtil.getPlainText() on the HTML description. Set ONLY by the email ingestion path (EmailIntentBasedRequestCreationService), which derives it from reqDescription via normalizeHtmlToPlainText(getPlainTextForRichHtml(...)) so system-generated HTML emails (BlackLine offboarding, etc.) avoid mashed table cells and blank-line storms. Annotated @JsonIgnore so external HTTP clients cannot set it via the request body — without that annotation, any caller of POST /requests, /service-requests, /incidents could write arbitrary unsanitized text into RequestDetail.description, bypassing the getPlainText() pipeline. The Lombok @SuperBuilder still exposes a setter for in-process Java callers (the email path), since builder access does not go through Jackson.
      - `status` string
      - `priority` string
      - `parent_request_id` integer
      - `agent_group` integer
      - `assignee` integer
      - `subject` string
      - `notes` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf1NotesItems[]
        - `user_id` integer
        - `conversation_id` integer — When set, the reply is mirrored into this conversation's thread (UAG).
        - `description` string
        - `mentions` integer[]
        - `is_private` boolean
        - `source` unknown
        - `type` unknown
        - `attachments` integer[]
        - `cc_emails` string[]
        - `bcc_emails` string[]
        - `is_broadcast` boolean
        - `external_id` string
        - `external_source_type` unknown
        - `email_content` string
        - `event_created_at` string, date-time — Event creation timestamp. When provided via public API, also backdates the note's created time, SLA metrics, and activity timestamps. Must not be in the future or before the request's creation time.
      - `workspace_id` integer
      - `conversation_info` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf1ConversationInfo
        - `channel_name` string
        - `channel_id` string
        - `start_timestamp` string, unix-timestamp, required
      - `tags` integer[]
      - `cc_emails` string[]
      - `bcc_emails` string[]
      - `attachments` integer[]
      - `requester` integer
      - `to_email` string
      - `request_created_from` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf1RequestCreatedFrom
        - `id` string
        - `type` 'REQUEST_SETTINGS'
      - `custom_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf1CustomFields
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `external_id` string
      - `external_source` 'SAAS_GENIE' | 'SNOW' | 'JSM_BRIDGE'
      - `resolution_time` string, date-time — When the ticket was resolved in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_time` string, date-time — When the first agent response occurred in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_due_time` string, date-time — SLA due time for first response from the source system. Only accepted during migration (requires external_id or external_source).
      - `resolution_due_time` string, date-time — SLA due time for resolution from the source system. Only accepted during migration (requires external_id or external_source).
      - `closed_status_at` string, date-time — When the ticket was moved to closed status in the source system. Only accepted during migration (requires external_id or external_source). When provided with a closed status, also sets resolution_time if not explicitly provided.
      - `item_id` integer
      - `item_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf1ItemFields
      - `impact` string
      - `urgency` string
      - `category` string
      - `subcategory` string
      - `assets` integer[]
    - ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaData2
      - `request_type` string
      - `request_source` 'EMAIL' | 'SLACK' | 'TEAMS' | 'PORTAL' | 'WORKFLOW' | 'JOURNEY' | 'API' | 'UNIVERSAL_AGENT'
      - `description` string
      - `email_content` string
      - `plain_text_description_override` string — Internal-only override for the persisted plain-text rendering of the description. When non-empty, AbstractRequestService persists it as RequestDetail.description instead of running HTMLSanitizerUtil.getPlainText() on the HTML description. Set ONLY by the email ingestion path (EmailIntentBasedRequestCreationService), which derives it from reqDescription via normalizeHtmlToPlainText(getPlainTextForRichHtml(...)) so system-generated HTML emails (BlackLine offboarding, etc.) avoid mashed table cells and blank-line storms. Annotated @JsonIgnore so external HTTP clients cannot set it via the request body — without that annotation, any caller of POST /requests, /service-requests, /incidents could write arbitrary unsanitized text into RequestDetail.description, bypassing the getPlainText() pipeline. The Lombok @SuperBuilder still exposes a setter for in-process Java callers (the email path), since builder access does not go through Jackson.
      - `status` string
      - `priority` string
      - `parent_request_id` integer
      - `agent_group` integer
      - `assignee` integer
      - `subject` string
      - `notes` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf2NotesItems[]
        - `user_id` integer
        - `conversation_id` integer — When set, the reply is mirrored into this conversation's thread (UAG).
        - `description` string
        - `mentions` integer[]
        - `is_private` boolean
        - `source` 'EMAIL' | 'SLACK' | 'TEAMS' | 'PORTAL' | 'WORKFLOW' | 'JOURNEY' | 'API' | 'UNIVERSAL_AGENT'
        - `type` 'ESD_NOTE' | 'SLACK_NOTE' | 'EMAIL_NOTE' | 'RATING' | 'TEMPLATE' | 'WORKFLOW_NOTE'
        - `attachments` integer[]
        - `cc_emails` string[]
        - `bcc_emails` string[]
        - `is_broadcast` boolean
        - `external_id` string
        - `external_source_type` 'SAAS_GENIE' | 'SNOW' | 'JSM_BRIDGE'
        - `email_content` string
        - `event_created_at` string, date-time — Event creation timestamp. When provided via public API, also backdates the note's created time, SLA metrics, and activity timestamps. Must not be in the future or before the request's creation time.
      - `workspace_id` integer
      - `conversation_info` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf2ConversationInfo
        - `channel_name` string
        - `channel_id` string
        - `start_timestamp` string, unix-timestamp, required
      - `tags` integer[]
      - `cc_emails` string[]
      - `bcc_emails` string[]
      - `attachments` integer[]
      - `requester` integer
      - `to_email` string
      - `request_created_from` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf2RequestCreatedFrom
        - `id` string
        - `type` 'REQUEST_SETTINGS'
      - `custom_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf2CustomFields
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `external_id` string
      - `external_source` 'SAAS_GENIE' | 'SNOW' | 'JSM_BRIDGE'
      - `resolution_time` string, date-time — When the ticket was resolved in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_time` string, date-time — When the first agent response occurred in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_due_time` string, date-time — SLA due time for first response from the source system. Only accepted during migration (requires external_id or external_source).
      - `resolution_due_time` string, date-time — SLA due time for resolution from the source system. Only accepted during migration (requires external_id or external_source).
      - `closed_status_at` string, date-time — When the ticket was moved to closed status in the source system. Only accepted during migration (requires external_id or external_source). When provided with a closed status, also sets resolution_time if not explicitly provided.
    - ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaData3
      - `request_type` string
      - `request_source` unknown
      - `description` string
      - `email_content` string
      - `plain_text_description_override` string — Internal-only override for the persisted plain-text rendering of the description. When non-empty, AbstractRequestService persists it as RequestDetail.description instead of running HTMLSanitizerUtil.getPlainText() on the HTML description. Set ONLY by the email ingestion path (EmailIntentBasedRequestCreationService), which derives it from reqDescription via normalizeHtmlToPlainText(getPlainTextForRichHtml(...)) so system-generated HTML emails (BlackLine offboarding, etc.) avoid mashed table cells and blank-line storms. Annotated @JsonIgnore so external HTTP clients cannot set it via the request body — without that annotation, any caller of POST /requests, /service-requests, /incidents could write arbitrary unsanitized text into RequestDetail.description, bypassing the getPlainText() pipeline. The Lombok @SuperBuilder still exposes a setter for in-process Java callers (the email path), since builder access does not go through Jackson.
      - `status` string
      - `priority` string
      - `parent_request_id` integer
      - `agent_group` integer
      - `assignee` integer
      - `subject` string
      - `notes` unknown[]
        - unknown
      - `workspace_id` integer
      - `conversation_info` unknown
      - `tags` integer[]
      - `cc_emails` string[]
      - `bcc_emails` string[]
      - `attachments` integer[]
      - `requester` integer
      - `to_email` string
      - `request_created_from` unknown
      - `custom_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf3CustomFields
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `external_id` string
      - `external_source` unknown
      - `resolution_time` string, date-time — When the ticket was resolved in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_time` string, date-time — When the first agent response occurred in the source system. Only accepted during migration (requires external_id or external_source).
      - `first_response_due_time` string, date-time — SLA due time for first response from the source system. Only accepted during migration (requires external_id or external_source).
      - `resolution_due_time` string, date-time — SLA due time for resolution from the source system. Only accepted during migration (requires external_id or external_source).
      - `closed_status_at` string, date-time — When the ticket was moved to closed status in the source system. Only accepted during migration (requires external_id or external_source). When provided with a closed status, also sets resolution_time if not explicitly provided.
      - `item_id` integer
      - `item_fields` ApiV1RequestsRequestIdMovePostRequestBodyContentApplicationJsonSchemaDataOneOf3ItemFields
      - `impact` string
      - `urgency` string
      - `category` string
      - `subcategory` string
      - `assets` integer[]

## Response `200`

Successful response

- RequestsPostapiV1RequestsRequestIdMoveResponse200 — Empty response body

---

[API](https://skmtc.net/atomicwork/apis/atomicwork-public-api.md) · [All operations](https://skmtc.net/atomicwork/apis/atomicwork-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/atomicwork/atomicwork-public-api/revisions/2e7047b35062/schema)
