Schema Evolution · Schema

Schema Change

Represents a single change made to a data schema between versions, including its type, scope, and compatibility impact.

Schema EvolutionBackward CompatibilityForward CompatibilityAPI VersioningBreaking ChangesSchema RegistryData MigrationKafka

Properties

Name Type Description
id string Unique identifier for this change record
schemaName string Name of the schema being changed
fromVersion string Version number before this change
toVersion string Version number after this change
changeType string Type of schema change made
fieldPath string JSON path to the field affected by this change (e.g., 'properties.user.email')
compatibilityImpact string How this change affects schema compatibility
description string Human-readable description of the change and its rationale
migrationRequired boolean Whether data migration is required for existing records
migrationScript string SQL, migration script, or transformation logic description
date string Date when the change was applied
author string Person or team responsible for the change
View JSON Schema on GitHub

JSON Schema

schema-evolution-change-schema.json Raw ↑
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://github.com/api-evangelist/schema-evolution/blob/main/json-schema/schema-evolution-change-schema.json",
  "title": "Schema Change",
  "description": "Represents a single change made to a data schema between versions, including its type, scope, and compatibility impact.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique identifier for this change record"
    },
    "schemaName": {
      "type": "string",
      "description": "Name of the schema being changed"
    },
    "fromVersion": {
      "type": "string",
      "description": "Version number before this change"
    },
    "toVersion": {
      "type": "string",
      "description": "Version number after this change"
    },
    "changeType": {
      "type": "string",
      "description": "Type of schema change made",
      "enum": [
        "field-added",
        "field-removed",
        "field-renamed",
        "field-type-changed",
        "field-made-required",
        "field-made-optional",
        "field-default-added",
        "field-default-changed",
        "enum-value-added",
        "enum-value-removed",
        "schema-created",
        "schema-deprecated",
        "schema-removed",
        "constraint-added",
        "constraint-removed"
      ]
    },
    "fieldPath": {
      "type": "string",
      "description": "JSON path to the field affected by this change (e.g., 'properties.user.email')"
    },
    "compatibilityImpact": {
      "type": "string",
      "description": "How this change affects schema compatibility",
      "enum": ["backward-compatible", "forward-compatible", "fully-compatible", "breaking"]
    },
    "description": {
      "type": "string",
      "description": "Human-readable description of the change and its rationale"
    },
    "migrationRequired": {
      "type": "boolean",
      "description": "Whether data migration is required for existing records"
    },
    "migrationScript": {
      "type": "string",
      "description": "SQL, migration script, or transformation logic description"
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "Date when the change was applied"
    },
    "author": {
      "type": "string",
      "description": "Person or team responsible for the change"
    }
  },
  "required": ["schemaName", "fromVersion", "toVersion", "changeType", "compatibilityImpact"]
}