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 |
JSON Schema
{
"$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"]
}