{
  "$id": "https://schemas.opendd.eu/xtdobject.1.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "xtd Object Schema",
  "description": "xtdObject is a specialization of xtdRoot that is the abstract entity from which xtdChangeRequest, xtdConcept, XtdOrderedValue, xtdRelationshipToSubject and xtdValue are derived. xtdObject is used to store the common attributes of its derived entities, needed to handle the names, versioning, history, status and data dictionary it belongs to.; According to SS-EN ISO 12006-3:2022; Abstract object.",
  "type": "object",
  "properties": {
    "Dictionary": {
      "description": "Data dictionary to which the object belongs to.",
      "oneOf": [
        {
          "$ref": "/xtddictionary.1.schema.json"
        },
        {
          "$ref": "/opendd-entityref.1.schema.json"
        }
      ]
    },
    "Names": {
      "type": "array",
      "description": "Set of names of the object in different languages. Each object may have multiple names, and this allows for its expression in terms of synonyms. At least a name shall be provided in international English and in the original language of its creator.",
      "minItems": 1,
      "items": {
        "oneOf": [
          {
            "$ref": "/xtdmultilanguagetext.1.schema.json"
          },
          {
            "$ref": "/opendd-entityref.1.schema.json"
          }
        ]
      }
    },
    "DateOfCreation": {
      "description": "Date of creation of the concept.",
      "$ref": "/xtddatetime.1.schema.json"
    },
    "MajorVersion": {
      "type": "integer",
      "minimum": 0,
      "description": "Allows tracking of major changes. Experts decide if a new major version number shall be applied."
    },
    "MinorVersion": {
      "type": "integer",
      "minimum": 0,
      "description": "Allows tracking of minor changes, e.g. new translation, changes of typos: if the major version number changes, the minor version starts again at 1. Experts decide if a new minor version number can be applied or if a new major version is needed."
    },
    "ReplacedObjects": {
      "type": "array",
      "description": "List of objects replaced by the current object",
      "items": {
        "oneOf": [
          {
            "$ref": "/xtdobject.1.schema.json"
          },
          {
            "$ref": "/opendd-entityref.1.schema.json"
          }
        ]
      }
    },
    "DeprecationExplanation": {
      "description": "Sentence explaining the reason of the deprecation, which can explain how to convert values to conform to the new object.",
      "oneOf": [
        {
          "$ref": "/xtdmultilanguagetext.1.schema.json"
        },
        {
          "$ref": "/opendd-entityref.1.schema.json"
        }
      ]
    },
    "Status": {
      "type": "string",
      "description": "Status of the object during its life cycle. See xtdStatusOfActivationEnum",
      "enum": [
        "XTD_ACTIVE",
        "XTD_INACTIVE"
      ]
    }
  },
  "required": [
    "Dictionary",
    "Names",
    "DateOfCreation",
    "MajorVersion",
    "MinorVersion",
    "Status"
  ],
  "$defs": {}
}
