{
  "slug": "json-schema-compat-check",
  "name": "gizza-ai/json-schema-compat-check",
  "version": "0.1.0",
  "title": "JSON Schema Compatibility Checker — Backward & Forward Changes — gizza.ai",
  "description": "Compare old and new JSON Schemas for consumer/backward and producer/forward compatibility. Flags enum, type, required-field, object, array, and bound changes.",
  "tags": [
    "json schema compatibility",
    "schema evolution",
    "backward compatibility",
    "forward compatibility",
    "api contract check",
    "breaking change detector",
    "schema diff"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/json-schema-compat-check/",
    "markdown": "https://gizza.ai/tools/json-schema-compat-check/index.md",
    "descriptor": "https://gizza.ai/tools/json-schema-compat-check/tool.json",
    "deep_link_example": "https://gizza.ai/tools/json-schema-compat-check/?old_schema=%7B%22type%22%3A%22object%22%2C%22required%22%3A%5B%22id%22%5D%2C%22properties%22%3A%7B%22id%22%3A%7B%22type%22%3A%22string%22%7D%7D%7D&new_schema=%7B%22type%22%3A%22object%22%2C%22required%22%3A%5B%22id%22%2C%22email%22%5D%2C%22properties%22%3A%7B%22id%22%3A%7B%22type%22%3A%22string%22%7D%2C%22email%22%3A%7B%22type%22%3A%22string%22%7D%7D%7D&direction=both&strict_required=true"
  },
  "cli": "gizza tool json-schema-compat-check '{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"}}}' 'new_schema={\"type\":\"object\",\"required\":[\"id\",\"email\"],\"properties\":{\"id\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}}'",
  "tool": {
    "description": "Compare an old JSON Schema with a proposed new schema and report compatibility findings. Consumer/backward compatibility asks whether the new schema still accepts data that satisfied the old schema. Producer/forward compatibility asks whether data produced for the new schema will still be accepted by consumers using the old schema. The checker handles common draft-7 keywords such as type, enum, const, required, properties, items, additionalProperties, numeric and string bounds, and reports warnings for composition or pattern changes it cannot prove.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "direction": {
          "default": "both",
          "description": "Compatibility question to answer. consumer/backward checks whether the new schema still accepts old data. producer/forward checks whether new data remains acceptable to old consumers. both reports both sides.",
          "enum": [
            "both",
            "consumer",
            "producer"
          ],
          "type": "string"
        },
        "new_schema": {
          "description": "Proposed new JSON Schema document to compare against old_schema.",
          "type": "string"
        },
        "old_schema": {
          "description": "Current or old JSON Schema document. Paste draft-7-style JSON; this is the schema existing data/producers already satisfy.",
          "type": "string"
        },
        "strict_required": {
          "default": false,
          "description": "When true, treat any required-field set change as breaking in the relevant direction. When false, added or removed required fields are still reported but with the checker's default direction-aware severity.",
          "type": "boolean"
        }
      },
      "required": [
        "old_schema",
        "new_schema"
      ],
      "type": "object"
    }
  }
}