Skip to content

Migration endpoints

GET/migrations/{migrationJobId}/endpoints

Endpoint API · Migrations

Gets the status of endpoints that are being migrated.

Required permissionendpoint-migration:read

Parameters

Name In Type Required Description
X-Tenant-ID header string (uuid) Yes Tenant ID.
page query integer No The page number to fetch, starting with 1.
pageSize query integer No Size of the page requested.
Must be ≥ 1 and ≤ 1000.
pageTotal query boolean No Whether the number of pages should be calculated and returned in the response.
migrationJobId path string (uuid) Yes Migration job ID.

Request samples

curl -X GET "https://api-<data-region>.central.sophos.com/endpoint/v1/migrations/<migrationJobId>/endpoints" -H "Authorization: Bearer <access-token>" -H "X-Tenant-ID: <tenant-id>"

import requests

response = requests.get(
    "https://api-<data-region>.central.sophos.com/endpoint/v1/migrations/<migrationJobId>/endpoints",
    headers={
        "Authorization": "Bearer <access-token>",
        "X-Tenant-ID": "<tenant-id>",
    },
)
print(response.json())

$headers = @{
    "Authorization" = "Bearer <access-token>"
    "X-Tenant-ID" = "<tenant-id>"
}
Invoke-RestMethod -Method GET -Uri "https://api-<data-region>.central.sophos.com/endpoint/v1/migrations/<migrationJobId>/endpoints" -Headers $headers

package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "https://api-<data-region>.central.sophos.com/endpoint/v1/migrations/<migrationJobId>/endpoints", nil)
    if err != nil {
        panic(err)
    }
    req.Header.Set("Authorization", "Bearer <access-token>")
    req.Header.Set("X-Tenant-ID", "<tenant-id>")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}

const response = await fetch("https://api-<data-region>.central.sophos.com/endpoint/v1/migrations/<migrationJobId>/endpoints", {
  method: "GET",
  headers: {
    "Authorization": "Bearer <access-token>",
    "X-Tenant-ID": "<tenant-id>",
  },
});
const data = await response.json();
console.log(data);

Responses

200 — Migration endpoints.

Response fields

itemsarray of objectrequired
List of migration jobs.
Endpoint details.
Show child attributesHide child attributes
idstring (uuid)required
Endpoint ID from the sending tenant.
statusstringrequired
Migration status.
Must be one of: pending, failed, succeeded.
newIdstring (uuid)
New endpoint ID in the receiving tenant.
migratedAtstring (date-time)
When the endpoint was migrated.
failedAtstring (date-time)
When the endpoint failed to migrate.
reasonstring
Why the endpoint failed to migrate.
pagesobjectrequired
Show child attributesHide child attributes
currentintegerrequired
The 1-based page number being returned.
sizeintegerrequired
The size of the page being returned.
totalinteger
(Optional) The total number of pages that exist, if pageTotal=true in the request.
itemsinteger
(Optional) The total number of items across all pages.
maxSizeintegerrequired
The maximum page size that can be requested.

Errors

Status Meaning
400 Bad Request.
500 Unexpected error.

All error responses share the same shape — see the error response object.

Response examples

200

{
  "items": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "status": "pending",
      "newId": "00000000-0000-0000-0000-000000000000",
      "migratedAt": "2026-07-28T00:00:00Z",
      "failedAt": "2026-07-28T00:00:00Z",
      "reason": "string"
    }
  ],
  "pages": {
    "current": 0,
    "size": 0,
    "total": 0,
    "items": 0,
    "maxSize": 0
  }
}

See the guide for a narrative walkthrough of this API.