> ## Documentation Index
> Fetch the complete documentation index at: https://docs.celum.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get migration plan

> What it moves: plans (NetworkMap + StorageMap + Plan) and their runs

**Authorisation:** `migration:GetPlan` on `krn:celum:supervisor:{name}:migration:{plan}`.

**Assistant tool:** `get_migration_plan`



## OpenAPI

````yaml /openapi.json get /api/supervisors/{name}/migration/plans/{plan}
openapi: 3.0.3
info:
  description: >-
    The HTTP surface of the Celum backend, generated from its own router and

    authorisation map — so this list cannot drift from the server that serves
    it.


    **Every operation states the IAM action and resource it is authorised

    against.** That pairing is the part worth reading: a policy naming the right

    action against the wrong resource matches nothing, and fails silently.


    Request and response bodies come from the Go types the handlers send and

    decode. Where those types do not determine the shape (an interface, a

    map[string]any, an unknown custom encoding), the operation says so in

    `x-celum-schema-gap` instead of carrying a guessed schema.
  title: Celum API
  version: 1.0.0
servers:
  - description: Your Celum deployment
    url: https://{host}
    variables:
      host:
        default: celum.example.com
        description: The host your Celum backend is served from
security:
  - sessionCookie: []
  - bearerToken: []
tags:
  - description: AI assistant & MCP
    name: ai-assistant
  - description: Clusters & CAPI lifecycle
    name: capi
  - description: Certificates & external secrets
    name: certs
  - description: GitOps & apps
    name: gitops
  - description: IAM, audit & auth
    name: iam
  - description: Image library
    name: images
  - description: Infrastructure & supervisors
    name: infrastructure
  - description: Networking
    name: networking
  - description: Observability & platform health
    name: observability
  - description: Platform onboarding & settings
    name: platform-settings
  - description: Projects
    name: projects
  - description: Registries & mirroring
    name: registries
  - description: Security & flows
    name: security
  - description: Storage
    name: storage
  - description: Templates & addons
    name: templates
  - description: Virtualization platform (KubeVirt/CDI)
    name: virt
  - description: Virtual machines
    name: vms
  - description: Workloads & topology
    name: workloads
paths:
  /api/supervisors/{name}/migration/plans/{plan}:
    get:
      tags:
        - vms
      summary: Get migration plan
      description: >-
        What it moves: plans (NetworkMap + StorageMap + Plan) and their runs


        **Authorisation:** `migration:GetPlan` on
        `krn:celum:supervisor:{name}:migration:{plan}`.


        **Assistant tool:** `get_migration_plan`
      operationId: get_supervisors_byName_migration_plans_byPlan
      parameters:
        - description: >-
            The supervisor's name, as registered under Administration →
            Supervisors.
          in: path
          name: name
          required: true
          schema:
            type: string
        - description: ''
          in: path
          name: plan
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.migrationPlanDetail'
          description: Success.
        '401':
          description: Not authenticated — no valid session cookie or API token.
        '403':
          description: >-
            Authenticated, but no policy allows this action on this resource.
            The body carries the action and resource that were evaluated.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorBody'
          description: Not Found.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorBody'
          description: Bad Gateway.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api.ErrorBody'
          description: A status the code does not fix.
components:
  schemas:
    api.migrationPlanDetail:
      properties:
        archived:
          type: boolean
        canceled:
          format: int64
          type: integer
        completed:
          type: string
        conditions:
          items:
            $ref: '#/components/schemas/api.migrationPlanCondition'
          type: array
        conversion:
          type: string
        convertorNode:
          type: string
        created:
          type: string
        description:
          type: string
        diskCompleted:
          format: int64
          type: integer
        diskTotal:
          format: int64
          type: integer
        failed:
          format: int64
          type: integer
        identity:
          items:
            $ref: '#/components/schemas/api.migrationPlanIdentity'
          type: array
        managedByCelum:
          type: boolean
        name:
          type: string
        networks:
          items:
            $ref: '#/components/schemas/api.migrationNetworkMapping'
          nullable: true
          type: array
        preserveStaticIPs:
          type: boolean
        problems:
          items:
            $ref: '#/components/schemas/api.migrationPlanCondition'
          type: array
        project:
          type: string
        ready:
          type: boolean
        runs:
          items:
            $ref: '#/components/schemas/api.migrationRun'
          nullable: true
          type: array
        source:
          type: string
        started:
          type: string
        state:
          type: string
        storage:
          items:
            $ref: '#/components/schemas/api.migrationStorageMapping'
          nullable: true
          type: array
        succeeded:
          format: int64
          type: integer
        targetNamespace:
          type: string
        targetPowerState:
          type: string
        type:
          type: string
        uid:
          type: string
        validating:
          type: boolean
        virtV2vImage:
          type: string
        vmStatus:
          items:
            $ref: '#/components/schemas/api.migrationPlanVMStatus'
          nullable: true
          type: array
        vms:
          format: int64
          type: integer
      required:
        - archived
        - canceled
        - conversion
        - diskCompleted
        - diskTotal
        - failed
        - managedByCelum
        - name
        - networks
        - preserveStaticIPs
        - ready
        - runs
        - source
        - state
        - storage
        - succeeded
        - targetNamespace
        - type
        - uid
        - vmStatus
        - vms
      type: object
      x-go-type: backend/internal/api.migrationPlanDetail
    api.ErrorBody:
      properties:
        error:
          type: string
      required:
        - error
      type: object
    api.migrationPlanCondition:
      properties:
        category:
          type: string
        message:
          type: string
        reason:
          type: string
        type:
          type: string
      required:
        - type
      type: object
      x-go-type: backend/internal/api.migrationPlanCondition
    api.migrationPlanIdentity:
      properties:
        at:
          type: string
        ipv4:
          type: string
        message:
          type: string
        mode:
          type: string
        name:
          type: string
        pool:
          type: string
        state:
          type: string
        vmId:
          type: string
      required:
        - mode
        - state
        - vmId
      type: object
      x-go-type: backend/internal/api.migrationPlanIdentity
    api.migrationNetworkMapping:
      properties:
        source:
          $ref: '#/components/schemas/api.migrationRef'
        target:
          type: string
      required:
        - source
        - target
      type: object
      x-go-type: backend/internal/api.migrationNetworkMapping
    api.migrationRun:
      properties:
        canceled:
          items:
            type: string
          type: array
        completed:
          type: string
        created:
          type: string
        cutover:
          type: string
        message:
          type: string
        name:
          type: string
        running:
          type: boolean
        started:
          type: string
        state:
          type: string
      required:
        - name
        - running
        - state
      type: object
      x-go-type: backend/internal/api.migrationRun
    api.migrationStorageMapping:
      properties:
        accessMode:
          type: string
        source:
          $ref: '#/components/schemas/api.migrationRef'
        storageClass:
          type: string
        volumeMode:
          type: string
      required:
        - source
        - storageClass
      type: object
      x-go-type: backend/internal/api.migrationStorageMapping
    api.migrationPlanVMStatus:
      properties:
        completed:
          type: string
        conversion:
          $ref: '#/components/schemas/api.migrationConversion'
        errorPhase:
          type: string
        errors:
          items:
            type: string
          type: array
        id:
          type: string
        name:
          type: string
        newName:
          type: string
        nextPrecopyAt:
          type: string
        phase:
          type: string
        pipeline:
          items:
            $ref: '#/components/schemas/api.migrationPipelineStep'
          type: array
        precopies:
          format: int64
          type: integer
        precopyRuns:
          items:
            $ref: '#/components/schemas/api.migrationPrecopy'
          type: array
        started:
          type: string
        state:
          type: string
      required:
        - id
        - state
      type: object
      x-go-type: backend/internal/api.migrationPlanVMStatus
    api.migrationRef:
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
      type: object
      x-go-type: backend/internal/api.migrationRef
    api.migrationConversion:
      properties:
        completed:
          type: string
        node:
          type: string
        partial:
          type: boolean
        passes:
          items:
            $ref: '#/components/schemas/api.migrationConversionPass'
          type: array
        pod:
          type: string
        started:
          type: string
        stepsState:
          type: string
      required:
        - pod
      type: object
      x-go-type: backend/internal/api.migrationConversion
    api.migrationPipelineStep:
      properties:
        completed:
          type: string
        description:
          type: string
        errors:
          items:
            type: string
          type: array
        name:
          type: string
        phase:
          type: string
        progressCompleted:
          format: int64
          type: integer
        progressTotal:
          format: int64
          type: integer
        started:
          type: string
        tasks:
          items:
            $ref: '#/components/schemas/api.migrationPipelineTask'
          type: array
        unit:
          type: string
      required:
        - name
        - progressCompleted
        - progressTotal
      type: object
      x-go-type: backend/internal/api.migrationPipelineStep
    api.migrationPrecopy:
      properties:
        disks:
          format: int64
          type: integer
        end:
          type: string
        start:
          type: string
      required:
        - disks
      type: object
      x-go-type: backend/internal/api.migrationPrecopy
    api.migrationConversionPass:
      properties:
        seconds:
          type: number
        steps:
          items:
            $ref: '#/components/schemas/api.migrationConversionStep'
          type: array
        tool:
          type: string
      required:
        - seconds
        - tool
      type: object
      x-go-type: backend/internal/api.migrationConversionPass
    api.migrationPipelineTask:
      properties:
        completed:
          type: string
        name:
          type: string
        phase:
          type: string
        precopy:
          type: string
        progressCompleted:
          format: int64
          type: integer
        progressTotal:
          format: int64
          type: integer
        reason:
          type: string
        started:
          type: string
        unit:
          type: string
      required:
        - name
        - progressCompleted
        - progressTotal
      type: object
      x-go-type: backend/internal/api.migrationPipelineTask
    api.migrationConversionStep:
      properties:
        name:
          type: string
        seconds:
          type: number
      required:
        - name
        - seconds
      type: object
      x-go-type: backend/internal/api.migrationConversionStep
  securitySchemes:
    sessionCookie:
      description: >-
        The session cookie issued by the OIDC sign-in flow. This is what a
        browser uses.
      in: cookie
      name: k8s-gate-session
      type: apiKey
    bearerToken:
      description: >-
        An API token, minted from your own identity page. A token carries the
        IAM groups you held **when it was minted**, and cannot bypass deletion
        approval — except for guest clusters inside a project that same token
        created.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.