{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-security-response-center-msrc/json-schema/microsoft-security-response-center-msrc-iedm-model-schema.json",
  "title": "IEdmModel",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-security-response-center-msrc-cvrf-openapi.yml#/components/schemas/IEdmModel",
  "type": "object",
  "properties": {
    "schemaElements": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/IEdmSchemaElement"
      },
      "readOnly": true
    },
    "vocabularyAnnotations": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/IEdmVocabularyAnnotation"
      },
      "readOnly": true
    },
    "referencedModels": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/IEdmModel"
      },
      "readOnly": true
    },
    "declaredNamespaces": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "readOnly": true
    },
    "directValueAnnotationsManager": {
      "$ref": "#/$defs/IEdmDirectValueAnnotationsManager"
    },
    "entityContainer": {
      "$ref": "#/$defs/IEdmEntityContainer"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "EdmContainerElementKind": {
      "enum": [
        "None",
        "EntitySet",
        "ActionImport",
        "FunctionImport",
        "Singleton"
      ],
      "type": "string"
    },
    "EdmExpressionKind": {
      "enum": [
        "None",
        "BinaryConstant",
        "BooleanConstant",
        "DateTimeOffsetConstant",
        "DecimalConstant",
        "FloatingConstant",
        "GuidConstant",
        "IntegerConstant",
        "StringConstant",
        "DurationConstant",
        "Null",
        "Record",
        "Collection",
        "Path",
        "If",
        "Cast",
        "IsType",
        "FunctionApplication",
        "LabeledExpressionReference",
        "Labeled",
        "PropertyPath",
        "NavigationPropertyPath",
        "DateConstant",
        "TimeOfDayConstant",
        "EnumMember",
        "AnnotationPath"
      ],
      "type": "string"
    },
    "EdmSchemaElementKind": {
      "enum": [
        "None",
        "TypeDefinition",
        "Term",
        "Action",
        "EntityContainer",
        "Function"
      ],
      "type": "string"
    },
    "EdmTypeKind": {
      "enum": [
        "None",
        "Primitive",
        "Entity",
        "Complex",
        "Collection",
        "EntityReference",
        "Enum",
        "TypeDefinition",
        "Untyped",
        "Path"
      ],
      "type": "string"
    },
    "IEdmDirectValueAnnotationsManager": {
      "type": "object",
      "additionalProperties": false
    },
    "IEdmEntityContainer": {
      "type": "object",
      "properties": {
        "elements": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IEdmEntityContainerElement"
          },
          "readOnly": true
        },
        "schemaElementKind": {
          "$ref": "#/$defs/EdmSchemaElementKind"
        },
        "namespace": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "IEdmEntityContainerElement": {
      "type": "object",
      "properties": {
        "containerElementKind": {
          "$ref": "#/$defs/EdmContainerElementKind"
        },
        "container": {
          "$ref": "#/$defs/IEdmEntityContainer"
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "IEdmExpression": {
      "type": "object",
      "properties": {
        "expressionKind": {
          "$ref": "#/$defs/EdmExpressionKind"
        }
      },
      "additionalProperties": false
    },
    "IEdmModel": {
      "type": "object",
      "properties": {
        "schemaElements": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IEdmSchemaElement"
          },
          "readOnly": true
        },
        "vocabularyAnnotations": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IEdmVocabularyAnnotation"
          },
          "readOnly": true
        },
        "referencedModels": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/IEdmModel"
          },
          "readOnly": true
        },
        "declaredNamespaces": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "readOnly": true
        },
        "directValueAnnotationsManager": {
          "$ref": "#/$defs/IEdmDirectValueAnnotationsManager"
        },
        "entityContainer": {
          "$ref": "#/$defs/IEdmEntityContainer"
        }
      },
      "additionalProperties": false
    },
    "IEdmSchemaElement": {
      "type": "object",
      "properties": {
        "schemaElementKind": {
          "$ref": "#/$defs/EdmSchemaElementKind"
        },
        "namespace": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "IEdmTerm": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/$defs/IEdmTypeReference"
        },
        "appliesTo": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "defaultValue": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "schemaElementKind": {
          "$ref": "#/$defs/EdmSchemaElementKind"
        },
        "namespace": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "IEdmType": {
      "type": "object",
      "properties": {
        "typeKind": {
          "$ref": "#/$defs/EdmTypeKind"
        }
      },
      "additionalProperties": false
    },
    "IEdmTypeReference": {
      "type": "object",
      "properties": {
        "isNullable": {
          "type": "boolean",
          "readOnly": true
        },
        "definition": {
          "$ref": "#/$defs/IEdmType"
        }
      },
      "additionalProperties": false
    },
    "IEdmVocabularyAnnotatable": {
      "type": "object",
      "additionalProperties": false
    },
    "IEdmVocabularyAnnotation": {
      "type": "object",
      "properties": {
        "qualifier": {
          "type": [
            "string",
            "null"
          ],
          "readOnly": true
        },
        "term": {
          "$ref": "#/$defs/IEdmTerm"
        },
        "target": {
          "$ref": "#/$defs/IEdmVocabularyAnnotatable"
        },
        "value": {
          "$ref": "#/$defs/IEdmExpression"
        }
      },
      "additionalProperties": false
    }
  }
}