{
  "description": "This is the interface description of CSN Interop Effective v1.\nIts purpose is to be an aligned import / export format for CSN that works across tech-stacks in a wider SAP ecosystem.\n\nFor a more extensive documentation on CSN in general, consider the [CAP CSN](https://cap.cloud.sap/docs/cds/csn) documentation.",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://sap.github.io/csn-interop-specification/spec-v1/csn-interop-effective.schema.json#",
  "title": "CSN Interop Effective Document",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri-reference",
      "description": "Link to JSON Schema for this CSN Interop Effective document.\nAdding this helps with automatic validation and code intelligence in some editors / IDEs.\n\nSee https://tour.json-schema.org/content/06-Combining-Subschemas/02-id-and-schema\n",
      "anyOf": [
        {
          "const": "https://sap.github.io/csn-interop-specification/spec-v1/csn-interop-effective.schema.json#"
        },
        {
          "type": "string",
          "format": "uri-reference"
        }
      ]
    },
    "$id": {
      "type": "string",
      "format": "uri-reference",
      "description": "Optional URI for this document, that can acts as an ID or as location to retrieve the document.\n\nSee https://tour.json-schema.org/content/06-Combining-Subschemas/02-id-and-schema\n"
    },
    "csnInteropEffective": {
      "type": "string",
      "description": "Existence of this property indicated that the file is a CSN Interop Effective document.\nThe value states the specification version it has been created against.",
      "enum": [
        "1.0",
        "1.1",
        "1.2"
      ]
    },
    "$version": {
      "type": "string",
      "description": "The version of the CDS CSN. For this version of CSN Interop it is fixed to `2.0`.\n\nThis MUST be provided to ensure that CSN Interop is a valid subset of CDS CSN in general.",
      "enum": [
        "2.0"
      ]
    },
    "meta": {
      "type": "object",
      "description": "Meta information that apply to the CSN document as a whole.",
      "$ref": "#/definitions/Meta"
    },
    "definitions": {
      "$ref": "#/definitions/Definitions",
      "description": "Dictionary of CSN modeling artifacts.\n"
    },
    "i18n": {
      "$ref": "#/definitions/i18n",
      "description": "Dictionary of translated texts.\n"
    }
  },
  "patternProperties": {
    "^__.+$": {
      "type": [
        "string",
        "number",
        "boolean",
        "array",
        "object"
      ],
      "description": "Private properties, starting with `__`.\n\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.\n",
      "tsType": "unknown // replaceKeyType_{PrivatePropertyKey}"
    }
  },
  "required": [
    "csnInteropEffective",
    "$version",
    "definitions"
  ],
  "additionalProperties": false,
  "definitions": {
    "Meta": {
      "title": "Meta",
      "type": "object",
      "description": "Meta information about the CSN document and its creator.",
      "properties": {
        "creator": {
          "type": "string",
          "description": "Informal description of the creator of this CSN Document.",
          "examples": [
            "CDS Compiler v4.5.0"
          ]
        },
        "flavor": {
          "type": "string",
          "description": "Informal hint which CSN flavor is used. The values are currently NOT standardized.\n\nA CSN flavor can be understood as an alias to particular [feature set](#) of CSN overall.\nIn CSN Interop we leave some features open and to be defined in the document itself, this is why we don't have a fixed flavor.",
          "examples": [
            "effective",
            "inferred"
          ]
        },
        "document": {
          "$ref": "#/definitions/MetaDocument"
        },
        "features": {
          "$ref": "#/definitions/MetaFeatures"
        }
      },
      "patternProperties": {
        "^__.+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Private properties, starting with `__`.\n\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.\n",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey}"
        }
      },
      "examples": [
        {
          "creator": "CDS Compiler v4.5.0",
          "flavor": "inferred",
          "document": {
            "version": "1.2.1"
          }
        }
      ],
      "additionalProperties": false
    },
    "MetaDocument": {
      "title": "Document (Metadata)",
      "type": "object",
      "description": "Metadata that describes the document (and what it represents) itself.",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 255,
          "description": "Machine readable technical name / local ID of the CSN document.\nTogether with `meta.document.namespace` and `meta.document.version` it uniquely identifies the CSN document at a given version.\n\nMUST NOT contain linebreaks.\nMUST be unique across all CSN documents in the same `meta.document.namespace`.",
          "pattern": "^([a-zA-Z0-9._\\-]+)$"
        },
        "namespace": {
          "type": "string",
          "maxLength": 36,
          "description": "Globally unique namespace of the CSN document.\nTogether with `meta.document.name` and `meta.document.version` it uniquely identifies the CSN document at a given version.\n\nMUST be a valid, registered [ORD namespace](https://open-resource-discovery.github.io/specification/spec-v1#namespaces) with at least two fragments.",
          "pattern": "^[a-z0-9]+(?:[.][a-z0-9]+){1,}$"
        },
        "version": {
          "type": "string",
          "description": "The version of the CSN document / the described model itself (not the specification).\n\nWe RECOMMEND to use the [SemVer](https://semver.org/) standard.",
          "examples": [
            "1.3.4"
          ]
        },
        "title": {
          "type": "string",
          "maxLength": 255,
          "description": "Human readable title for the CSN document (plain-text).\n\nMUST NOT contain linebreaks."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation that describes the overall CSN document.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown)."
        }
      },
      "additionalProperties": false
    },
    "MetaFeatures": {
      "title": "Features (Metadata)",
      "type": "object",
      "description": "CSN feature-dimensions this document fulfills.\n\nIt is RECOMMENDED to explicitly state all feature dimensions of the document.\nOtherwise the consumer cannot rely on the information and may have to figure this out on his own.",
      "properties": {
        "complete": {
          "type": "boolean",
          "description": "Whether this document is complete and self-contained.\n\nIt is RECOMMENDED to have complete CSN documents and set this to `true`.\n\nIf true references to other CDS elements (e.g. `cds.Association`) MUST be resolvable within the same document."
        }
      },
      "x-recommended": [
        "complete"
      ],
      "examples": [
        {
          "complete": true
        }
      ],
      "additionalProperties": false
    },
    "Definitions": {
      "title": "Definitions",
      "type": "object",
      "description": "Each entry in the definitions dictionary is a definition of a named modeling artefact.\nThe `name` is the absolute, fully qualified name of the definition, and the value is a record with the definition details.\n\nDefinition names MUST:\n- Not be an empty string.\n- Not start with `@`, `__`, `.`, `::`.\n- Not end with `.` or `::`.\n- Not contain the substring `..` or `:::`.\n- Not contain the substring `::` more than once.\n\nSee [Primer: Definitions](../primer.md#definitions).",
      "patternProperties": {
        "^(?![@]|__|\\.|::).+$": {
          "$ref": "#/definitions/DefinitionEntry"
        }
      },
      "minProperties": 1,
      "additionalProperties": false,
      "examples": [
        {
          "SomeEntity": {
            "kind": "entity",
            "elements": {
              "SomeElement": {
                "@SomeProperty.upperCase": true,
                "type": "cds.String"
              }
            }
          }
        }
      ]
    },
    "DefinitionEntry": {
      "type": "object",
      "description": "Definition of a CDS modeling artifact, put into [Definitions](#definitions).",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "context",
            "entity",
            "service",
            "type"
          ],
          "description": "The modeling artefact kind.\nIt's value is been used as a _discriminator_ to distinguish the matching schema that should be further validated."
        }
      },
      "required": [
        "kind"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "kind": {
                "type": "string",
                "const": "context"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "$ref": "#/definitions/ContextDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "type": "string",
                "const": "entity"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "$ref": "#/definitions/EntityDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "type": "string",
                "const": "service"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "$ref": "#/definitions/ServiceDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "type": "string",
                "const": "type"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "$ref": "#/definitions/TypeDefinition"
          }
        }
      ],
      "title": "DefinitionEntry"
    },
    "EntityDefinition": {
      "title": "Entity Definition",
      "type": "object",
      "description": "Entity definition refers to the structured description of an object or concept.\n\nIf it is exposed through a [Service](#service-definition), it describes a data model.\nTo expose it through a Service, the service name MUST be prefixed to the Entity name, separated by a `.` (dot).\nThe actual data serialization format is defined by the Service protocol and chosen data format [mapping](../mappings).\n\nIf the entity is not exposed via a service, it only describes a conceptual domain object.",
      "x-extension-points": [
        "Entity"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "entity",
          "description": "The modeling artefact is an entity.",
          "tsType": "EntityKind"
        },
        "elements": {
          "$ref": "#/definitions/ElementDefinitions"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "abstract": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Proper syntax element in ABAP CDS producing Abstract CDS Entities"
        },
        "customEntity": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Proper syntax element in ABAP CDS producing Custom CDS Entities"
        },
        "tableFunction": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Proper syntax element in ABAP CDS producing CDS Table Functions."
        },
        "externalEntity": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Proper syntax element in ABAP CDS producing CDS  External Entities"
        },
        "providerContract": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "ABAP CDS Projection have the additional information of a provider contract"
        },
        "rootEntity": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "ABAP CDS Root View Entities define a RAP Business Object."
        },
        "transient": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Special kind of analytical ABAP CDS Projection view."
        },
        "literal": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "In the selection element list of a CDS view."
        },
        "toCompositionChild": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "When redirecting associations in ABAP CDS Projections with the additional keywords \"to composition child\", this indicates a Parent-Child-Composition an requires the redirection target to have a matching \"to parent\" association redefinition."
        },
        "toParent": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "When redirecting associations in ABAP CDS Projections with the additional keywords \"to composition child\", this indicates a Parent-Child-Composition an requires the redirection target to have a matching \"to parent\" association redefinition."
        },
        "hana_on_asString": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Contains the SQL on condition as string"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.entityType": {
          "$ref": "#/definitions/@EntityRelationship.entityType"
        },
        "@EntityRelationship.entityIds": {
          "$ref": "#/definitions/@EntityRelationship.entityIds"
        },
        "@EntityRelationship.compositeReferences": {
          "$ref": "#/definitions/@EntityRelationship.compositeReferences"
        },
        "@EntityRelationship.temporalIds": {
          "$ref": "#/definitions/@EntityRelationship.temporalIds"
        },
        "@EntityRelationship.temporalReferences": {
          "$ref": "#/definitions/@EntityRelationship.temporalReferences"
        },
        "@EntityRelationship.referencesWithConstantIds": {
          "$ref": "#/definitions/@EntityRelationship.referencesWithConstantIds"
        },
        "@ObjectModel.compositionRoot": {
          "$ref": "#/definitions/@ObjectModel.compositionRoot"
        },
        "@ObjectModel.representativeKey": {
          "$ref": "#/definitions/@ObjectModel.representativeKey"
        },
        "@ObjectModel.semanticKey": {
          "$ref": "#/definitions/@ObjectModel.semanticKey"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.modelingPattern": {
          "$ref": "#/definitions/@ObjectModel.modelingPattern"
        },
        "@ObjectModel.supportedCapabilities": {
          "$ref": "#/definitions/@ObjectModel.supportedCapabilities"
        },
        "@ObjectModel.tenantWideUniqueName": {
          "$ref": "#/definitions/@ObjectModel.tenantWideUniqueName"
        },
        "@ObjectModel.usageType.sizeCategory": {
          "$ref": "#/definitions/@ObjectModel.usageType.sizeCategory"
        },
        "@ODM.entityName": {
          "$ref": "#/definitions/@ODM.entityName"
        },
        "@ODM.oid": {
          "$ref": "#/definitions/@ODM.oid"
        },
        "@PersonalData.entitySemantics": {
          "$ref": "#/definitions/@PersonalData.entitySemantics"
        },
        "@PersonalData.dataSubjectRole": {
          "$ref": "#/definitions/@PersonalData.dataSubjectRole"
        },
        "@PersonalData.dataSubjectRoleDescription": {
          "$ref": "#/definitions/@PersonalData.dataSubjectRoleDescription"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "elements"
      ],
      "additionalProperties": false
    },
    "ElementDefinitions": {
      "title": "Element Definitions",
      "type": "object",
      "description": "Dictionary of Element where the key is the name of the element and the value its definition.\n\nThe value can either be a standard [CDS Type](#cds-type) (`cds.*`) or a [Custom Type](#custom-type).\n\nElement names MUST:\n- Not be an empty string.\n- Not start with `@`, `__`, `::`.\n- Not end with `::`.\n- Not contain the substring `.` or `:::`.\n- Not contain the substring `::` more than once.",
      "minProperties": 1,
      "patternProperties": {
        "^(?![@]|__|\\.|::).+$": {
          "$ref": "#/definitions/ElementEntry"
        }
      },
      "additionalProperties": false
    },
    "ElementEntry": {
      "type": "object",
      "description": "Definition of an Element, as put into [Element Definitions](#element-definitions).\n\nAn element can be either of a standard [CDS Types](#cds-type) or a [Custom Type](#custom-type).\n\nPlease note that CSN Interop does not support arrays of scalar types or arrays of arrays, see [Primer: Cardinality](../primer.md#cardinality).",
      "properties": {
        "type": {
          "type": "string"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "pattern": "^(cds\\.).*$"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/CdsType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "pattern": "^(?!cds\\.).*$"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/CustomType"
          }
        }
      ],
      "required": [
        "type"
      ],
      "title": "ElementEntry"
    },
    "CdsType": {
      "title": "Cds Type",
      "type": "object",
      "description": "The native CDS Type of an element, which will always start with `cds.`.",
      "properties": {
        "type": {
          "type": "string",
          "description": "The CDS type (`cds.*`), as defined by the CSN specification.",
          "enum": [
            "cds.Boolean",
            "cds.String",
            "cds.LargeString",
            "cds.Integer",
            "cds.Int16",
            "cds.Integer64",
            "cds.UInt8",
            "cds.Decimal",
            "cds.Double",
            "cds.Date",
            "cds.Time",
            "cds.DateTime",
            "cds.Timestamp",
            "cds.UUID",
            "cds.Binary",
            "cds.LargeBinary",
            "cds.Association",
            "cds.Composition"
          ]
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Boolean"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/BooleanType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.String"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/StringType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.LargeString"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/LargeStringType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Integer"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/IntegerType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Int16"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/Int16Type"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Integer64"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/Integer64Type"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.UInt8"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/UInt8Type"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Decimal"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DecimalType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Double"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DoubleType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Date"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DateType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Time"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/TimeType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.DateTime"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DateTimeType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Timestamp"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/TimestampType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.UUID"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/UUIDType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Binary"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/BinaryType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.LargeBinary"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/LargeBinaryType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Association"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/AssociationType"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Composition"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/CompositionType"
          }
        }
      ],
      "required": [
        "type"
      ]
    },
    "BooleanType": {
      "title": "Boolean Type",
      "type": "object",
      "description": "An element of type `cds.Boolean`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Boolean",
          "description": "The modeling artefact is a `cds.Boolean` type.",
          "tsType": "BooleanCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueBoolean"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "BooleanType"
      ],
      "examples": [
        {
          "type": "cds.Boolean",
          "default": {
            "val": true
          }
        }
      ]
    },
    "StringType": {
      "title": "String Type",
      "type": "object",
      "description": "An element of type `cds.String`, which is length limited.\nFor unlimited / large strings, use `cds.LargeString` instead.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.String",
          "description": "The modeling artefact is a `cds.String` type.",
          "tsType": "StringCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "maximum": 5000,
          "default": 5000,
          "description": "Describes the maximum number of characters of the value, up to 5000.\nIf not provided, 5000 length is assumed.\nFor longer length strings, use `cds.LargeString` instead."
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        },
        "@Semantics.mimeType": {
          "$ref": "#/definitions/@Semantics.mimeType"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "StringType"
      ],
      "examples": [
        {
          "type": "cds.String",
          "key": true,
          "length": 3,
          "default": {
            "val": "foo"
          }
        }
      ]
    },
    "LargeStringType": {
      "title": "LargeString Type",
      "type": "object",
      "description": "An element of type `cds.LargeString`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.LargeString",
          "description": "The modeling artefact is a `cds.LargeString` type.",
          "tsType": "LargeStringCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "description": "Describes the maximum number of characters of the value.\nIf not provided, unlimited length is assumed."
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        },
        "@Semantics.largeObject.acceptableMimeTypes": {
          "$ref": "#/definitions/@Semantics.largeObject.acceptableMimeTypes"
        },
        "@Semantics.largeObject.mimeType": {
          "$ref": "#/definitions/@Semantics.largeObject.mimeType"
        },
        "@Semantics.largeObject.fileName": {
          "$ref": "#/definitions/@Semantics.largeObject.fileName"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "LargeStringType"
      ],
      "examples": [
        {
          "type": "cds.LargeString",
          "length": 3,
          "default": {
            "val": "large foo"
          },
          "notNull": true
        }
      ]
    },
    "IntegerType": {
      "title": "Integer Type",
      "type": "object",
      "description": "Signed integer with 32 bit.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Integer",
          "description": "The modeling artefact is a `cds.Integer` type.",
          "tsType": "IntegerCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "IntegerType"
      ],
      "examples": [
        {
          "type": "cds.Integer",
          "default": {
            "val": 123
          }
        }
      ]
    },
    "Int16Type": {
      "title": "Int16 Type",
      "type": "object",
      "description": "Signed integer with 16 bit.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Int16",
          "description": "The modeling artefact is a `cds.Int16` type.",
          "tsType": "Int16CdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "Int16Type"
      ],
      "examples": [
        {
          "type": "cds.Int16",
          "default": {
            "val": 123
          }
        }
      ]
    },
    "Integer64Type": {
      "title": "Integer64 Type",
      "type": "object",
      "description": "Signed integer with 64 bit.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Integer64",
          "description": "The modeling artefact is a `cds.Integer64` type.",
          "tsType": "Integer64CdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "Integer64Type"
      ],
      "examples": [
        {
          "type": "cds.Integer64",
          "default": {
            "val": 123
          }
        }
      ]
    },
    "UInt8Type": {
      "title": "UInt8 Type",
      "type": "object",
      "description": "Unsigned integer with 8 bit.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.UInt8",
          "description": "The modeling artefact is a `cds.UInt8` type.",
          "tsType": "UInt8CdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "UInt8Type"
      ],
      "examples": [
        {
          "type": "cds.UInt8",
          "default": {
            "val": 64
          }
        }
      ]
    },
    "DecimalType": {
      "title": "Decimal Type",
      "type": "object",
      "description": "An element of type `cds.Decimal`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Decimal",
          "description": "The modeling artefact is a `cds.Decimal` type.",
          "tsType": "DecimalCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueNumber"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "precision": {
          "type": "number",
          "minimum": 1,
          "description": "Total number of digits in a number.\nThis includes both the digits before and after the decimal point.\n\nSHOULD be explicitly provided and MUST be provided if own default assumptions diverge from specified default of `34`.\n\nThe semantics of the choices follows the [OData v4 Precision](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Precision) specification.",
          "default": 34
        },
        "scale": {
          "oneOf": [
            {
              "$ref": "#/definitions/DecimalScaleNumber"
            },
            {
              "$ref": "#/definitions/DecimalScaleType"
            }
          ],
          "description": "Describes the number of digits to the right of the decimal point in a number.\n\nSHOULD be explicitly provided and MUST be provided if own default assumptions diverge from specified default of `floating`.",
          "default": "floating"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DecimalType"
      ],
      "examples": [
        {
          "type": "cds.Decimal",
          "precision": 16,
          "scale": 3,
          "default": {
            "val": 12.3
          }
        }
      ]
    },
    "DoubleType": {
      "title": "Double Type",
      "type": "object",
      "description": "An element of type `cds.Double`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Double",
          "description": "The modeling artefact is a `cds.Double` type.",
          "tsType": "DoubleCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueNumber"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DoubleType"
      ],
      "examples": [
        {
          "type": "cds.Double",
          "default": {
            "val": 123
          }
        }
      ]
    },
    "DateType": {
      "title": "Date Type",
      "type": "object",
      "description": "An element of type `cds.Date`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Date",
          "description": "The modeling artefact is a `cds.Date` type.",
          "tsType": "DateCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DateType"
      ],
      "examples": [
        {
          "type": "cds.Date",
          "key": true
        }
      ]
    },
    "TimeType": {
      "title": "Time Type",
      "type": "object",
      "description": "An element of type `cds.Time`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Time",
          "description": "The modeling artefact is a `cds.Time` type.",
          "tsType": "TimeCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "TimeType"
      ],
      "examples": [
        {
          "type": "cds.Time",
          "key": true
        }
      ]
    },
    "DateTimeType": {
      "title": "DateTime Type",
      "type": "object",
      "description": "An element of type `cds.DateTime`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.DateTime",
          "description": "The modeling artefact is a `cds.DateTime` type.",
          "tsType": "DateTimeCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DateTimeType"
      ],
      "examples": [
        {
          "type": "cds.DateTime",
          "key": true
        }
      ]
    },
    "TimestampType": {
      "title": "Timestamp Type",
      "type": "object",
      "description": "An element of type `cds.Timestamp`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Timestamp",
          "description": "The modeling artefact is a `cds.Timestamp` type.",
          "tsType": "TimestampCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "TimestampType"
      ],
      "examples": [
        {
          "type": "cds.Timestamp",
          "key": true
        }
      ]
    },
    "UUIDType": {
      "title": "UUID Type",
      "type": "object",
      "description": "An element of type `cds.UUID`.",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.UUID",
          "description": "The modeling artefact is a `cds.UUID` type.",
          "tsType": "UUIDCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "UUIDType"
      ],
      "examples": [
        {
          "type": "cds.UUID",
          "key": true
        }
      ]
    },
    "BinaryType": {
      "title": "Binary Type",
      "type": "object",
      "description": "An element of type `cds.Binary`.",
      "x-introduced-in-version": "1.1.0",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Binary",
          "description": "The modeling artefact is a `cds.Binary` type.",
          "tsType": "BinaryCdsType"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "maximum": 5000,
          "default": 5000,
          "description": "Describes the maximum number of characters of the value, up to 5000.\nIf not provided, 5000 length is assumed.\nFor longer length strings, use `cds.LargeString` instead."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "BinaryType"
      ],
      "examples": [
        {
          "type": "cds.Binary",
          "key": true
        }
      ]
    },
    "LargeBinaryType": {
      "title": "Large Binary Type",
      "type": "object",
      "description": "An element of type `cds.LargeBinary`.",
      "x-introduced-in-version": "1.1.0",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.LargeBinary",
          "description": "The modeling artefact is a `cds.LargeBinary` type.",
          "tsType": "LargeBinaryCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "description": "Describes the maximum number of bytes of the value.\nIf not provided, unlimited length is assumed."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        },
        "@Semantics.largeObject.acceptableMimeTypes": {
          "$ref": "#/definitions/@Semantics.largeObject.acceptableMimeTypes"
        },
        "@Semantics.largeObject.mimeType": {
          "$ref": "#/definitions/@Semantics.largeObject.mimeType"
        },
        "@Semantics.largeObject.fileName": {
          "$ref": "#/definitions/@Semantics.largeObject.fileName"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "LargeBinaryType"
      ],
      "examples": [
        {
          "type": "cds.LargeBinary"
        }
      ]
    },
    "AssociationType": {
      "title": "Association Type",
      "type": "object",
      "description": "An element of type `cds.Association`, to express a \"reference\" relation across Entities.\nIt works the same way as a [`cds.Composition`](#composition-type), with the difference that the latter assumes a composite relationship.\n\nSee [Primer: Associations and Compositions](../primer.md#associations-and-compositions).",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Association",
          "description": "The modeling artefact is a `cds.Association` type.",
          "tsType": "AssociationCdsType"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "target": {
          "type": "string",
          "description": "The (fully qualified) target entity name.",
          "x-association-target": [
            "#/definitions/EntityDefinition"
          ]
        },
        "cardinality": {
          "$ref": "#/definitions/CardinalityObject"
        },
        "on": {
          "type": "array",
          "description": "The property `on` holds a sequence of operators and operands to describe the join condition, similar to an SQL expression.\n\nThe `on` condition is constructed by triples of:\n- Reference to the target element (ID) as array with 2 items\n- Operator: Equals `=`, Smaller `<`, Smaller Equals `<=`, Greater `>` or Greater Equals `>=`\n- Reference to the local element (ID) as array with 1 item OR a constant value (`val`)\n\nThe first and third entry of the triple MAY be reversed but the `=`, `<`, `<=`, `>` or `>=` operator MUST be in the middle.\nThe target element reference MUST have two array items. The first item is the association name and the second item is the target element name.\nThe local element reference MUST have one array item, which is the local element name.\n\nThe first and the third entry of the triple MUST have the same CDS type (`cds.*`), as defined by the CSN specification.\n\nOperator `<`, `<=`, `>` or `>=` MUST be used only for `cds.Integer`, `cds.Int16`, `cds.Integer64`, `cds.UInt8`, `cds.Decimal`, `cds.Double`, `cds.Date`, `cds.Time`, `cds.DateTime`, `cds.Timestamp` type operands.\n\nIn case of composite references / IDs, any number of triples can be combined with the `and` operator in between.\n\nSee also: (../primer.md#on-condition) and [CAP documentation](https://cap.cloud.sap/docs/cds/csn#assoc-on).",
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/StructuredElementReference"
              },
              {
                "$ref": "#/definitions/EqualsOperator"
              },
              {
                "$ref": "#/definitions/SmallerOperator"
              },
              {
                "$ref": "#/definitions/SmallerEqualsOperator"
              },
              {
                "$ref": "#/definitions/GreaterOperator"
              },
              {
                "$ref": "#/definitions/GreaterEqualsOperator"
              },
              {
                "$ref": "#/definitions/AndOperator"
              },
              {
                "$ref": "#/definitions/OnValue"
              }
            ]
          },
          "minItems": 3,
          "examples": [
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              "<=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              ">=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "ref": [
                  "ConnectionID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "val": "1234567"
              }
            ]
          ]
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "target",
        "on"
      ],
      "x-recommended": [
        "cardinality"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "AssociationType"
      ],
      "examples": [
        {
          "type": "cds.Association",
          "target": "Airport",
          "cardinality": {
            "max": "*"
          },
          "on": [
            {
              "ref": [
                "to_DepartureAirport",
                "AirportID"
              ]
            },
            "=",
            {
              "ref": [
                "DepartureAirport_AirportID"
              ]
            }
          ]
        }
      ]
    },
    "CompositionType": {
      "title": "Composition Type",
      "type": "object",
      "description": "An element of type `cds.Composition`, to express a \"contains\" relation across Entities.\nIt works the same as a [`cds.Association`](#association-type).\n\nSee [Primer: Associations and Compositions](../primer.md#associations-and-compositions).",
      "properties": {
        "type": {
          "type": "string",
          "const": "cds.Composition",
          "description": "The modeling artefact is a `cds.Composition` type.",
          "tsType": "CompositionCdsType"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "target": {
          "type": "string",
          "description": "The (fully qualified) target entity name.",
          "x-association-target": [
            "#/definitions/EntityDefinition"
          ]
        },
        "cardinality": {
          "$ref": "#/definitions/CardinalityObject"
        },
        "on": {
          "type": "array",
          "description": "The property `on` holds a sequence of operators and operands to describe the join condition, similar to an SQL expression.\n\nThe `on` condition is constructed by triples of:\n- Reference to the target element (ID) as array with 2 items\n- Operator: Equals `=`, Smaller `<`, Smaller Equals `<=`, Greater `>` or Greater Equals `>=`\n- Reference to the local element (ID) as array with 1 item OR a constant value (`val`)\n\nThe first and third entry of the triple MAY be reversed but the `=`, `<`, `<=`, `>` or `>=` operator MUST be in the middle.\nThe target element reference MUST have two array items. The first item is the association name and the second item is the target element name.\nThe local element reference MUST have one array item, which is the local element name.\n\nThe first and the third entry of the triple MUST have the same CDS type (`cds.*`), as defined by the CSN specification.\n\nOperator `<`, `<=`, `>` or `>=` MUST be used only for `cds.Integer`, `cds.Int16`, `cds.Integer64`, `cds.UInt8`, `cds.Decimal`, `cds.Double`, `cds.Date`, `cds.Time`, `cds.DateTime`, `cds.Timestamp` type operands.\n\nIn case of composite references / IDs, any number of triples can be combined with the `and` operator in between.\n\nSee also: (../primer.md#on-condition) and [CAP documentation](https://cap.cloud.sap/docs/cds/csn#assoc-on).",
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/StructuredElementReference"
              },
              {
                "$ref": "#/definitions/EqualsOperator"
              },
              {
                "$ref": "#/definitions/SmallerOperator"
              },
              {
                "$ref": "#/definitions/SmallerEqualsOperator"
              },
              {
                "$ref": "#/definitions/GreaterOperator"
              },
              {
                "$ref": "#/definitions/GreaterEqualsOperator"
              },
              {
                "$ref": "#/definitions/AndOperator"
              },
              {
                "$ref": "#/definitions/OnValue"
              }
            ]
          },
          "minItems": 3,
          "examples": [
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              "<=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              ">=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "ref": [
                  "ConnectionID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "val": "1234567"
              }
            ]
          ]
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "target",
        "on"
      ],
      "x-recommended": [
        "cardinality"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "CompositionType"
      ],
      "examples": [
        {
          "type": "cds.Composition",
          "target": "Airport",
          "cardinality": {
            "max": "*"
          },
          "on": [
            {
              "ref": [
                "to_DepartureAirport",
                "AirportID"
              ]
            },
            "=",
            {
              "ref": [
                "DepartureAirport_AirportID"
              ]
            }
          ]
        }
      ]
    },
    "CustomType": {
      "title": "Custom Type",
      "type": "object",
      "description": "An Element can be of a Custom Type (aka Derived Type) instead of a standard [CDS type](#cds-type).\nThis allows several Elements to share / reuse the same Custom Type definition.\nThis MAY also imply shared semantics.\n\nThe Custom Type has a custom `type` value, which is the name of the [Type Definition](#type-definition) describing the shared type.\nThis `type` value MUST NOT start with `cds.`, to avoid conflicts with core CDS data types.\n\nThe Type Definition that the Custom Type points to MUST be described in the same CSN document in the [definitions](#definitions) section with `\"kind\": \"type\"`.\nThe [Element](#elemententry) MUST NOT add properties that are not supported by the Custom Types base CDS type.\n\nCSN Interop Effective adds further constraints to make a simple type lookup possible:\n\n- A Custom Type MUST NOT point to another Custom Type (no recursion).\n- The properties and annotations of the Custom Type MUST be merged into the Element it is used, to fulfill the \"effective\" quality.\n\nThis will allow a consumer to do a simple dictionary lookup to find the [CDS Type](#cds-type) of a Custom Type.\nAll other properties describing the Custom Type can already be found at the Custom Type itself.\n\n> 🚧 TODO: Clarify if Custom Type can also be `cds.Association` or `cds.Composition`.\n> If yes, add `target`, `on` and `cardinality` here.\n",
      "properties": {
        "type": {
          "type": "string",
          "pattern": "^(?!cds\\.).*$",
          "description": "Use of a custom type. MUST not start with `cds.`.",
          "tsType": "CustomTypeValue"
        },
        "key": {
          "type": "boolean",
          "description": "Indicates that this element is used as a primary key.\nMultiple primary keys MAY be used in case of a composite ID.\n\nElements marked as `key` also imply `notNull: true`."
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueCustomDerived"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "maximum": 5000,
          "default": 5000,
          "description": "Describes the maximum number of characters of the value, up to 5000.\nIf not provided, 5000 length is assumed.\nFor longer length strings, use `cds.LargeString` instead."
        },
        "scale": {
          "oneOf": [
            {
              "$ref": "#/definitions/DecimalScaleNumber"
            },
            {
              "$ref": "#/definitions/DecimalScaleType"
            }
          ],
          "description": "Describes the number of digits to the right of the decimal point in a number.\n\nSHOULD be explicitly provided and MUST be provided if own default assumptions diverge from specified default of `floating`.",
          "default": "floating"
        },
        "precision": {
          "type": "number",
          "minimum": 1,
          "description": "Total number of digits in a number.\nThis includes both the digits before and after the decimal point.\n\nSHOULD be explicitly provided and MUST be provided if own default assumptions diverge from specified default of `34`.\n\nThe semantics of the choices follows the [OData v4 Precision](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Precision) specification.",
          "default": 34
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "CustomType"
      ],
      "examples": [
        {
          "type": "CONTROLLING_AREA",
          "key": true
        }
      ]
    },
    "DefaultValueCustomDerived": {
      "title": "Default Value (Custom Type)",
      "type": "object",
      "properties": {
        "val": {
          "type": [
            "string",
            "number",
            "boolean",
            "object",
            "null"
          ],
          "description": "Default Value for a [Custom Type](#custom-type).\n\nThe chosen value type MUST match the [CDS Type](#cds-type) that the custom type chose."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "DefaultValueBoolean": {
      "title": "Default Value (Boolean)",
      "type": "object",
      "properties": {
        "val": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Default Value for Boolean Type."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "DefaultValueString": {
      "title": "Default Value (String)",
      "type": "object",
      "properties": {
        "val": {
          "type": [
            "string",
            "null"
          ],
          "description": "Default Value for String Types."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "DefaultValueInteger": {
      "title": "Default Value integer",
      "type": "object",
      "properties": {
        "val": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Default Value for Integer Type."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "DefaultValueNumber": {
      "title": "Default Value number",
      "type": "object",
      "properties": {
        "val": {
          "type": [
            "number",
            "null"
          ],
          "description": "Default Value for DecimalScaleNumber: Type."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "DefaultValueObject": {
      "title": "Default Value object",
      "type": "object",
      "properties": {
        "val": {
          "type": [
            "object",
            "null"
          ],
          "description": "Default Value for (structured) Object Types."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "EnumDictionaryEntry": {
      "title": "Enum Dictionary Entry",
      "type": "object",
      "description": "Describes a possible member for enums.\nThe `val` optionally specifies a constant val as a literal plus optional annotations.",
      "x-extension-points": [
        "EnumDictionaryEntry"
      ],
      "properties": {
        "val": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ],
          "description": "Value of the enum."
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "additionalProperties": false
    },
    "DecimalScaleNumber": {
      "title": "Decimal Scale (Number)",
      "type": "number",
      "description": "Total number of digits that are present after the decimal point in a number.\nThe scale can hold from zero up to the total numeric precision",
      "minimum": 0
    },
    "DecimalScaleType": {
      "title": "Decimal Scale (Type)",
      "type": "string",
      "description": "The `cds.Decimal` type can also set `scale` to a fixed type.\n\nThe semantics of the choices follows the [OData v4 Scale](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Scale) specification.",
      "oneOf": [
        {
          "const": "floating",
          "description": "The value floating means that the decimal property represents a decimal floating-point number whose number of significant digits is the value of the `precision`.\n\nSee https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Scale"
        }
      ],
      "default": "floating"
    },
    "CardinalityObject": {
      "title": "Cardinality Object",
      "type": "object",
      "description": "The cardinality indicates the number of instances of one entity that can or must be associated with each instance of another entity.\n\nSHOULD provide `min` and `max` values explicitly.",
      "properties": {
        "src": {
          "type": "number",
          "description": "Set to `1` to give a hint to database optimizers, that the relationship is \"one to\".\n\nIf `src` is not set then it is unknown and \"many to\" MAY be assumed."
        },
        "min": {
          "type": "number",
          "description": "Specifies the targets minimum cardinality.",
          "default": 0
        },
        "max": {
          "description": "Specifies the targets maximum cardinality.\n\nMUST be one of:\n- positive Integer (1,2,...)\n- `*` as String",
          "type": [
            "number",
            "string"
          ],
          "default": 1
        }
      },
      "x-recommended": [
        "min",
        "max"
      ],
      "examples": [
        {
          "max": "*"
        },
        {
          "min": 1,
          "max": "*"
        }
      ],
      "additionalProperties": false
    },
    "StructuredElementReference": {
      "title": "Structured Element Reference",
      "type": "object",
      "description": "Describes the target or source of the association.",
      "properties": {
        "ref": {
          "type": "array",
          "description": "Reference to external target with *association name* and *target element name* in `target` entity (array with 2 items)\nReference to local *source element name* (array with 1 item).\n\nMUST NOT:\n- use $ as leading character of an element (e.g. for session variables)",
          "items": {
            "type": "string",
            "pattern": "^(?!\\$).*",
            "x-association-target": [
              "#/definitions/CdsType"
            ]
          },
          "minItems": 1,
          "maxItems": 2
        }
      },
      "required": [
        "ref"
      ],
      "additionalProperties": false
    },
    "EqualsOperator": {
      "title": "Equals Operator",
      "type": "string",
      "description": "The operator `=`",
      "const": "="
    },
    "SmallerOperator": {
      "title": "Smaller Operator",
      "type": "string",
      "description": "The operator `<`",
      "const": "<"
    },
    "SmallerEqualsOperator": {
      "title": "Smaller Equals Operator",
      "type": "string",
      "description": "The operator `<=`",
      "const": "<="
    },
    "GreaterOperator": {
      "title": "Greater Operator",
      "type": "string",
      "description": "The operator `>`",
      "const": ">"
    },
    "GreaterEqualsOperator": {
      "title": "Greater Equals Operator",
      "type": "string",
      "description": "The operator `>=`",
      "const": ">="
    },
    "AndOperator": {
      "title": "AND Operator",
      "type": "string",
      "description": "The operator `and`",
      "const": "and"
    },
    "OnValue": {
      "title": "On Value",
      "type": "object",
      "description": "Value for an on condition",
      "properties": {
        "val": {
          "type": [
            "string",
            "number"
          ],
          "description": "Value for the on condition."
        }
      },
      "required": [
        "val"
      ],
      "additionalProperties": false
    },
    "EnumDictionary": {
      "title": "Enum Dictionary",
      "description": "Dictionary of enum member elements with the name is the enum symbol and the value the literal value.",
      "type": "object",
      "patternProperties": {
        "^.+$": {
          "$ref": "#/definitions/EnumDictionaryEntry"
        }
      },
      "examples": [
        {
          "submitted": {
            "val": 1
          },
          "fulfilled": {
            "val": 2,
            "@EndUserText.label": "Fulfilled"
          }
        },
        {
          "male": {},
          "female": {},
          "non_binary": {
            "val": "non-binary"
          }
        }
      ]
    },
    "ElementReference": {
      "title": "Element Reference",
      "description": "Element reference to an element within the current entity.\n\nIt is RECOMMENDED to use the [ElementReferenceObject](#element-reference-object) notation.\n\nSee [Primer: Literals for Enum and ElementRef values](../primer.md#literals-for-enum-and-elementref-values).",
      "oneOf": [
        {
          "$ref": "#/definitions/ElementReferenceString"
        },
        {
          "$ref": "#/definitions/ElementReferenceObject"
        }
      ]
    },
    "ElementReferenceString": {
      "title": "Element Reference String",
      "type": "string",
      "description": "Element reference to an element within the current entity, using string notation.\n\nThe referenced element MUST exist locally in the same entity.\n\n```js\n\"<definition name>\": {\n  \"<annotation key of type ElementReference>\": \"<element name>\"\n```"
    },
    "ElementReferenceObject": {
      "title": "Element Reference Object",
      "type": "object",
      "description": "Element reference to an element within the current entity, using RECOMMENDED object notation.\n\nThe referenced element MUST exist locally in the same entity.\n\n```js\n\"<definition name>\": {\n  \"<annotation key of type ElementReference>\": {\"=\": \"<element name>\"}\n```",
      "properties": {
        "=": {
          "type": "string",
          "description": "This is the references elements name.",
          "x-association-target": [
            "#/definitions/CdsType"
          ]
        }
      },
      "required": [
        "="
      ],
      "additionalProperties": false
    },
    "TypeDefinition": {
      "title": "Type Definition",
      "type": "object",
      "description": "In CSN it is possible to define [Custom Types](#custom-type).\nThey can be referred to in [Element](#elemententry) `type`, making them \"reusable\" / \"shared\" types.\n\nIn CSN Interop Effective, the \"effective\" quality brings additional requirements:\n\n- The derived types MUST always have a `cds.*` type and MUST NOT point to other derived types.\n  This ensures that consumers do not have to support recursive type lookups.\n\n- Attributes and annotations MUST be also copied and merged with those defined in the [element](#elemententry) using this derived type.\n  This ensures that consumers only have to lookup the CDS type and don't have to merge attributes and annotations.",
      "x-extension-points": [
        "Type"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types.\nIn this case `Kind = \"type\"` MUST be provided.",
          "tsType": "TypeKind"
        },
        "type": {
          "type": "string",
          "description": "The CDS data type of the derived type.\n\nCustom types in CSN Interop Effective MUST always point to a `cds.*` type.",
          "enum": [
            "cds.Boolean",
            "cds.String",
            "cds.LargeString",
            "cds.Integer",
            "cds.Int16",
            "cds.Integer64",
            "cds.UInt8",
            "cds.Decimal",
            "cds.Double",
            "cds.Date",
            "cds.Time",
            "cds.DateTime",
            "cds.Timestamp",
            "cds.UUID",
            "cds.Binary",
            "cds.LargeBinary",
            "cds.Association",
            "cds.Composition"
          ]
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Boolean"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/BooleanTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.String"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/StringTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.LargeString"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/LargeStringTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Integer"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/IntegerTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Int16"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/Int16TypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Integer64"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/Integer64TypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.UInt8"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/UInt8TypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Decimal"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DecimalTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Double"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DoubleTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Date"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DateTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Time"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/TimeTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.DateTime"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/DateTimeTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Timestamp"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/TimestampTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.UUID"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/UUIDTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Binary"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/BinaryTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.LargeBinary"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/LargeBinaryTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Association"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/AssociationTypeDefinition"
          }
        },
        {
          "if": {
            "properties": {
              "type": {
                "type": "string",
                "const": "cds.Composition"
              }
            },
            "required": [
              "kind",
              "type"
            ]
          },
          "then": {
            "$ref": "#/definitions/CompositionTypeDefinition"
          }
        }
      ],
      "required": [
        "kind",
        "type"
      ]
    },
    "BooleanTypeDefinition": {
      "title": "Boolean Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Boolean`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Boolean",
          "description": "The modeling artefact is a `cds.Boolean` type.",
          "tsType": "BooleanCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueBoolean"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "BooleanType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.Boolean",
          "default": {
            "val": true
          }
        }
      ]
    },
    "StringTypeDefinition": {
      "title": "String Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.String`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.String",
          "description": "The modeling artefact is a `cds.String` type.",
          "tsType": "StringCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "maximum": 5000,
          "default": 5000,
          "description": "Describes the maximum number of characters of the value, up to 5000.\nIf not provided, 5000 length is assumed.\nFor longer length strings, use `cds.LargeString` instead."
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        },
        "@Semantics.mimeType": {
          "$ref": "#/definitions/@Semantics.mimeType"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "StringType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.String",
          "length": 3,
          "default": {
            "val": "foo"
          }
        }
      ]
    },
    "LargeStringTypeDefinition": {
      "title": "LargeString Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.LargeString`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.LargeString",
          "description": "The modeling artefact is a `cds.LargeString` type.",
          "tsType": "LargeStringCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "description": "Describes the maximum number of characters of the value.\nIf not provided, unlimited length is assumed."
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        },
        "@Semantics.largeObject.acceptableMimeTypes": {
          "$ref": "#/definitions/@Semantics.largeObject.acceptableMimeTypes"
        },
        "@Semantics.largeObject.mimeType": {
          "$ref": "#/definitions/@Semantics.largeObject.mimeType"
        },
        "@Semantics.largeObject.fileName": {
          "$ref": "#/definitions/@Semantics.largeObject.fileName"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "LargeStringType"
      ]
    },
    "IntegerTypeDefinition": {
      "title": "Integer Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Integer`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Integer",
          "description": "The modeling artefact is a `cds.Integer` type.",
          "tsType": "IntegerCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "IntegerType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.Integer",
          "default": {
            "val": 123
          }
        }
      ]
    },
    "Int16TypeDefinition": {
      "title": "Int16 Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Int16`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Int16",
          "description": "The modeling artefact is a `cds.Int16` type.",
          "tsType": "Int16CdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "Int16Type"
      ]
    },
    "Integer64TypeDefinition": {
      "title": "Integer64 Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Integer64`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Integer64",
          "description": "The modeling artefact is a `cds.Integer64` type.",
          "tsType": "Integer64CdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "Integer64Type"
      ]
    },
    "UInt8TypeDefinition": {
      "title": "UInt8 Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.UInt8`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.UInt8",
          "description": "The modeling artefact is a `cds.UInt8` type.",
          "tsType": "UInt8CdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueInteger"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "UInt8Type"
      ]
    },
    "DecimalTypeDefinition": {
      "title": "Decimal Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Decimal`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Decimal",
          "description": "The modeling artefact is a `cds.Decimal` type.",
          "tsType": "DecimalCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueNumber"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "precision": {
          "type": "number",
          "minimum": 1,
          "description": "Total number of digits in a number.\nThis includes both the digits before and after the decimal point.\n\nSHOULD be explicitly provided and MUST be provided if own default assumptions diverge from specified default of `34`.\n\nThe semantics of the choices follows the [OData v4 Precision](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Precision) specification.",
          "default": 34
        },
        "scale": {
          "oneOf": [
            {
              "$ref": "#/definitions/DecimalScaleNumber"
            },
            {
              "$ref": "#/definitions/DecimalScaleType"
            }
          ],
          "description": "Describes the number of digits to the right of the decimal point in a number.\n\nSHOULD be explicitly provided and MUST be provided if own default assumptions diverge from specified default of `floating`.",
          "default": "floating"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DecimalType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.Decimal",
          "precision": 16,
          "scale": 3,
          "default": {
            "val": 12.3
          }
        }
      ]
    },
    "DoubleTypeDefinition": {
      "title": "Double Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Double`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Double",
          "description": "The modeling artefact is a `cds.Double` type.",
          "tsType": "DoubleCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueNumber"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.valueRange": {
          "$ref": "#/definitions/@Semantics.valueRange"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "type",
        "kind"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DoubleType"
      ]
    },
    "DateTypeDefinition": {
      "title": "Date Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Date`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Date",
          "description": "The modeling artefact is a `cds.Date` type.",
          "tsType": "DateCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DateType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.Date"
        }
      ]
    },
    "TimeTypeDefinition": {
      "title": "Time Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Time`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Time",
          "description": "The modeling artefact is a `cds.Time` type.",
          "tsType": "TimeCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "TimeType"
      ]
    },
    "DateTimeTypeDefinition": {
      "title": "DateTime Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.DateTime`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.DateTime",
          "description": "The modeling artefact is a `cds.DateTime` type.",
          "tsType": "DateTimeCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "DateTimeType"
      ]
    },
    "TimestampTypeDefinition": {
      "title": "Timestamp Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Timestamp`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Timestamp",
          "description": "The modeling artefact is a `cds.Timestamp` type.",
          "tsType": "TimestampCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "enum": {
          "$ref": "#/definitions/EnumDictionary"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "TimestampType"
      ]
    },
    "UUIDTypeDefinition": {
      "title": "UUID Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.UUID`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.UUID",
          "description": "The modeling artefact is a `cds.UUID` type.",
          "tsType": "UUIDCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "UUIDType"
      ]
    },
    "BinaryTypeDefinition": {
      "title": "Binary Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Binary`.",
      "x-introduced-in-version": "1.1.0",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Binary",
          "description": "The modeling artefact is a `cds.Binary` type.",
          "tsType": "BinaryCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "maximum": 5000,
          "default": 5000,
          "description": "Describes the maximum number of characters of the value, up to 5000.\nIf not provided, 5000 length is assumed.\nFor longer length strings, use `cds.LargeString` instead."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "BinaryType"
      ]
    },
    "LargeBinaryTypeDefinition": {
      "title": "LargeBinary Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.LargeBinary`.",
      "x-introduced-in-version": "1.1.0",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.LargeBinary",
          "description": "The modeling artefact is a `cds.LargeBinary` type.",
          "tsType": "LargeBinaryCdsType"
        },
        "notNull": {
          "type": "boolean",
          "description": "Indicates that this element does not accept NULL values, which means that you cannot insert or update a record without adding a value to this field.\n\nElements marked as `key` (if applicable to the CDS type) also imply `notNull: true`."
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "length": {
          "type": "number",
          "minimum": 1,
          "description": "Describes the maximum number of bytes of the value.\nIf not provided, unlimited length is assumed."
        },
        "default": {
          "$ref": "#/definitions/DefaultValueString"
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        },
        "@Semantics.largeObject.acceptableMimeTypes": {
          "$ref": "#/definitions/@Semantics.largeObject.acceptableMimeTypes"
        },
        "@Semantics.largeObject.mimeType": {
          "$ref": "#/definitions/@Semantics.largeObject.mimeType"
        },
        "@Semantics.largeObject.fileName": {
          "$ref": "#/definitions/@Semantics.largeObject.fileName"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "LargeBinaryType"
      ]
    },
    "AssociationTypeDefinition": {
      "title": "Association Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Association`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Association",
          "description": "The modeling artefact is a `cds.Association` type.",
          "tsType": "AssociationCdsType"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "target": {
          "type": "string",
          "description": "The (fully qualified) target entity name.",
          "x-association-target": [
            "#/definitions/EntityDefinition"
          ]
        },
        "cardinality": {
          "$ref": "#/definitions/CardinalityObject"
        },
        "on": {
          "type": "array",
          "description": "The property `on` holds a sequence of operators and operands to describe the join condition, similar to an SQL expression.\n\nThe `on` condition is constructed by triples of:\n- Reference to the target element (ID) as array with 2 items\n- Operator: Equals `=`, Smaller `<`, Smaller Equals `<=`, Greater `>` or Greater Equals `>=`\n- Reference to the local element (ID) as array with 1 item OR a constant value (`val`)\n\nThe first and third entry of the triple MAY be reversed but the `=`, `<`, `<=`, `>` or `>=` operator MUST be in the middle.\nThe target element reference MUST have two array items. The first item is the association name and the second item is the target element name.\nThe local element reference MUST have one array item, which is the local element name.\n\nThe first and the third entry of the triple MUST have the same CDS type (`cds.*`), as defined by the CSN specification.\n\nOperator `<`, `<=`, `>` or `>=` MUST be used only for `cds.Integer`, `cds.Int16`, `cds.Integer64`, `cds.UInt8`, `cds.Decimal`, `cds.Double`, `cds.Date`, `cds.Time`, `cds.DateTime`, `cds.Timestamp` type operands.\n\nIn case of composite references / IDs, any number of triples can be combined with the `and` operator in between.\n\nSee also: (../primer.md#on-condition) and [CAP documentation](https://cap.cloud.sap/docs/cds/csn#assoc-on).",
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/StructuredElementReference"
              },
              {
                "$ref": "#/definitions/EqualsOperator"
              },
              {
                "$ref": "#/definitions/SmallerOperator"
              },
              {
                "$ref": "#/definitions/SmallerEqualsOperator"
              },
              {
                "$ref": "#/definitions/GreaterOperator"
              },
              {
                "$ref": "#/definitions/GreaterEqualsOperator"
              },
              {
                "$ref": "#/definitions/AndOperator"
              },
              {
                "$ref": "#/definitions/OnValue"
              }
            ]
          },
          "minItems": 3,
          "examples": [
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              "<=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              ">=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "ref": [
                  "ConnectionID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "val": "1234567"
              }
            ]
          ]
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type",
        "target",
        "cardinality",
        "on"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "AssociationType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.Association",
          "target": "Airport",
          "cardinality": {
            "max": "*"
          },
          "on": [
            {
              "ref": [
                "to_DepartureAirport",
                "AirportID"
              ]
            },
            "=",
            {
              "ref": [
                "DepartureAirport_AirportID"
              ]
            }
          ]
        }
      ]
    },
    "CompositionTypeDefinition": {
      "title": "Composition Type Definition",
      "type": "object",
      "description": "A type definition of type `cds.Composition`.",
      "properties": {
        "kind": {
          "type": "string",
          "const": "type",
          "description": "The kind property is used when defining derived types. In this case Kind = \"type\"."
        },
        "type": {
          "type": "string",
          "const": "cds.Composition",
          "description": "The modeling artefact is a `cds.Composition` type.",
          "tsType": "CompositionCdsType"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "target": {
          "type": "string",
          "description": "The (fully qualified) target entity name.",
          "x-association-target": [
            "#/definitions/EntityDefinition"
          ]
        },
        "cardinality": {
          "$ref": "#/definitions/CardinalityObject"
        },
        "on": {
          "type": "array",
          "description": "The property `on` holds a sequence of operators and operands to describe the join condition, similar to an SQL expression.\n\nThe `on` condition is constructed by triples of:\n- Reference to the target element (ID) as array with 2 items\n- Operator: Equals `=`, Smaller `<`, Smaller Equals `<=`, Greater `>` or Greater Equals `>=`\n- Reference to the local element (ID) as array with 1 item OR a constant value (`val`)\n\nThe first and third entry of the triple MAY be reversed but the `=`, `<`, `<=`, `>` or `>=` operator MUST be in the middle.\nThe target element reference MUST have two array items. The first item is the association name and the second item is the target element name.\nThe local element reference MUST have one array item, which is the local element name.\n\nThe first and the third entry of the triple MUST have the same CDS type (`cds.*`), as defined by the CSN specification.\n\nOperator `<`, `<=`, `>` or `>=` MUST be used only for `cds.Integer`, `cds.Int16`, `cds.Integer64`, `cds.UInt8`, `cds.Decimal`, `cds.Double`, `cds.Date`, `cds.Time`, `cds.DateTime`, `cds.Timestamp` type operands.\n\nIn case of composite references / IDs, any number of triples can be combined with the `and` operator in between.\n\nSee also: (../primer.md#on-condition) and [CAP documentation](https://cap.cloud.sap/docs/cds/csn#assoc-on).",
          "items": {
            "oneOf": [
              {
                "$ref": "#/definitions/StructuredElementReference"
              },
              {
                "$ref": "#/definitions/EqualsOperator"
              },
              {
                "$ref": "#/definitions/SmallerOperator"
              },
              {
                "$ref": "#/definitions/SmallerEqualsOperator"
              },
              {
                "$ref": "#/definitions/GreaterOperator"
              },
              {
                "$ref": "#/definitions/GreaterEqualsOperator"
              },
              {
                "$ref": "#/definitions/AndOperator"
              },
              {
                "$ref": "#/definitions/OnValue"
              }
            ]
          },
          "minItems": 3,
          "examples": [
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              "<=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "FlightDate"
                ]
              },
              ">=",
              {
                "ref": [
                  "FlightDate"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "ref": [
                  "ConnectionID"
                ]
              }
            ],
            [
              {
                "ref": [
                  "to_Connection",
                  "AirlineID"
                ]
              },
              "=",
              {
                "ref": [
                  "AirlineID"
                ]
              },
              "and",
              {
                "ref": [
                  "to_Connection",
                  "ConnectionID"
                ]
              },
              "=",
              {
                "val": "1234567"
              }
            ]
          ]
        },
        "@Aggregation.default": {
          "$ref": "#/definitions/@Aggregation.default"
        },
        "@AnalyticsDetails.measureType": {
          "$ref": "#/definitions/@AnalyticsDetails.measureType"
        },
        "@Consumption.valueHelpDefinition": {
          "$ref": "#/definitions/@Consumption.valueHelpDefinition"
        },
        "@DataIntegration.dataUnavailable": {
          "$ref": "#/definitions/@DataIntegration.dataUnavailable"
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.heading": {
          "$ref": "#/definitions/@EndUserText.heading"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@EntityRelationship.propertyType": {
          "$ref": "#/definitions/@EntityRelationship.propertyType"
        },
        "@EntityRelationship.reference": {
          "$ref": "#/definitions/@EntityRelationship.reference"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.foreignKey.association": {
          "$ref": "#/definitions/@ObjectModel.foreignKey.association"
        },
        "@ObjectModel.text.element": {
          "$ref": "#/definitions/@ObjectModel.text.element"
        },
        "@ObjectModel.text.association": {
          "$ref": "#/definitions/@ObjectModel.text.association"
        },
        "@ODM.oidReference.entityName": {
          "$ref": "#/definitions/@ODM.oidReference.entityName"
        },
        "@PersonalData.fieldSemantics": {
          "$ref": "#/definitions/@PersonalData.fieldSemantics"
        },
        "@PersonalData.isPotentiallyPersonal": {
          "$ref": "#/definitions/@PersonalData.isPotentiallyPersonal"
        },
        "@PersonalData.isPotentiallySensitive": {
          "$ref": "#/definitions/@PersonalData.isPotentiallySensitive"
        },
        "@Semantics.currencyCode": {
          "$ref": "#/definitions/@Semantics.currencyCode"
        },
        "@Semantics.amount.currencyCode": {
          "$ref": "#/definitions/@Semantics.amount.currencyCode"
        },
        "@Semantics.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.unitOfMeasure"
        },
        "@Semantics.quantity.unitOfMeasure": {
          "$ref": "#/definitions/@Semantics.quantity.unitOfMeasure"
        },
        "@Semantics.calendar.dayOfMonth": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfMonth"
        },
        "@Semantics.calendar.dayOfYear": {
          "$ref": "#/definitions/@Semantics.calendar.dayOfYear"
        },
        "@Semantics.calendar.week": {
          "$ref": "#/definitions/@Semantics.calendar.week"
        },
        "@Semantics.calendar.month": {
          "$ref": "#/definitions/@Semantics.calendar.month"
        },
        "@Semantics.calendar.quarter": {
          "$ref": "#/definitions/@Semantics.calendar.quarter"
        },
        "@Semantics.calendar.halfyear": {
          "$ref": "#/definitions/@Semantics.calendar.halfyear"
        },
        "@Semantics.calendar.year": {
          "$ref": "#/definitions/@Semantics.calendar.year"
        },
        "@Semantics.calendar.yearWeek": {
          "$ref": "#/definitions/@Semantics.calendar.yearWeek"
        },
        "@Semantics.calendar.yearMonth": {
          "$ref": "#/definitions/@Semantics.calendar.yearMonth"
        },
        "@Semantics.calendar.yearQuarter": {
          "$ref": "#/definitions/@Semantics.calendar.yearQuarter"
        },
        "@Semantics.calendar.yearHalfyear": {
          "$ref": "#/definitions/@Semantics.calendar.yearHalfyear"
        },
        "@Semantics.fiscal.yearVariant": {
          "$ref": "#/definitions/@Semantics.fiscal.yearVariant"
        },
        "@Semantics.fiscal.period": {
          "$ref": "#/definitions/@Semantics.fiscal.period"
        },
        "@Semantics.fiscal.year": {
          "$ref": "#/definitions/@Semantics.fiscal.year"
        },
        "@Semantics.fiscal.yearPeriod": {
          "$ref": "#/definitions/@Semantics.fiscal.yearPeriod"
        },
        "@Semantics.fiscal.quarter": {
          "$ref": "#/definitions/@Semantics.fiscal.quarter"
        },
        "@Semantics.fiscal.yearQuarter": {
          "$ref": "#/definitions/@Semantics.fiscal.yearQuarter"
        },
        "@Semantics.fiscal.week": {
          "$ref": "#/definitions/@Semantics.fiscal.week"
        },
        "@Semantics.fiscal.yearWeek": {
          "$ref": "#/definitions/@Semantics.fiscal.yearWeek"
        },
        "@Semantics.fiscal.dayOfYear": {
          "$ref": "#/definitions/@Semantics.fiscal.dayOfYear"
        },
        "@Semantics.language": {
          "$ref": "#/definitions/@Semantics.language"
        },
        "@Semantics.time": {
          "$ref": "#/definitions/@Semantics.time"
        },
        "@Semantics.text": {
          "$ref": "#/definitions/@Semantics.text"
        },
        "@Semantics.uuid": {
          "$ref": "#/definitions/@Semantics.uuid"
        },
        "@Semantics.businessDate.from": {
          "$ref": "#/definitions/@Semantics.businessDate.from"
        },
        "@Semantics.businessDate.to": {
          "$ref": "#/definitions/@Semantics.businessDate.to"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind",
        "type",
        "target",
        "cardinality",
        "on"
      ],
      "additionalProperties": false,
      "x-extension-points": [
        "Type",
        "CompositionType"
      ],
      "examples": [
        {
          "kind": "type",
          "type": "cds.Composition",
          "target": "Airport",
          "cardinality": {
            "max": "*"
          },
          "on": [
            {
              "ref": [
                "to_DepartureAirport",
                "AirportID"
              ]
            },
            "=",
            {
              "ref": [
                "DepartureAirport_AirportID"
              ]
            }
          ]
        }
      ]
    },
    "ServiceDefinition": {
      "title": "Service Definition",
      "type": "object",
      "description": "A CDS Service indicates that [Entities](#entity-definition) are exposed to outside consumers via an API.\n\nTo assign Entities or Custom Types to a Service, their name MUST be prefixed with the service name, separated by a `.`.\nPlease be aware that this will also change the `target` values of `cds.Association` and `cds.Composition`.\nFor an example, see [airline-service.json](./examples/airline.md).\n\nA consumer MAY decide to shorten the names by only considering the Entities assigned to a particular Service and then removing the Service prefixes again.\n\nTo indicate which assigned Entities are root in a composition hierarchy, use the [`@ObjectModel.compositionRoot`](./extensions/object-model#objectmodelcompositionroot) annotation.\n\nSee [Primer: Service Definitions](../primer.md#service-definitions).",
      "x-extension-points": [
        "Service"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "service",
          "description": "The modeling artefact is a service.",
          "tsType": "ServiceKind"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        },
        "@ObjectModel.representativeKey": {
          "$ref": "#/definitions/@ObjectModel.representativeKey"
        },
        "@ObjectModel.custom": {
          "$ref": "#/definitions/@ObjectModel.custom"
        },
        "@ObjectModel.modelingPattern": {
          "$ref": "#/definitions/@ObjectModel.modelingPattern"
        },
        "@ObjectModel.supportedCapabilities": {
          "$ref": "#/definitions/@ObjectModel.supportedCapabilities"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind"
      ],
      "additionalProperties": false
    },
    "ContextDefinition": {
      "title": "Context Definition",
      "type": "object",
      "description": "A context corresponds to a CAP CSN Namespace.\nIt is used to create a bounded context that bundles elements of different kinds together.\n\nTo assign Services, Entities or Custom Types to a context, their name MUST be prefixed with the context name, separated by a `.`.\n\nThe context can also be useful to avoid local or global name collisions.\n\nSee [Primer: Context](../primer.md#context-definitions).",
      "x-extension-points": [
        "Context"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "context",
          "description": "The modeling artefact is a context.",
          "tsType": "ContextKind"
        },
        "doc": {
          "type": "string",
          "description": "Human readable documentation, usually for developer documentation.\n\nSHOULD be provided and interpreted as [CommonMark](https://spec.commonmark.org/) (Markdown).\n\nIf a human readable title is needed, use the [@EndUserText.label](./extensions/end-user-text#endusertextlabel) annotation."
        },
        "@EndUserText.label": {
          "$ref": "#/definitions/@EndUserText.label"
        },
        "@EndUserText.quickInfo": {
          "$ref": "#/definitions/@EndUserText.quickInfo"
        }
      },
      "patternProperties": {
        "^(@|__).+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "array",
            "object"
          ],
          "description": "Annotations or private properties MAY be added.\n\n**Annotations** MUST start with `@`.\n\nIn CSN Interop Effective the annotations MUST follow the \"flattened\" form:\nEvery record / object in an annotation will be flattened into a `.` (dot).\nException: Once there is an array, the flattening is stopped and the values inside the array are preserved as they are (\"structured\").\n\nCorrect annotations examples:\n- `\"@Common.bar\": \"foo\"`\n- `\"@Common.foo.bar\": true`\n- `\"@Common.array\": [{ \"foo\": true }]`\n\nOr\n\n**Private properties**, starting with `__`.\nMAY be ignored by the consumers, as they have no cross-aligned, standardized semantics.",
          "tsType": "unknown // replaceKeyType_{PrivatePropertyKey|AnnotationPropertyKey}"
        }
      },
      "required": [
        "kind"
      ],
      "additionalProperties": false
    },
    "i18n": {
      "title": "i18n",
      "type": "object",
      "description": "i18n contains translated texts for one or more languages.\nThey are usually used in annotations like [`@EnduserText`](./extensions/end-user-text).\n\nKey is the language key, value is a dictionary of language text translations.\n\nThe language key MUST follow the standard of [RFC 1766](https://datatracker.ietf.org/doc/rfc1766/) (or IETF's [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt)).\n\nSee [Primer: Language-dependent annotation values](../primer.md#language-dependent-annotation-values).",
      "patternProperties": {
        "^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8}){0,2}$": {
          "$ref": "#/definitions/LanguageText"
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "de": {
            "I_COSTCENTER@ENDUSERTEXT.LABEL": "Kostenstelle",
            "I_COSTCENTER.CONTROLLINGAREA@ENDUSERTEXT.LABEL": "Kostenrechnungskreis"
          }
        }
      ]
    },
    "LanguageText": {
      "title": "Language texts",
      "type": "object",
      "description": "Language Text contains translations for one specific languages.\n\nKey is the i18n key, value is the translation of the term.\n\nAn i18n pointer is a string that starts with `{i18n>` and ends with `}`. In between is the key.\n\nExample: To link to the i18n key `I_COSTCENTER@ENDUSERTEXT.LABEL`, the i18n pointer is `{i18n>I_COSTCENTER@ENDUSERTEXT.LABEL}`.\n\nThe i18n pointers within the document MUST be fully self contained:\n- An i18n resolved pointer MUST be used (referred to) within this CSN document at least once.\n- All i18n pointers in this CSN document MUST have a corresponding i18n dictionary entry.",
      "patternProperties": {
        "^.+$": {
          "type": "string",
          "description": "Translation of the term."
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "I_COSTCENTER@ENDUSERTEXT.LABEL": "Kostenstelle",
          "I_COSTCENTER.CONTROLLINGAREA@ENDUSERTEXT.LABEL": "Kostenrechnungskreis"
        }
      ]
    },
    "@Aggregation.default": {
      "description": "The element shall per default be aggregated using the annotated SQL aggregate function.\n\nThe chosen value defines which aggregation semantics should be applied.\nThe aggregation types SUM, MAX, MIN, NOP are only allowed for elements with numeric type\n\n> ℹ️ Note: There is an semantically equivalent annotation `@DefaultAggregation`, which is now obsolete.\n> As consumers are not expected to interpret `@DefaultAggregation`, providers shall consistently adopt `@Aggregation.default` for interoperability.",
      "type": "object",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "oneOf": [
            {
              "const": "NONE",
              "description": "Indicates that the element is not a measure.\nUsually these elements are used in filters and GROUP BY-statements. Should not be used explicit.\nIt is the default for all elements which can be mapped to a dimension."
            },
            {
              "const": "SUM",
              "description": "Correspond to the standard SQL aggregation type."
            },
            {
              "const": "MIN",
              "description": "Correspond to the standard SQL aggregation type."
            },
            {
              "const": "MAX",
              "description": "Correspond to the standard SQL aggregation type."
            },
            {
              "const": "AVG",
              "description": "Correspond to the standard SQL aggregation type."
            },
            {
              "const": "COUNT_DISTINCT",
              "description": "Counts the number of distinct values of the element specified with `@Aggregation.referenceElement`.\n\n> TODO: `@Aggregation.referenceElement` is not yet documented here."
            },
            {
              "const": "NOP",
              "description": "Returns a value, if it is unique; otherwise it returns a special error value. It is the default in views with Analytics.dataCategory CUBE, FACT, and DIMENSION, if the data type of the element is numeric."
            },
            {
              "const": "FORMULA",
              "description": "The element is a formula which has to be calculated after the operands have been determined by aggregation or calculation. It should never be aggregated. If the element is not a formula, then this value must not be used. It is only supported in analytical queries. Example: Margin : = Revenue / Cost. If in a report Margin should be shown per OrgUnit, then first the aggregates of Revenue and Cost have to be de-termined per OrgUnit and then the Margin has to be calculated per OrgUn-it. The Margin for the company is not the aggregate of the Margin per Or-gUnit but has to be calculated separately by Revenue for all OrgUnits divided by the Costs for all OrgUnits."
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "x-extension-targets": [
        "Type"
      ],
      "examples": [
        {
          "#": "SUM"
        }
      ]
    },
    "@AnalyticsDetails.measureType": {
      "description": "Specifies in which way a measure should treated.",
      "type": "object",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "oneOf": [
            {
              "const": "BASE",
              "description": "Measure from the provider."
            },
            {
              "const": "RESTRICTION",
              "description": "Restricted measure."
            },
            {
              "const": "CALCULATION",
              "description": "Calculated measure (formula)."
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "x-extension-targets": [
        "Type"
      ],
      "examples": [
        {
          "#": "BASE"
        }
      ]
    },
    "@Consumption.valueHelpDefinition": {
      "type": "array",
      "description": "The property defines how value helps for this element shall be constructed.\n\nIt allows to associate a (set of) View/Entity that provides the \"Value Help\" for the annotated field or parameter.\nThis is achieved by either referencing the target view/entity of a modelled association or by directly establishing a relationship to view/entity that shall act as a value help provider.",
      "items": {
        "$ref": "#/definitions/@Consumption.ConsumptionValueHelpDefinition"
      },
      "x-extension-targets": [
        "Entity",
        "Type"
      ]
    },
    "@Consumption.ConsumptionValueHelpDefinition": {
      "title": "Consumption Value Help Definition",
      "type": "object",
      "properties": {
        "entity": {
          "$ref": "#/definitions/@Consumption.ConsumptionValueHelpDefinition.Entity"
        },
        "additionalBinding": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/@Consumption.ConsumptionValueHelpDefinition.AdditionalBinding"
          },
          "description": "Additional bindings for filtering the value help result list."
        },
        "association": {
          "$ref": "#/definitions/ElementReference"
        },
        "distinctValues": {
          "type": "boolean",
          "description": "Specifies whether the value help result list shall only contain distinct values for the annotated field or parameter.\nIf set to true all mappings will be used for filtering, but only the value for the field/parameter which the value help was requested for will be returned by the value help.",
          "default": true
        }
      },
      "additionalProperties": false,
      "examples": [
        {
          "entity": {
            "name": "I_ControllingAreaStdVH",
            "element": "ControllingArea"
          }
        },
        {
          "entity": {
            "name": "I_CostCenterStdVH",
            "element": "CostCenter"
          },
          "additionalBinding": [
            {
              "localElement": "ControllingArea",
              "element": "ControllingArea"
            }
          ]
        },
        {
          "association": {
            "=": "to_Airline"
          }
        }
      ]
    },
    "@Consumption.ConsumptionValueHelpDefinition.Entity": {
      "title": "Consumption Value Help Definition",
      "description": "Value help defining view or entity.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the value help providing view or entity"
        },
        "element": {
          "type": "string",
          "description": "Name of the field of the value help view or entity, which the annotated local field or parameter is bound to.\n\nMutually exclusive to the usage of `valueHelpDefinition.association`."
        }
      },
      "additionalProperties": false
    },
    "@Consumption.ConsumptionValueHelpDefinition.AdditionalBinding": {
      "title": "Additional Binding",
      "description": "Allows to define additional bindings (besides the ones defined by `valueHelpDefinition.association` or `valueHelpDefinition.entity`) for filtering the value help result list and/or returning values from the selected value help record.",
      "type": "object",
      "properties": {
        "localElement": {
          "type": "string",
          "description": "Field of the current view/entity; mutually exclusive to the usage of `localParameter`."
        },
        "element": {
          "type": "string",
          "description": "Name of the field of the value help view or entity, which the annotated local field or parameter is bound to."
        },
        "usage": {
          "$ref": "#/definitions/@Consumption.ConsumptionValueHelpDefinition.AdditionalBinding.Usage"
        }
      },
      "additionalProperties": false
    },
    "@Consumption.ConsumptionValueHelpDefinition.AdditionalBinding.Usage": {
      "type": "object",
      "description": "The binding may either specify an additional filter-criterion on the value help list (`#FILTER`), or an additional result mapping for the selected value help record (`#RESULT`) or a combination thereof (`#FILTER_AND_RESULT`).\nIf not specified explicitly the usage is `#FILTER_AND_RESULT`.\nIf distinctValues is set to true, additional bindings must specify the usage as `#FILTER`.",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "enum": [
            "FILTER",
            "RESULT",
            "FILTER_AND_RESULT"
          ],
          "default": "FILTER_AND_RESULT"
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "examples": [
        {
          "#": "FILTER_AND_RESULT"
        }
      ]
    },
    "@DataIntegration.dataUnavailable": {
      "type": "boolean",
      "description": "Specifies that the data of the element or entity is unavailable although it is part of the output structure.",
      "x-extension-targets": [
        "Type",
        "Entity"
      ]
    },
    "@EndUserText.label": {
      "type": "string",
      "description": "The property contains a human-readable text to be displayed on UIs (besides or instead of the technical name).\n\nCorresponds to CAP CDS `@title` annotation.",
      "examples": [
        "Sales Order Header",
        "{i18n>AD01PROFNR@ENDUSERTEXT.LABEL}"
      ],
      "x-extension-targets": [
        "Entity",
        "Type",
        "Service",
        "Context",
        "EnumDictionaryEntry"
      ]
    },
    "@EndUserText.heading": {
      "type": "string",
      "description": "Defines a human-readable text that is displayed as column headers.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@EndUserText.quickInfo": {
      "type": "string",
      "description": "Defines a human-readable text that provides additional information compared to the label text.\nThe quickInfo is used for accessibility hints or the \"Mouse over\" function.\n\nCorresponds to CAP CDS `@description` annotation.",
      "examples": [
        "Sales Order Header that contains data relevant for all items"
      ],
      "x-extension-targets": [
        "Entity",
        "Type",
        "Service",
        "Context",
        "EnumDictionaryEntry"
      ]
    },
    "@EntityRelationship.entityType": {
      "type": "string",
      "description": "Defines which [Entity Type](#entity-type) the current data object represents.\n\nThere could be several data objects that are assigned to the same Entity Type.\nOne data object can only have one Entity Type assigned, which corresponds to the applications own Entity Type definition.",
      "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+)(:v[1-9][0-9]*)?$",
      "examples": [
        "sap.vdm.sont:BillOfMaterial"
      ],
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@EntityRelationship.propertyType": {
      "type": "string",
      "description": "Defines the logical [Property Type](#property-type) of a property.\nThe reason is to have an ID to relate to the property, especially to state that it can be used as an ID or is part of a composite ID.",
      "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+)(:v[1-9][0-9]*)?$",
      "examples": [
        "sap.vdm.gfn:BillOfMaterialUUID"
      ],
      "x-extension-targets": [
        "Type"
      ]
    },
    "@EntityRelationship.entityIds": {
      "type": "array",
      "description": "Defines a list of IDs, which are available to look up the Entity Type or create a reference to it.\nAn Entity Type can have multiple IDs:\n* There can be **alternative IDs** that can also be used to create a reference to the Entity Type\n* Some ID properties form a **composite ID** together and need to be combined to function as a unique ID for references\n* This is indicated by a [`propertyTypes`](#property-type) array with more than one Property Type ID entry.",
      "items": {
        "$ref": "#/definitions/@EntityRelationship.EntityId"
      },
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@EntityRelationship.reference": {
      "type": "array",
      "description": "Defines references to other Entity Types based on a single ID.",
      "items": {
        "$ref": "#/definitions/@EntityRelationship.ReferenceTarget"
      },
      "x-extension-targets": [
        "Type"
      ]
    },
    "@EntityRelationship.compositeReferences": {
      "type": "array",
      "description": "Defines one or many references to other Entity Types based on a composite IDs.",
      "items": {
        "$ref": "#/definitions/@EntityRelationship.CompositeReference"
      },
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@EntityRelationship.temporalIds": {
      "type": "array",
      "description": "Defines a list of temporal IDs",
      "items": {
        "$ref": "#/definitions/@EntityRelationship.TemporalId"
      },
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@EntityRelationship.temporalReferences": {
      "type": "array",
      "description": "Defines a list of temporal references",
      "items": {
        "$ref": "#/definitions/@EntityRelationship.TemporalReference"
      },
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@EntityRelationship.referencesWithConstantIds": {
      "type": "array",
      "description": "Defines one or many references to other Entity Types based on a composite IDs where some properties of the references are constant values.",
      "items": {
        "$ref": "#/definitions/@EntityRelationship.ReferenceTargetWithConstantId"
      },
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@EntityRelationship.ReferenceTarget": {
      "title": "Reference Target",
      "type": "object",
      "description": "Defines a reference to another Entity Type based on a single ID.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional technical name (locally unique ID) of the reference.\n\nIf provided, the name MUST be unique across all reference names defined via\n`@EntityRelationship.reference`, `@EntityRelationship.compositeReferences`,\n`@EntityRelationship.temporalReferences`, and `@EntityRelationship.referencesWithConstantIds`\non the same CSN entity, and MUST NOT match the name of any element\n(property, `cds.Association`, or `cds.Composition`) of that entity."
        },
        "referencedEntityType": {
          "$ref": "#/definitions/@EntityRelationship.EntityTypeID"
        },
        "referencedPropertyType": {
          "$ref": "#/definitions/@EntityRelationship.PropertyTypeID"
        }
      },
      "required": [
        "referencedEntityType",
        "referencedPropertyType"
      ]
    },
    "@EntityRelationship.EntityId": {
      "title": "Entity ID",
      "type": "object",
      "description": "Defines an ID that can be used to look up the Entity Type or create a reference to it.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional name to describe the semantics of the ID."
        },
        "description": {
          "type": "string",
          "description": "Optional description to describe the semantics of the ID."
        },
        "propertyTypes": {
          "type": "array",
          "description": "List of [Property Type](#property-type) IDs.",
          "items": {
            "$ref": "#/definitions/@EntityRelationship.PropertyTypeID"
          }
        }
      },
      "required": [
        "propertyTypes"
      ]
    },
    "@EntityRelationship.CompositeReference": {
      "title": "Composite Reference",
      "type": "object",
      "description": "Defines single a reference to another Entity Type based on a composite ID.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional technical name (locally unique ID) of the reference.\n\nIf provided, the name MUST be unique across all reference names defined via\n`@EntityRelationship.reference`, `@EntityRelationship.compositeReferences`,\n`@EntityRelationship.temporalReferences`, and `@EntityRelationship.referencesWithConstantIds`\non the same CSN entity, and MUST NOT match the name of any element\n(property, `cds.Association`, or `cds.Composition`) of that entity."
        },
        "referencedEntityType": {
          "$ref": "#/definitions/@EntityRelationship.EntityTypeID"
        },
        "referencedPropertyTypes": {
          "type": "array",
          "description": "List of properties, the composite ID consists of.",
          "items": {
            "$ref": "#/definitions/@EntityRelationship.ReferenceTargetPropertyType"
          }
        }
      },
      "required": [
        "referencedEntityType",
        "referencedPropertyTypes"
      ]
    },
    "@EntityRelationship.ReferenceTargetPropertyType": {
      "title": "Referenced Property Type",
      "type": "object",
      "description": "Grouping of the ID in the referenced entity, by its property type ID and the local name in this entity.",
      "properties": {
        "referencedPropertyType": {
          "$ref": "#/definitions/@EntityRelationship.PropertyTypeID"
        },
        "localPropertyName": {
          "$ref": "#/definitions/@EntityRelationship.LocalPropertyName"
        }
      },
      "required": [
        "referencedPropertyType",
        "localPropertyName"
      ]
    },
    "@EntityRelationship.TemporalId": {
      "title": "Temporal ID",
      "type": "object",
      "description": "Defines an ID that includes a temporal interval.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional name to describe the semantics of the ID."
        },
        "description": {
          "type": "string",
          "description": "Optional description to describe the semantics of the ID."
        },
        "propertyTypes": {
          "type": "array",
          "description": "List of [Property Type](#property-type) IDs that are non-temporal.",
          "items": {
            "$ref": "#/definitions/@EntityRelationship.PropertyTypeID"
          }
        },
        "temporalIntervalType": {
          "$ref": "#/definitions/@EntityRelationship.TemporalIntervalType"
        },
        "temporalType": {
          "$ref": "#/definitions/@EntityRelationship.TemporalType"
        },
        "temporalIntervalStartProperty": {
          "$ref": "#/definitions/@EntityRelationship.LocalPropertyName"
        },
        "temporalIntervalEndProperty": {
          "$ref": "#/definitions/@EntityRelationship.LocalPropertyName"
        }
      },
      "required": [
        "propertyTypes",
        "temporalIntervalType",
        "temporalType",
        "temporalIntervalStartProperty",
        "temporalIntervalEndProperty"
      ]
    },
    "@EntityRelationship.TemporalReference": {
      "title": "Temporal Reference",
      "type": "object",
      "description": "Defines single temporal reference to another Entity Type.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional name to describe the semantics of the reference.\nIf provided, the name MUST be unique across all reference names defined via\n`@EntityRelationship.reference`, `@EntityRelationship.compositeReferences`,\n`@EntityRelationship.temporalReferences`, and `@EntityRelationship.referencesWithConstantIds`\non the same CSN entity, and MUST NOT match the name of any element\n(property, `cds.Association`, or `cds.Composition`) of that entity."
        },
        "referencedEntityType": {
          "$ref": "#/definitions/@EntityRelationship.EntityTypeID"
        },
        "referencedPropertyTypes": {
          "type": "array",
          "description": "List of non-temporal properties the composite temporal ID consists of.",
          "items": {
            "$ref": "#/definitions/@EntityRelationship.ReferenceTargetPropertyType"
          }
        },
        "category": {
          "$ref": "#/definitions/@EntityRelationship.Category"
        },
        "selectionDateProperty": {
          "$ref": "#/definitions/@EntityRelationship.LocalPropertyName"
        }
      },
      "required": [
        "referencedEntityType",
        "referencedPropertyTypes",
        "category"
      ]
    },
    "@EntityRelationship.ReferenceTargetWithConstantId": {
      "title": "Reference with Constant ID",
      "type": "object",
      "description": "Defines single a reference to another Entity Type based on a composite ID.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Optional name to describe the semantics of the reference.\nIf provided, the name MUST be unique across all reference names defined via\n`@EntityRelationship.reference`, `@EntityRelationship.compositeReferences`,\n`@EntityRelationship.temporalReferences`, and `@EntityRelationship.referencesWithConstantIds`\non the same CSN entity, and MUST NOT match the name of any element\n(property, `cds.Association`, or `cds.Composition`) of that entity."
        },
        "description": {
          "type": "string",
          "description": "Optional description to describe the semantics of the reference."
        },
        "referencedEntityType": {
          "$ref": "#/definitions/@EntityRelationship.EntityTypeID"
        },
        "referencedPropertyTypes": {
          "type": "array",
          "description": "List of properties, the composite ID consists of.",
          "items": {
            "$ref": "#/definitions/@EntityRelationship.ReferenceTargetPropertyTypeWithConstantId"
          }
        }
      },
      "required": [
        "referencedEntityType",
        "referencedPropertyTypes"
      ]
    },
    "@EntityRelationship.ReferenceTargetPropertyTypeWithConstantId": {
      "title": "Referenced Property Type with Constant ID",
      "type": "object",
      "description": "Grouping  of the ID in the referenced entity, by its property type ID and either the local name in this entity or a constant value.",
      "properties": {
        "referencedPropertyType": {
          "$ref": "#/definitions/@EntityRelationship.PropertyTypeID"
        },
        "localPropertyName": {
          "$ref": "#/definitions/@EntityRelationship.LocalPropertyName"
        },
        "constantValue": {
          "type": "string",
          "description": "String serialization of the constant value of the property in the referenced entity."
        }
      },
      "required": [
        "referencedPropertyType"
      ]
    },
    "@EntityRelationship.PropertyTypeID": {
      "title": "Property Type ID",
      "type": "string",
      "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+)(:v[1-9][0-9]*)?$",
      "description": "ID of the [Property Type](#property-type). The reason is to have an ID to relate to the property, especially to state that it can be used as an ID or is part of a composite ID.",
      "examples": [
        "sap.vdm.gfn:BillOfMaterialUUID"
      ]
    },
    "@EntityRelationship.EntityTypeID": {
      "title": "Entity Type ID",
      "type": "string",
      "description": "ID of the [Entity Type](#entity-type).",
      "pattern": "^([a-z0-9-]+(?:[.][a-z0-9-]+)*):([a-zA-Z0-9._\\-]+)(:v[1-9][0-9]*)?$",
      "examples": [
        "sap.vdm.sont:BillOfMaterial"
      ]
    },
    "@EntityRelationship.LocalPropertyName": {
      "title": "Local Property Name",
      "type": "string",
      "description": "Name of the property in the local Entity Type"
    },
    "@EntityRelationship.TemporalIntervalType": {
      "title": "Temporal Interval Type",
      "type": "object",
      "description": "Interval which includes the boundaries.",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "enum": [
            "CLOSED_CLOSED",
            "OPEN_OPEN",
            "OPEN_CLOSED",
            "CLOSED_OPEN"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "examples": [
        {
          "#": "CLOSED_CLOSED"
        }
      ]
    },
    "@EntityRelationship.TemporalType": {
      "title": "Temporal Type",
      "type": "object",
      "description": "Temporal type.",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "enum": [
            "DATE",
            "DATETIME"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "examples": [
        {
          "#": "DATE"
        }
      ]
    },
    "@EntityRelationship.Category": {
      "title": "Category",
      "type": "object",
      "description": "Category of the temporal reference.",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "enum": [
            "TEMPORAL_DATE"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "examples": [
        {
          "#": "TEMPORAL_DATE"
        }
      ]
    },
    "@ObjectModel.compositionRoot": {
      "type": "boolean",
      "default": true,
      "description": "Entity is the root of a compositional hierarchy.",
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@ObjectModel.representativeKey": {
      "x-extension-targets": [
        "Entity",
        "Service"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@ObjectModel.semanticKey": {
      "type": "array",
      "description": "The entity contains element(s) which shall be used to display the key in UIs (instead of the technical key).",
      "x-extension-targets": [
        "Entity"
      ],
      "items": {}
    },
    "@ObjectModel.custom": {
      "type": "boolean",
      "description": "Indicates whether the annotated element or entity is a custom element.\nIf set to true, it is a custom element (field, entity, service, etc.).\nIf undefined or set to false, it is not defined whether it is a custom element.\n\nIf applied to an entity or service, everything that it contains is also considered custom.",
      "x-extension-targets": [
        "Type",
        "Entity",
        "Service"
      ]
    },
    "@ObjectModel.modelingPattern": {
      "type": "object",
      "description": "The property declares the modeling pattern applied in this entity definition.",
      "x-extension-targets": [
        "Entity",
        "Service"
      ],
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "enum": [
            "DATA_STRUCTURE",
            "LANGUAGE_DEPENDENT_TEXT",
            "UNIT_CONVERSION_RATE",
            "VALUE_HELP_PROVIDER",
            "COLLECTIVE_VALUE_HELP",
            "DERIVATION_FUNCTION",
            "PARENT_CHILD_HIERARCHY_NODE_PROVIDER",
            "ENTERPRISE_SEARCH_PROVIDER",
            "TRANSACTIONAL_INTERFACE",
            "TRANSACTIONAL_QUERY",
            "ANALYTICAL_QUERY",
            "ANALYTICAL_DOCUMENT_STORE",
            "ANALYTICAL_CUBE",
            "ANALYTICAL_DIMENSION",
            "ANALYTICAL_FACT",
            "ANALYTICAL_PARENT_CHILD_HIERARCHY_NODE",
            "ANALYTICAL_KPI",
            "OUTPUT_FORM_DATA_PROVIDER",
            "OUTPUT_EMAIL_DATA_PROVIDER",
            "OUTPUT_PARAMETER_DETERMINATION_DATA_SOURCE",
            "SITUATION_ANCHOR",
            "SITUATION_TRIGGER",
            "SITUATION_DATACONTEXT",
            "EXTERNAL_DATA_PROVIDER",
            "NONE"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "examples": [
        {
          "#": "DATA_STRUCTURE"
        }
      ]
    },
    "@ObjectModel.supportedCapabilities": {
      "type": "array",
      "description": "The property declares the supported usage type for this entity in the context of consuming data models.",
      "x-extension-targets": [
        "Entity",
        "Service"
      ],
      "items": {
        "$ref": "#/definitions/@ObjectModel.SupportedCapabilities_EnumValue"
      }
    },
    "@ObjectModel.foreignKey.association": {
      "x-extension-targets": [
        "Type"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@ObjectModel.text.element": {
      "type": "array",
      "description": "The property contains element(s) containing a text for the annotated (id)element",
      "x-extension-targets": [
        "Type"
      ],
      "items": {},
      "examples": [
        [
          "BillingDocumentTypeName"
        ]
      ]
    },
    "@ObjectModel.text.association": {
      "x-extension-targets": [
        "Type"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@ObjectModel.tenantWideUniqueName": {
      "type": "string",
      "description": "Unique technical name of the entity within the tenant / isolation context it is deployed to.\nThis may be used as a hint for database table names and help to keep them short enough.\n\nOnce chosen the technical name ID MUST be kept stable (immutable).",
      "maxLength": 120,
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@ObjectModel.usageType.sizeCategory": {
      "type": "object",
      "description": "The size category enables the consumer to judge the possible result data set size.\nIt is a pure estimation at design time while modeling the entity what the data set size would be at runtime.\nIt reflects the set of data which has to be searched through to compute for example a count(*) of the data.\n\nThe labels correspond to the following size categories (expected number of rows at production customers):\n- S: less than 1000\n- M: less than 100.000\n- L: less than 10.000.000\n- XL: less than 100.000.000\n- XXL: more than 100.000.000",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "enum": [
            "S",
            "M",
            "L",
            "XL",
            "XXL"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "x-extension-targets": [
        "Entity"
      ],
      "examples": [
        {
          "#": "XL"
        }
      ]
    },
    "@ObjectModel.SupportedCapabilities_EnumValue": {
      "title": "Supported Capabilities Enum Value",
      "type": "object",
      "properties": {
        "#": {
          "type": "string",
          "description": "The entry declares one supported usage type.",
          "enum": [
            "SQL_DATA_SOURCE",
            "CDS_MODELING_DATA_SOURCE",
            "CDS_MODELING_ASSOCIATION_TARGET",
            "DATA_STRUCTURE",
            "LANGUAGE_DEPENDENT_TEXT",
            "UNIT_CONVERSION_RATE",
            "VALUE_HELP_PROVIDER",
            "COLLECTIVE_VALUE_HELP",
            "EXTRACTION_DATA_SOURCE",
            "DERIVATION_FUNCTION",
            "PARENT_CHILD_HIERARCHY_NODE_PROVIDER",
            "SEARCHABLE_ENTITY",
            "ENTERPRISE_SEARCH_PROVIDER",
            "TRANSACTIONAL_PROVIDER",
            "ANALYTICAL_QUERY",
            "ANALYTICAL_DOCUMENT_STORE",
            "ANALYTICAL_DIMENSION",
            "ANALYTICAL_PROVIDER",
            "ANALYTICAL_PARENT_CHILD_HIERARCHY_NODE",
            "ANALYTICAL_KPI",
            "OUTPUT_FORM_DATA_PROVIDER",
            "OUTPUT_EMAIL_DATA_PROVIDER",
            "OUTPUT_PARAMETER_DETERMINATION_DATA_SOURCE",
            "SITUATION_ANCHOR",
            "SITUATION_TRIGGER",
            "SITUATION_DATACONTEXT",
            "KEY_USER_COPYING_TEMPLATE",
            "EXTERNAL_DATA_PROVIDER",
            "ODM_COMPLIANT_PROVIDER",
            "UI_PROVIDER_PROJECTION_SOURCE"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ]
    },
    "@ODM.entityName": {
      "type": "string",
      "description": "The entity represents an ODM Entity with this official name.",
      "pattern": "^[a-zA-Z0-9._\\-]+$",
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@ODM.oid": {
      "x-extension-targets": [
        "Entity"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@ODM.oidReference.entityName": {
      "type": "string",
      "description": "The property contains an OID for the ODM Entity with this official name",
      "pattern": "^[a-zA-Z0-9._\\-]+$",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@PersonalData.entitySemantics": {
      "type": "object",
      "description": "Primary meaning of the entities in the annotated entity set. Entities annotated with @PersonalData.entitySemantics are synonymous to @PersonalData.isPotentiallyPersonal.",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "oneOf": [
            {
              "const": "DATA_SUBJECT",
              "description": "Describes a data subject, for example, a customer or vendor."
            },
            {
              "const": "DATA_SUBJECT_DETAILS",
              "description": "Describes entities that contain details for a data subject, for example an address."
            },
            {
              "const": "OTHER",
              "description": "Entities that contain personal data or references to data subjects but do not represent data subjects or details itself. For example: customer quote, customer order, or purchase order."
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "x-extension-targets": [
        "Entity"
      ],
      "examples": [
        {
          "#": "DATA_SUBJECT"
        }
      ]
    },
    "@PersonalData.dataSubjectRole": {
      "type": "string",
      "description": "Role of the data subjects in this set (e.g. employee, customer). Values are application-specific.",
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@PersonalData.dataSubjectRoleDescription": {
      "type": "string",
      "description": "Language-dependent description of the role of the data subjects in this set (e.g. employee, customer). Values are application-specific.",
      "x-extension-targets": [
        "Entity"
      ]
    },
    "@PersonalData.fieldSemantics": {
      "type": "object",
      "description": "Primary meaning of the personal data contained in the annotated property. Changes to values of annotated properties are tracked in the audit log. Use this annotation also on fields that are already marked as contact or address data. Properties annotated with fieldSemantics need not be additionally annotated with @PersonalData.isPotentiallyPersonal.",
      "properties": {
        "#": {
          "type": "string",
          "description": "Provide the value in `{ \"#\": \"<value>\" }` enum notation.",
          "oneOf": [
            {
              "const": "DATA_SUBJECT_ID",
              "description": "Identifies the data subject unique key or references it."
            },
            {
              "const": "DATA_SUBJECT_ID_TYPE",
              "description": "The type describing the DataSubjectID identifying the data subject, e.g., an e-mail address, semantic of the ID or a customer."
            },
            {
              "const": "CONSENT_ID",
              "description": "The unique identifier for a consent. A consent is an action of data subjects confirming that the usage of their personal data shall be allowed for a given purpose. A consent functionality allows the storage of a consent record in relation to a specific purpose and shows if a data subject has granted, withdrawn, or denied consent."
            },
            {
              "const": "PURPOSE_ID",
              "description": "The unique identifier for the purpose of processing of personal data. Any processing of personal data is based on specified, explicit, and legitimate purposes and not further processed in a manner that is incompatible with those purposes. The purpose is defined by the data controller or joint data controllers."
            },
            {
              "const": "CONTRACT_RELATED_ID",
              "description": "The unique identifier for transactional data that is related to a contract that requires processing of personal data. For example, Sales Contract ID, Purchase Contract ID, or Service Contract ID."
            },
            {
              "const": "DATA_CONTROLLER_ID",
              "description": "The unique identifier of a legal entity which alone or jointly with others determines the purposes and means of the processing of personal data. The Data Controller is fully responsible (and accountable) that data protection and privacy principles (such as purpose limitation or data minimization), defined in the European General Data Protection Regulation (GDPR) or any other data protection legislation, are adhered to when processing personal data. The DataControllerID succeeds the LegalEntityID."
            },
            {
              "const": "USER_ID",
              "description": "The unique identifier of a user. A user is an individual who interacts with the services supplied by a system."
            },
            {
              "const": "END_OF_BUSINESS_DATE",
              "description": "Defines the end of active business and the start of residence time and retention period. End of business is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After it has been reached and a customer-defined residence period has passed, the data is blocked and can only be accessed by users with special authorizations (for example, tax auditors). All fields of type Edm.Date or Edm.DateTimeOffset on which the end of business determination depends should be annotated."
            },
            {
              "const": "BLOCKING_DATE",
              "description": "Defines a date that marks when the provider of the data will block these. This is the point in time when the processing of a set of personal data is no longer required for the active business, for example, when a contract is fulfilled. After it has been reached, the data is blocked in the source and can only be displayed by users with special authorizations (for example, tax auditors); however, it is not allowed to create/change/copy/follow-up blocked data. Consumers of the data should consider if there is an additional purpose to process the data beyond the defined blocking date"
            },
            {
              "const": "END_OF_RETENTION_DATE",
              "description": "Defines a date that marks when the provider of the data can destroy these. Consumers of the data should consider if there is an additional purpose (or a legal hold) to process the data beyond the defined destruction date."
            }
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "#"
      ],
      "x-extension-targets": [
        "Type"
      ],
      "examples": [
        {
          "#": "DATA_SUBJECT_ID"
        }
      ]
    },
    "@PersonalData.isPotentiallyPersonal": {
      "type": "boolean",
      "description": "Property contains potentially personal data. Properties annotated with `@PersonalData.fieldSemantics` need not be additionally annotated with this annotation. Personal data describes any information which is related to an identified or identifiable natural person (data subject). An identifiable person is one who can be identified, directly or indirectly, in particular by a reference to an identifier such as a name, an identification number, location data, an online identifier, or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural, or social identity of that natural person.",
      "default": true,
      "x-extension-targets": [
        "Type"
      ]
    },
    "@PersonalData.isPotentiallySensitive": {
      "type": "boolean",
      "description": "Property contains potentially sensitive personal data. Sensitive personal data is a category of personal data that needs special handling. The determination which personal data is sensitive may differ for different legal areas or industries.\nExamples of sensitive personal data:\n-\tSpecial categories of personal data, such as data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, trade union membership, genetic data, biometric data, data concerning health or sex life or sexual orientation.\n-\tPersonal data subject to professional secrecy\n-\tPersonal data relating to criminal or administrative offenses\n-\tPersonal data concerning insurances and bank or credit card accounts",
      "default": true,
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.valueRange": {
      "type": "object",
      "description": "Informs consumers about the value range of a CDS element, allowing to specify minimal and/or maximal values, and indicate whether these are exclusive or inclusive.\nThis value range can be used for client-side validation of user input.",
      "properties": {
        "minimum": {
          "type": "string",
          "description": "Specifies the minimum value."
        },
        "exclusiveMinimum": {
          "type": "boolean",
          "description": "Specifies if the lower boundary should be excluded.\nNot specifying this annotation means that the lower boundary is included.",
          "default": false
        },
        "maximum": {
          "type": "string",
          "description": "Specifies the maximum value."
        },
        "exclusiveMaximum": {
          "type": "boolean",
          "description": "Specifies if the upper boundary should be excluded.\nNot specifying this annotation means that the upper boundary is included.",
          "default": false
        }
      },
      "x-extension-targets": [
        "IntegerType",
        "Int16Type",
        "Integer64Type",
        "UInt8Type",
        "DecimalType",
        "DoubleType"
      ]
    },
    "@Semantics.currencyCode": {
      "type": "boolean",
      "const": true,
      "description": "The property contains a currency code.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.amount.currencyCode": {
      "x-extension-targets": [
        "Type"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@Semantics.unitOfMeasure": {
      "type": "boolean",
      "const": true,
      "description": "The element contains a unit of measure.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.quantity.unitOfMeasure": {
      "x-extension-targets": [
        "Type"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@Semantics.calendar.dayOfMonth": {
      "type": "boolean",
      "const": true,
      "description": "The element states the day of month.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.dayOfYear": {
      "type": "boolean",
      "const": true,
      "description": "The element states the day of year.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.week": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar week.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.month": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar month.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.quarter": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar quarter.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.halfyear": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar halfyear.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.year": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar year.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.yearWeek": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar year week.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.yearMonth": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar year month.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.yearQuarter": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar year quarter.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.calendar.yearHalfyear": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar year halfyear.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.yearVariant": {
      "type": "boolean",
      "const": true,
      "description": "The element states the calendar year variant.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.period": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal period.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.year": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal year.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.yearPeriod": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal year period.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.quarter": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal quarter.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.yearQuarter": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal year quarter.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.week": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal week.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.yearWeek": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal year week.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.fiscal.dayOfYear": {
      "type": "boolean",
      "const": true,
      "description": "The element states the fiscal day of year.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.language": {
      "type": "boolean",
      "const": true,
      "description": "The property contains a language code.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.time": {
      "type": "boolean",
      "const": true,
      "description": "This annotation is used to indicate a date semantic for the NVARCHAR-based ABAP type TIMS.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.text": {
      "type": "boolean",
      "const": true,
      "description": "The property contains a human-readable text.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.uuid": {
      "type": "boolean",
      "const": true,
      "description": "Tags a field containing a GUID in RAW16 or CHAR32 format.\n\nIt is RECOMMENDED to explicitly use the `csd.UUID` type.",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.businessDate.from": {
      "type": "boolean",
      "const": true,
      "description": "The property contains a date which is the lower boundary of a (validity) interval (for time dependent master data).",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.businessDate.to": {
      "type": "boolean",
      "const": true,
      "description": "The property contains a date which is the upper boundary of a (validity) interval (for time dependent master data).",
      "x-extension-targets": [
        "Type"
      ]
    },
    "@Semantics.mimeType": {
      "type": "boolean",
      "const": true,
      "description": "The property value is a MIME Type / Media Type, following [RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838).",
      "x-extension-targets": [
        "StringType"
      ]
    },
    "@Semantics.largeObject.acceptableMimeTypes": {
      "description": "The property value contains a document / file that uses one of the stated MIME Types / Media Types ([RFC 6838](https://datatracker.ietf.org/doc/html/rfc6838)).\nThis annotation can be used if the Media Type is already known at design time and can be described in the metadata model itself.\nIf the Media Type is only known at runtime, the \"@Semantics.largeObject.mimeType\" annotation has to be used instead.",
      "type": "array",
      "items": {
        "type": "string"
      },
      "x-extension-targets": [
        "LargeStringType",
        "LargeBinaryType"
      ]
    },
    "@Semantics.largeObject.mimeType": {
      "x-extension-targets": [
        "LargeStringType",
        "LargeBinaryType"
      ],
      "$ref": "#/definitions/ElementReference"
    },
    "@Semantics.largeObject.fileName": {
      "x-extension-targets": [
        "LargeStringType",
        "LargeBinaryType"
      ],
      "$ref": "#/definitions/ElementReference"
    }
  }
}