Hi,
I am using the following code to move a device from one sub-estate to another:
function Move-Device { param ( [string]$apiKey, [string]$fromTenantId, [string]$toTenantId, [string]$deviceId, [string]$OrgID ) # Define headers for create job $headers = @{ "Authorization" = "Bearer $apiKey" "X-Tenant-ID" = $toTenantId "X-Organization-ID" = $OrgID "Content-Type" = "application/json" } # Body for Create migration job $migrationJobBody = @{ fromTenant = $fromTenantId endpoints = @($deviceId) } | ConvertTo-Json try { $migrationJobResponse = Invoke-RestMethod -Uri "https://api-us01.central.sophos.com/endpoint/v1/migrations" -Method Post -Headers $headers -Body $migrationJobBody $migrationJobId = $migrationJobResponse.id $migrationJobToken = $migrationJobResponse.token } catch { Write-Error "Failed to create migration job: $_" return } # Define headers for trigger $headers = @{ "Authorization" = "Bearer $apiKey" "X-Tenant-ID" = $fromTenantId "X-Organization-ID" = $OrgID "Content-Type" = "application/json" } # Body for Create migration trigger $migrationTriggerBody = @{ token = $migrationJobToken endpoints = @($deviceId) } | ConvertTo-Json try { # Trigger migration job $triggerResponse = Invoke-RestMethod -Uri "https://api-us01.central.sophos.com/endpoint/v1/migrations/$migrationJobId" -Method Put -Headers $headers -Body $migrationTriggerBody } catch { Write-Error "Failed to trigger migration job: $_" return } # Check migration status $status = "pending" while ($status -ne "completed") { Start-Sleep -Seconds 10 try { $statusResponse = Invoke-RestMethod -Uri "https://api-us01.central.sophos.com/endpoint/v1/migrations/$migrationJobId/endpoints" -Method Get -Headers $headers $status = $statusResponse.items.status Write-Output "Current status: $status" } catch { Write-Error "Failed to check migration status: $_" return } } Write-Output "Migration completed successfully!" }
The problem is, when creating the migration job, powershell returns "BadServerResponse". As far as I can tell the headers and body are appropriate, and the token is fine as I am able to use it in other API calls. Any ideas?