---
title: "List the Link 2.0 to 3.0 migration status of every workspace with a live Link Agent"
method: GET
path: "/link/migration/workspaces"
tags: ["LinkAgent"]
---

# List the Link 2.0 to 3.0 migration status of every workspace with a live Link Agent

`GET /link/migration/workspaces`

Operator-only fleet view of the Link 2.0 to 3.0 migration: one row per workspace that owns a live Link Agent, classified into its migration phase from the workspace's migration flags and its Agents' versions and Link 3.0 connection state. See migration-cutover.md in link/mablnet/docs.

## Response `200`

The migration status of each workspace

- LinkMigrationWorkspaceList — The Link 2.0 to 3.0 migration status of every workspace with a live Link Agent
  - `workspaces` LinkMigrationWorkspace[]
    - `workspace_id` string
    - `workspace_name` string
    - `account_id` string
    - `account_name` string
    - `company_id` string
    - `phase` 'link_2_only' | 'link_3_partially_installed' | 'link_3_installed' | 'link_3_blocked' | 'link_3_upgrade_pending' | 'link_3_ready' | 'tests_on_link_3_unhealthy' | 'tests_on_link_3' | 'link_3_only_unhealthy' | 'link_3_only' | 'misconfigured' — Where a workspace is in the Link 2.0 to 3.0 migration. link_2_only, link_3_partially_installed and link_3_installed are before Link 3.0 is enabled, split by how many live Agents run a Link 3.0 capable version. link_3_blocked, link_3_upgrade_pending and link_3_ready have Link 3.0 enabled with test runs still on Link 2.0: blocked when a Link 3.0 capable Agent lacks a Link 3.0 connection, upgrade_pending when only Agents on Link 2.x do, and ready when every live Agent has one. tests_on_link_3 and link_3_only (Link 2.0 retired) route test runs over Link 3.0, each with an unhealthy variant when a live Agent lacks a Link 3.0 connection. misconfigured flags route test runs over a Link version the Agents are not told to use.
    - `held` boolean — The account excludes link_protocol_mablnet, which marks it as not to be migrated by fleet tooling
    - `native_link_3` boolean — The account was created on Link 3.0 rather than migrated to it
    - `link_protocol_mablnet` 'account' | 'workspace' | 'none' — Where a Link migration flag is turned on, if anywhere
    - `link_proxy_mablnet` 'account' | 'workspace' | 'none' — Where a Link migration flag is turned on, if anywhere
    - `link_protocol_tunnel` boolean — Whether the account keeps link_protocol_tunnel on
    - `live_agent_count` integer
    - `link_3_capable_agent_count` integer — Live Agents running a Link 3.0 capable version
    - `link_3_connected_agent_count` integer — Live Agents with a working Link 3.0 connection
    - `blocking_agents` LinkMigrationBlockingAgent[]
      - `agent_id` string
      - `label` string
      - `version` string
      - `last_error` string — The Agent's most recent Link 3.0 connection error, if it reported one

## Other responses

- `401` — User not authenticated
- `403` — User not authorized
- `default` — Unknown error

## Changes

- **2026-10-07** `488eade0b398` — 2 warning, 1 info
  - added the new `link_3_ready` enum value to the `workspaces/items/phase` response property for the response status `200`
  - added the new `link_3_upgrade_pending` enum value to the `workspaces/items/phase` response property for the response status `200`
  - removed the `link_3_connected` enum value from the `workspaces/items/phase` response property for the response status `200`
- **2026-10-07** `f841ef0a3bc7` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/mabl/apis/mabl-api/changes/link/migration/workspaces/get.md)

---

[API](https://skmtc.dev/mabl/apis/mabl-api.md) · [All operations](https://skmtc.dev/mabl/apis/mabl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mabl/apis/mabl-api/revisions/488eade0b398?raw)
