---
title: "Get Schema Migration"
method: GET
path: "/v2/schema-migrations/{id}"
tags: ["Entity Type API"]
---

# Get Schema Migration

`GET /v2/schema-migrations/{id}`

Get a schema migration by ID, including its current status (PENDING, IN_PROGRESS, APPLIED, COMPLETED, FAILED, or CANCELLED).

## Path parameters

- `id` string, required — The ID of the schema migration to fetch.

## Response `200`

Success

- SvstorePublicapiGetSchemaMigrationResponse
  - `data` SvstoreSchemaMigration — Schema Migrations — unified audit log for every audit-worthy mutation on an entity type. Instant ops (create_field, create/delete enum option) write a status=completed row inline with the mutating tx. Staged ops (rename_field, delete_field, change_field_type) transition in_progress -> applied -> completed via a Temporal workflow.
    - `id` string
    - `entityTypeId` string
    - `operationType` 'OPERATION_TYPE_UNSPECIFIED' | 'CREATE_FIELD' | 'RENAME_FIELD' | 'DELETE_FIELD' | 'CHANGE_FIELD_TYPE' | 'CREATE_ENUM_OPTION' | 'DELETE_ENUM_OPTION'
    - `status` 'STATUS_UNSPECIFIED' | 'COMPLETED' | 'IN_PROGRESS' | 'APPLIED' | 'FAILED' | 'PENDING' | 'CANCELLED'
    - `details` union — SchemaMigrationDetails is a typed oneof of per-operation payloads persisted as protojson in entity_schema_migrations.details. The frontend does an exhaustive switch on details.case to render each op's summary.
      - object
        - `changeFieldType` SvstoreChangeFieldTypeDetails, required
          - `fieldId` string
          - `fieldKey` string
          - `oldDataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
          - `newDataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
      - object
        - `createEnumOption` SvstoreCreateEnumOptionDetails, required
          - `fieldId` string
          - `optionId` string
          - `optionValue` string
          - `optionDisplayName` string
      - object
        - `createField` SvstoreCreateFieldDetails, required
          - `fieldId` string
          - `fieldKey` string
          - `fieldName` string
          - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
      - object
        - `deleteEnumOption` SvstoreDeleteEnumOptionDetails, required
          - `fieldId` string
          - `optionId` string
          - `optionValue` string
      - object
        - `deleteField` SvstoreDeleteFieldDetails, required
          - `fieldId` string
          - `fieldKey` string
          - `fieldName` string
          - `keepOnChildren` boolean
      - object
        - `renameField` SvstoreRenameFieldDetails, required
          - `fieldId` string
          - `oldKey` string
          - `newKey` string
          - `oldName` string
          - `newName` string
    - `actorUserId` string, nullable
    - `startedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `completedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
    - `error` string, nullable

## Other responses

- `default` — Error

---

[API](https://skmtc.net/serval/apis/serval-public-api.md) · [All operations](https://skmtc.net/serval/apis/serval-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/serval/serval-public-api/versions/0549515e9384/schema)
