jsoncompat 0.4.0

JSON Schema and OpenAPI Compatibility Checker
Documentation
{
  "manifest_version": 1,
  "reader": {
    "$defs": {
      "v1": {
        "properties": {
          "age": {
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "age"
        ],
        "type": "object",
        "x-jsoncompat": {
          "kind": "declaration",
          "name": "UserProfileV1",
          "schema_ref": "#/$defs/v1",
          "stable_id": "user-profile",
          "version": 1
        }
      },
      "v2": {
        "properties": {
          "age": {
            "minimum": 0,
            "type": "integer"
          },
          "interests": {
            "type": "integer"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "age",
          "interests"
        ],
        "type": "object",
        "x-jsoncompat": {
          "kind": "declaration",
          "name": "UserProfileV2",
          "schema_ref": "#/$defs/v2",
          "stable_id": "user-profile",
          "version": 2
        }
      }
    },
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "oneOf": [
      {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/$defs/v2"
          },
          "version": {
            "const": 2
          }
        },
        "required": [
          "version",
          "data"
        ],
        "type": "object",
        "x-jsoncompat": {
          "kind": "reader_variant",
          "name": "UserProfileV2Reader",
          "payload_ref": "#/$defs/v2",
          "stable_id": "user-profile",
          "version": 2
        }
      },
      {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/$defs/v1"
          },
          "version": {
            "const": 1
          }
        },
        "required": [
          "version",
          "data"
        ],
        "type": "object",
        "x-jsoncompat": {
          "kind": "reader_variant",
          "name": "UserProfileV1Reader",
          "payload_ref": "#/$defs/v1",
          "stable_id": "user-profile",
          "version": 1
        }
      }
    ],
    "title": "user-profile reader",
    "x-jsoncompat": {
      "kind": "reader",
      "name": "UserProfileReader",
      "stable_id": "user-profile"
    }
  },
  "stable_id": "user-profile",
  "status": "breaking_change",
  "version": 2,
  "versions": [
    {
      "schema": {
        "properties": {
          "age": {
            "minimum": 0,
            "type": "integer"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "age"
        ],
        "type": "object"
      },
      "schema_sha256": "sha256:935de295398bc648ac95846b8ec5c54e01eea14aa7f8930c86ea1d5c7cf7d01a",
      "version": 1
    },
    {
      "schema": {
        "properties": {
          "age": {
            "minimum": 0,
            "type": "integer"
          },
          "interests": {
            "type": "integer"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "age",
          "interests"
        ],
        "type": "object"
      },
      "schema_sha256": "sha256:db6962f9c26e4987998211028f8250a1a303fba58319e2b4ce906cbee172ad49",
      "version": 2
    }
  ],
  "writer": {
    "$defs": {
      "v2": {
        "properties": {
          "age": {
            "minimum": 0,
            "type": "integer"
          },
          "interests": {
            "type": "integer"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "name",
          "age",
          "interests"
        ],
        "type": "object",
        "x-jsoncompat": {
          "kind": "declaration",
          "name": "UserProfileV2",
          "schema_ref": "#/$defs/v2",
          "stable_id": "user-profile",
          "version": 2
        }
      }
    },
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false,
    "properties": {
      "data": {
        "$ref": "#/$defs/v2"
      },
      "version": {
        "const": 2
      }
    },
    "required": [
      "version",
      "data"
    ],
    "title": "user-profile writer v2",
    "type": "object",
    "x-jsoncompat": {
      "kind": "writer",
      "name": "UserProfileWriter",
      "payload_ref": "#/$defs/v2",
      "stable_id": "user-profile",
      "version": 2
    }
  }
}